lib/sfp/parser.rb in sfp-0.4.2 vs lib/sfp/parser.rb in sfp-0.4.4

- old
+ new

@@ -2,10 +2,12 @@ # in file or as a string class Sfp::Parser # enable this class to process SFP into FDR (SAS+) include Sfp::SasTranslator + AbstractEliminator = Sfp::Visitor::AbstractEliminator.new + attr_accessor :root_dir, :home_dir, :conformant attr_reader :root, :constraint_next_id def initialize(params={}) @root_dir = (params[:root_dir].is_a?(String) ? @@ -17,34 +19,41 @@ @root = params[:root] @conformant = !!params[:conformant] @constraint_next_id = (params[:constraint_next_id] ? params[:constraint_next_id] : 0) end - # @param string : a string in SFP language + ##### + # + # @param [String] : a string of specification in SFP language + # @options [Hash] + # + # @return [Hash] : the result Hash + # + ##### def parse(string, options={}) lexer = SfpLang::Lexer.new(string) tokens = ANTLR3::CommonTokenStream.new(lexer) parser = SfpLang::Parser.new(tokens) parser.root_dir = @root_dir parser.home_dir = @home_dir parser.constraint_next_id = @constraint_next_id parser.sfp @constraint_next_id = parser.constraint_next_id @root = parser.root + parser.root.accept(AbstractEliminator) if not options[:keep_abstract] @conformant = parser.conformant @parser_arrays = parser.arrays + parser.root end def to_json(params={}) return 'null' if @root.nil? return Sfp::Helper.to_pretty_json(@root) if params[:pretty] return Sfp::Helper.to_json(@root) end def self.parse_file(filepath, options={}) - #homedir = File.expand_path(File.dirname(filepath)) options[:home_dir] = File.expand_path(File.dirname(filepath)) if !options[:home_dir] - parser = Sfp::Parser.new(options) #{:home_dir => homedir}) + parser = Sfp::Parser.new(options) parser.parse(File.read(filepath)) - parser.root end end