Resource description format
Application resources (themes, views, translations) can be described as text (utf-8).This text is placed in a file with the ".rui" extension.
The root element of the resource file must be an object. It has the following format:
< object name > {
< object data >
}
if the object name contains the following characters: '=', '{', '}', '[', ']', ',', '', '\t', '\n','\' ',' "','` ',' / 'and any spaces, then the object name must be enclosed in quotation marks.If these characters are not used, then quotation marks are optional.
You can use three types of quotation marks:
- "…" is equivalent to the same string in the go language, i.e. inside you can use escape sequences:\n, \r, \\, \", \', \0, \t, \x00, \u0000
- '…' is similar to the line "…"
- `…` is equivalent to the same string in the go language, i.e. the text within this line remains as is. Insideyou cannot use the ` character.
Object data is a set of < key > = < value > pairs separated by commas.
The key is a string of text. The design rules are the same as for the object name.
Values can be of 3 types:
- Simple value - a line of text formatted according to the same rules as the name of the object
- An object
- Array of values
An array of values is enclosed in square brackets. Array elements are separated by commas.Elements can be simple values or objects.
There may be comments in the text. The design rules are the same as in the go language: // and / * ... * /
Example:
GridLayout {
id = gridLayout, width = 100%, height = 100%,
cell-width = "150px, 1fr, 30%", cell-height = "25%, 200px, 1fr",
content = [
// Subviews
TextView { row = 0, column = 0:1,
text = "View 1", text-align = center, vertical-align = center,
background-color = #DDFF0000, radius = 8px, padding = 32px,
border = _{ style = solid, width = 1px, color = #FFA0A0A0 }
},
TextView { row = 0:1, column = 2,
text = "View 2", text-align = center, vertical-align = center,
background-color = #DD00FF00, radius = 8px, padding = 32px,
border = _{ style = solid, width = 1px, color = #FFA0A0A0 }
},
TextView { row = 1:2, column = 0,
text = "View 3", text-align = center, vertical-align = center,
background-color = #DD0000FF, radius = 8px, padding = 32px,
border = _{ style = solid, width = 1px, color = #FFA0A0A0 }
},
TextView { row = 1, column = 1,
text = "View 4", text-align = center, vertical-align = center,
background-color = #DDFF00FF, radius = 8px, padding = 32px,
border = _{ style = solid, width = 1px, color = #FFA0A0A0 }
},
TextView { row = 2, column = 1:2,
text = "View 5", text-align = center, vertical-align = center,
background-color = #DD00FFFF, radius = 8px, padding = 32px,
border = _{ style = solid, width = 1px, color = #FFA0A0A0 }
},
]
}
To work with text resources, the DataNode interface is used
type DataNode interface {
Tag() string
Type() int
Text() string
Object() DataObject
ArraySize() int
ArrayElement(index int) DataValue
ArrayElements() []DataValue
}
This element describes the underlying data element.
The Tag method returns the value of the key.
The data type is returned by the Type method. It returns one of 3 values
| Value | Constant | Data type |
|---|---|---|
| 0 | TextNode | Simple value |
| 1 | ObjectNode | Object |
| 2 | ArrayNode | Array |
The Text() method is used to get a simple value.To get an object, use the Object() method.To get the elements of an array, use the ArraySize, ArrayElement and ArrayElements methods