lib/sexpr/parser/citrus.rb in sexpr-0.3.0 vs lib/sexpr/parser/citrus.rb in sexpr-0.4.0
- old
+ new
@@ -19,21 +19,15 @@
defined?(::Citrus::Grammar) && arg.is_a?(Module) && arg.include?(::Citrus::Grammar)
end
end # class << self
- attr_reader :options
-
- def initialize(parser, options = {})
- @parser = parser
- @options = default_options.merge(options)
+ def initialize(parser)
+ require_relative 'ext'
+ @parser = parser
end
- def default_options
- {:from_match_to_sexpr => lambda{|match| match.value}}
- end
-
def parser
@citrus_parser ||= begin
if self.class.looks_a_citrus_grammar?(@parser)
@parser
elsif self.class.looks_a_citrus_file?(@parser)
@@ -45,21 +39,16 @@
end
end
end
def parse(input, options = {})
+ return input if input.is_a?(::Citrus::Match)
input = input_text(input)
parser.parse(input, options)
end
- def sexpr(input, parse_options = {})
- from_match_to_sexpr parse(input, parse_options)
- end
-
- private
-
- def from_match_to_sexpr(match)
- options[:from_match_to_sexpr].call(match)
+ def to_sexpr(parsed)
+ parsed.sexpr
end
Sexpr::Parser.register self
end # class Citrus
end # module Parser
\ No newline at end of file