|
|
|
@ -10,53 +10,61 @@ moon file is syntactically valid.
|
|
|
|
|
|
|
|
|
|
The following is taken to be the contents of a file named ex.moon:
|
|
|
|
|
|
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
|
# example config format
|
|
|
|
|
#
|
|
|
|
|
# this is a working draft of things that are valid in a new config language to
|
|
|
|
|
# replace json as a config language for Go projects.
|
|
|
|
|
#
|
|
|
|
|
# comments are a thing now!
|
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
# the whole document is implicitly a namespace, so you can set key value pairs
|
|
|
|
|
# at the top level.
|
|
|
|
|
first_name: "jordan"
|
|
|
|
|
last_name: "orelli"
|
|
|
|
|
first_name: jordan
|
|
|
|
|
last_name: orelli
|
|
|
|
|
|
|
|
|
|
# lists of things should be supported
|
|
|
|
|
items: [
|
|
|
|
|
"one"
|
|
|
|
|
one
|
|
|
|
|
2
|
|
|
|
|
3.4
|
|
|
|
|
["five" 6 7.8]
|
|
|
|
|
[five; 6 7.8]
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
# objects should be supported
|
|
|
|
|
hash: {key: "value" other_key: "other_value"}
|
|
|
|
|
hash: {key: value; other_key: other_value}
|
|
|
|
|
|
|
|
|
|
other_hash: {
|
|
|
|
|
key_1: "one"
|
|
|
|
|
key_1: one
|
|
|
|
|
key_2: 2
|
|
|
|
|
key_3: 3.4
|
|
|
|
|
key_4: ["five" 6 7.8]
|
|
|
|
|
key_4: [five; 6 7.8]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# we may reference an item that was defined earlier
|
|
|
|
|
repeat_hash: hash
|
|
|
|
|
# we may reference an item that was defined earlier using a sigil
|
|
|
|
|
repeat_hash: @hash
|
|
|
|
|
|
|
|
|
|
# items can be hidden. i.e., they're only valid in the parse and eval stage as
|
|
|
|
|
# intermediate values internal to the config file; they are *not* visible to
|
|
|
|
|
# the host program. This is generally useful for composing larger, more
|
|
|
|
|
# complicated things.
|
|
|
|
|
.hidden_item: "it has a value"
|
|
|
|
|
|
|
|
|
|
visible_item: .hidden_item
|
|
|
|
|
@hidden_item: it has a value
|
|
|
|
|
visible_item: @hidden_item
|
|
|
|
|
|
|
|
|
|
.person_one: {
|
|
|
|
|
name: "the first name here"
|
|
|
|
|
@person_one: {
|
|
|
|
|
name: the first name here
|
|
|
|
|
age: 28
|
|
|
|
|
hometown: "crooklyn"
|
|
|
|
|
hometown: crooklyn
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.person_two: {
|
|
|
|
|
name: "the second name here"
|
|
|
|
|
@person_two: {
|
|
|
|
|
name: the second name here
|
|
|
|
|
age: 30
|
|
|
|
|
hometown: "tha bronx"
|
|
|
|
|
hometown: tha bronx
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
people: [.person_one .person_two]
|
|
|
|
|
people: [@person_one @person_two]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Subcommands
|
|
|
|
|