Sha256: 189f98606f1cdc1ccf7b765f96a332988aa8739d6ab6f60edabf3446c79ce949
Contents?: true
Size: 1.26 KB
Versions: 6
Compression:
Stored size: 1.26 KB
Contents
class Code class Parser class Dictionnary < Parslet::Parser rule(:list) { ::Code::Parser::List.new } rule(:code) { ::Code::Parser::Code.new.present } rule(:string) { ::Code::Parser::String.new } rule(:opening_curly_bracket) { str("{") } rule(:closing_curly_bracket) { str("}") } rule(:colon) { str(":") } rule(:equal) { str("=") } rule(:right_caret) { str(">") } rule(:comma) { str(",") } rule(:space) { str(" ") } rule(:newline) { str("\n") } rule(:whitespace) { (space | newline).repeat(1) } rule(:whitespace?) { whitespace.maybe } rule(:key_value) do (string.as(:key) >> colon >> whitespace? >> code.as(:value)) | ( code.as(:key) >> whitespace? >> equal >> right_caret >> whitespace? >> code.as(:value) ) end rule(:dictionnary) do ( opening_curly_bracket.ignore >> whitespace?.ignore >> key_value.repeat(0, 1) >> (whitespace? >> comma >> whitespace? >> key_value).repeat >> whitespace?.ignore >> comma.maybe.ignore >> whitespace?.ignore >> closing_curly_bracket.ignore ).as(:dictionnary) | list end root(:dictionnary) end end end
Version data entries
6 entries across 6 versions & 2 rubygems