|
- // Partly taken from Tera
- WHITESPACE = _{ " " | "\t" | "\r" | "\n" }
-
- /// LITERALS
- int = @{ "-" ? ~ ("0" | '1'..'9' ~ '0'..'9' * ) }
- float = @{
- "-" ? ~
- (
- "0" ~ "." ~ '0'..'9' + |
- '1'..'9' ~ '0'..'9' * ~ "." ~ '0'..'9' +
- )
- }
- // matches anything between 2 double quotes
- double_quoted_string = @{ "\"" ~ (!("\"") ~ ANY)* ~ "\""}
- // matches anything between 2 single quotes
- single_quoted_string = @{ "\'" ~ (!("\'") ~ ANY)* ~ "\'"}
- // matches anything between 2 backquotes\backticks
- backquoted_quoted_string = @{ "`" ~ (!("`") ~ ANY)* ~ "`"}
-
- string = @{
- double_quoted_string |
- single_quoted_string |
- backquoted_quoted_string
- }
-
- boolean = { "true" | "false" }
-
- literal = { boolean | string | float | int }
- array = { "[" ~ (literal ~ ",")* ~ literal? ~ "]"}
-
- /// Idents
-
- all_chars = _{'a'..'z' | 'A'..'Z' | "_" | '0'..'9'}
- ident = @{
- ('a'..'z' | 'A'..'Z' | "_") ~
- all_chars*
- }
-
- /// Now specific to Zola
-
- // shortcode is abbreviated to sc to keep things short
-
- kwarg = { ident ~ "=" ~ (literal | array) }
- kwargs = _{ kwarg ~ ("," ~ kwarg )* }
- sc_def = _{ ident ~ "(" ~ kwargs* ~ ")" }
-
- inline_shortcode = !{ "{{" ~ sc_def ~ "}}" }
- ignored_inline_shortcode = !{ "{{/*" ~ sc_def ~ "*/}}" }
-
- sc_body_start = !{ "{%" ~ sc_def ~ "%}" }
- sc_body_end = !{ "{%" ~ "end" ~ "%}" }
- ignored_sc_body_start = !{ "{%/*" ~ sc_def ~ "*/%}" }
- ignored_sc_body_end = !{ "{%/*" ~ "end" ~ "*/%}" }
-
- shortcode_with_body = !{ sc_body_start ~ text_in_body_sc ~ sc_body_end }
- ignored_shortcode_with_body = { ignored_sc_body_start ~ text_in_ignored_body_sc ~ ignored_sc_body_end }
-
- text_in_body_sc = ${ (!(sc_body_end) ~ ANY)+ }
- text_in_ignored_body_sc = ${ (!(ignored_sc_body_end) ~ ANY)+ }
- text = ${ (!(inline_shortcode | ignored_inline_shortcode | shortcode_with_body | ignored_shortcode_with_body) ~ ANY)+ }
-
- content = _{
- ignored_inline_shortcode |
- inline_shortcode |
- ignored_shortcode_with_body |
- shortcode_with_body |
- text
- }
-
-
- page = ${ SOI ~ content* ~ EOI }
|