class DTK::DSL::FileParser
Constants
- DSL_VERSION_KEY
Public Class Methods
file_ref_in_error(file_obj)
click to toggle source
# File lib/dsl/file_parser.rb, line 52 def self.file_ref_in_error(file_obj) (file_obj && file_obj.path?) ? " in file #{file_obj.path?}" : '' end
parse_content(parse_template_type, file_obj, opts = {})
click to toggle source
opts can have keys:
:dsl_version
# File lib/dsl/file_parser.rb, line 28 def self.parse_content(parse_template_type, file_obj, opts = {}) ret = Output.create(:output_type => :hash) return ret unless file_obj.content? input_hash = yaml_parse!(file_obj) dsl_version = opts[:dsl_version] || dsl_version__raise_error_if_illegal(input_hash, file_obj) # parsing with respect to the parse_template_type template_class = Template.template_class(parse_template_type, dsl_version) template_class.create_for_parsing(input_hash, :file_obj => file_obj).parse end
yaml_parse!(file_obj)
click to toggle source
# File lib/dsl/file_parser.rb, line 40 def self.yaml_parse!(file_obj) if file_obj.respond_to?(:yaml_parse_hash) if ret = file_obj.yaml_parse_hash ret else file_obj.yaml_parse_hash = YamlHelper.parse(file_obj) end else YamlHelper.parse(file_obj) end end
Private Class Methods
dsl_version__raise_error_if_illegal(input_hash, file_obj)
click to toggle source
# File lib/dsl/file_parser.rb, line 59 def self.dsl_version__raise_error_if_illegal(input_hash, file_obj) raise Error::Usage, "Ill-formed DSL#{file_ref_in_error(file_obj)}" unless input_hash.kind_of?(::Hash) if dsl_version = input_hash[DSL_VERSION_KEY] unless DSLVersion.legal?(dsl_version) raise Error::Usage, "Illegal DSL version '#{dsl_version}'#{file_ref_in_error(file_obj)}" end DSLVersion.new(dsl_version) else DSLVersion.default end end