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