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