Class: Libis::Tools::Metadata::BasicParser

Inherits:
Parslet::Parser
  • Object
show all
Defined in:
lib/libis/tools/metadata/parser/basic_parser.rb

Overview

New style parsers and converters for metadata. New, not finished and untested.

Instance Method Summary collapse

Instance Method Details

#any_quoted(key = :text) ⇒ Object



102
103
104
105
106
107
108
# File 'lib/libis/tools/metadata/parser/basic_parser.rb', line 102

def any_quoted(key = :text)
  scope {
    quote.capture(:quote) >>
        dynamic { |_, c| (str(c.captures[:quote]).absent? >> any).repeat(1) }.maybe.as(key) >>
        dynamic { |_, c| str(c.captures[:quote]) }
  }
end

#complement(char) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/libis/tools/metadata/parser/basic_parser.rb', line 73

def complement(char)
  case char
    when '('
      ')'
    when '{'
      '}'
    when '['
      ']'
    else
      char
  end
end

#grouped(foo, left_paren = lparen) ⇒ Object



86
87
88
89
90
91
92
# File 'lib/libis/tools/metadata/parser/basic_parser.rb', line 86

def grouped(foo, left_paren = lparen)
  scope {
    left_paren.capture(:paren).as(:lparen) >>
        foo >>
        dynamic { |_, c| str(complement(c.captures[:paren])) }.as(:rparen)
  }
end

#grouped_anonymous(foo, left_paren = lparen) ⇒ Object



94
95
96
97
98
99
100
# File 'lib/libis/tools/metadata/parser/basic_parser.rb', line 94

def grouped_anonymous(foo, left_paren = lparen)
  scope {
    left_paren.capture(:paren) >>
        foo >>
        dynamic { |_, c| str(complement(c.captures[:paren])) }
  }
end

#transformerObject



110
111
112
# File 'lib/libis/tools/metadata/parser/basic_parser.rb', line 110

def transformer
  self.class::Transformer.new rescue nil
end