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