class Sfp::Parser
main class which processes configuration description in SFP language either in file or as a string
Constants
- AbstractEliminator
Attributes
conformant[RW]
constraint_next_id[R]
home_dir[RW]
root[R]
root_dir[RW]
Public Class Methods
new(params={})
click to toggle source
# File lib/sfp/parser.rb, line 12 def initialize(params={}) @root_dir = (params[:root_dir].is_a?(String) ? params[:root_dir].strip : nil) @home_dir = (params[:home_dir].is_a?(String) ? params[:home_dir].strip : nil) @root = params[:root] @conformant = !!params[:conformant] @constraint_next_id = (params[:constraint_next_id] ? params[:constraint_next_id] : 0) end
parse_file(filepath, options={})
click to toggle source
# File lib/sfp/parser.rb, line 54 def self.parse_file(filepath, options={}) options[:home_dir] = File.expand_path(File.dirname(filepath)) if !options[:home_dir] parser = Sfp::Parser.new(options) parser.parse(File.read(filepath)) end
Public Instance Methods
parse(string, options={})
click to toggle source
@param [String] : a string of specification in SFP language @options [Hash]
@return [Hash] : the result Hash
# File lib/sfp/parser.rb, line 32 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
to_json(params={})
click to toggle source
# File lib/sfp/parser.rb, line 48 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