Add HLDS documentation
This commit is contained in:
parent
e54a89e12c
commit
841f98bd51
1 changed files with 99 additions and 0 deletions
99
data/README.md
Normal file
99
data/README.md
Normal file
|
@ -0,0 +1,99 @@
|
|||
# HLDS data format
|
||||
|
||||
HLDS is the Haldis Language for Describing Servings. It defines the menu you see when ordering in
|
||||
Haldis.
|
||||
|
||||
There is syntax highlighting support for editors in `etc/` in the Haldis repository.
|
||||
|
||||
## Indentation
|
||||
Indentation requires hard **tabs**. Spaces will not work.
|
||||
|
||||
## Identifiers
|
||||
You must choose an identifier for each location, dish, choice and option. Identifiers may consist
|
||||
of numbers, hyphens, underscores and lowercase letters.
|
||||
|
||||
* Good: `my_identifier-007`
|
||||
* Bad: ~~`My Identifié 007`~~
|
||||
|
||||
## Locations
|
||||
|
||||
A HLDS file consists of one or more locations. Each location starts with a header, which enclosed
|
||||
in "fences" of at least three equal signs. The first line of the header contains the ID and name of
|
||||
the location. Further lines contain the metadata of the location, such as the phone number and
|
||||
OpenStreetMap element. In the future, the phone number and such will be fetched from OpenStreetMap.
|
||||
|
||||
```hlds
|
||||
==========================
|
||||
ocean_garden: Ocean Garden
|
||||
osm https://www.openstreetmap.org/node/2275105003
|
||||
phone +32 9 222 72 74
|
||||
address Zwijnaardsesteenweg 399, 9000 Gent
|
||||
website http://oceangarden.byethost3.com/
|
||||
# Comments are allowed too!
|
||||
==========================
|
||||
```
|
||||
|
||||
## Dishes
|
||||
|
||||
A location consists of dishes. Spaces can be used to align the elements of your dish (but that's
|
||||
not required).
|
||||
|
||||
```hlds
|
||||
dish cheeseburger: Cheeseburger € 2.9
|
||||
dish assortment: Twijfelaar € 3
|
||||
```
|
||||
|
||||
## Inline choices
|
||||
Dishes can contain choices. There are two types:
|
||||
* `single_choice` is a required choice where the user must choose one option.
|
||||
* `multi_choice` is an optional choice where the user can choose zero or more options.
|
||||
|
||||
```hlds
|
||||
dish fries: Frietjes
|
||||
single_choice size: Formaat
|
||||
extra_small: Extra small € 1.8
|
||||
small: Small € 2
|
||||
medium: Medium € 2.5
|
||||
large: Large € 3.3
|
||||
multi_choice sauce: Saus
|
||||
ketchup: Ketchup € 1.4
|
||||
mayo: Mayonaise € 1.4
|
||||
bicky: Bickysaus € 1.4
|
||||
stew: Stoofvleessaus € 1.9
|
||||
```
|
||||
|
||||
## Common choices
|
||||
Choices that are used more than once, can be declared once and referenced in multiple dishes.
|
||||
|
||||
```hlds
|
||||
bami_nasi: Bami of nasi
|
||||
bami: Bami
|
||||
nasi: Nasi
|
||||
|
||||
dish wok3: Studentenwok 3 kip bami/nasi zonder saus € 6
|
||||
single_choice bami_nasi
|
||||
|
||||
dish wok5: Studentenwok 5 babi pangang € 6
|
||||
single_choice bami_nasi
|
||||
```
|
||||
|
||||
## Descriptions
|
||||
You can add descriptions to dishes, choices and options. Separate name and description with ` -- `.
|
||||
|
||||
```hlds
|
||||
dish dishid: Name -- This is a description € 3
|
||||
```
|
||||
|
||||
## Tags
|
||||
|
||||
**Note:** HLDS tags are not supported in Haldis yet. You can ignore them.
|
||||
|
||||
You can add tags after ` :: `. Tags are `{identifier}`. You can use tags to attach more information
|
||||
about a dish or option in a structured way. For example: `{has_meat}` signals to vegetarians that
|
||||
they should avoid this.
|
||||
|
||||
The order is always id, name, description, tags, price (not all have to be present of course).
|
||||
|
||||
```hlds
|
||||
dish dishid: Name -- This is a description :: {has_meat} € 3
|
||||
```
|
Loading…
Reference in a new issue