The .wL format (or wL, wilhelm43 list of properties) is a simplistic, linear, and multi-language arbitrary data format, dedicated to external file use from any programming language (including Scratch).
The wL format is a markup language, meaning a language that uses "tags" as its main content. wL uses two types of tags, namely list tags (or "branches") and content tags (or "leaves").
A list tag contains other tags (they can be empty), regardless of their type, while a content tag contains only one piece of data. The whole can be symbolized as a data tree, with branches being the list tags, and leaves being the content tags. The trunk is the file itself, so accessing data requires traversing the trunk and branches until reaching the right leaf.
The wL format thus resembles other markup formats, however, it has its own peculiarities. All list tags are closed by the same instruction, and content tags are unique, with the data stored in the tag along with the corresponding key.
Example of a list tag
<cities>
# content
<!>
Example of a content tag
<population=200>
Example of a short wL file
<cities>
<Toulouse>
<population = 505000>
<coordinates>
<longitude = "43°36'16''n">
<latitude = "1°26'36''e">
<!>
<!>
<Paris>
<population = 2135000>
<coordinates>
<longitude = "48°51'24''n">
<latitude = "2°21'07''e">
<!>
<!>
<!>
<aside> <img src="/icons/light-bulb_yellow.svg" alt="/icons/light-bulb_yellow.svg" width="40px" />
Indentations and spaces will be ignored during reading (including in values), so they can be used to make the file more readable for humans.
</aside>
<aside> <img src="/icons/light-bulb_yellow.svg" alt="/icons/light-bulb_yellow.svg" width="40px" />
The format has no depth limit or other restrictions.
</aside>
Reader | Scratch [00110] | Python [00113] |
---|---|---|
Open wL | Yes | Yes |
Export to wL | Yes | Yes |
Export to XML | No | Yes |
Supported wL version | v1.1 | v1.1 |
<aside> <img src="/icons/light-bulb_yellow.svg" alt="/icons/light-bulb_yellow.svg" width="40px" />
Opening performances run with a 160 bytes file, this way, 1 operation uses 160 bytes, 1,000 use 16 kbytes and 100,000, 16 Mbytes.
</aside>