lib/toml-rb/grammars/document.citrus
grammar TomlRB::Document
include TomlRB::Primitive
include TomlRB::Arrays
rule document
(comment | table_array | table | keyvalue | line_break)*
end
rule table_array
(space? '[[' stripped_key ']]' comment?) <TomlRB::TableArrayParser>
end
rule table
(space? '[' stripped_key ']' comment?) <TomlRB::TableParser>
end
rule keyvalue
(stripped_key '=' space? v:(toml_values) comment? space) <TomlRB::KeyvalueParser>
end
rule inline_table
(space? '{' (keyvalue? (',' keyvalue)*)? space? '}' ) <TomlRB::InlineTableParser>
end
rule inline_table_array
(inline_table (space "," array_comments inline_table)*) {
captures[:inline_table].map(&:value).map(&:value)
}
end
rule array
("[" array_comments (array_elements)? space ","? array_comments "]" indent?) <TomlRB::ArrayParser>
end
rule array_elements
inline_table_array | float_array | string_array | array_array | integer_array | datetime_array | bool_array
end
rule array_array
(array (space "," array_comments array)*) {
captures[:array].map(&:value)
}
end
rule toml_values
primitive | inline_table | array | inline_table_array
end
rule stripped_key
(space? key space?) { captures[:key].first.value }
end
end