Sha256: 7c147c4e775a9bdb7a76b19e47c6aa6a1f98a63182d8e2168d996189c89e18d3

Contents?: true

Size: 1.59 KB

Versions: 18

Compression:

Stored size: 1.59 KB

Contents

# main class which processes configuration description in SFP language either
# in file or as a string
class Sfp::Parser
	# enable this class to process SFP into FDR (SAS+)
	include Sfp::SasTranslator

	attr_accessor :root_dir, :home_dir, :conformant
	attr_reader :root, :constraint_next_id

	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

	# @param string : a string in SFP language
	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
		@conformant = parser.conformant
		@parser_arrays = parser.arrays
	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.parse(File.read(filepath))
		parser.root
	end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
sfp-0.4.2 lib/sfp/parser.rb
sfp-0.4.1 lib/sfp/parser.rb
sfp-0.3.22 lib/sfp/parser.rb
sfp-0.3.21 lib/sfp/parser.rb
sfp-0.3.19 lib/sfp/parser.rb
sfp-0.3.18 lib/sfp/parser.rb
sfp-0.3.17 lib/sfp/parser.rb
sfp-0.3.16 lib/sfp/parser.rb
sfp-0.3.15 lib/sfp/parser.rb
sfp-0.3.14 lib/sfp/parser.rb
sfp-0.3.13 lib/sfp/parser.rb
sfp-0.3.12 lib/sfp/parser.rb
sfp-0.3.11 lib/sfp/parser.rb
sfp-0.3.10 lib/sfp/parser.rb
sfp-0.3.9 lib/sfp/parser.rb
sfp-0.3.8 lib/sfp/parser.rb
sfp-0.3.7 lib/sfp/parser.rb
sfp-0.3.6 lib/sfp/parser.rb