class DTK::DSL::Template::V1::ModuleRefsLock

Constants

MODULE_NAMESPACE_DELIMS

Public Instance Methods

parse!() click to toggle source
# File lib/dsl/template/v1/module_refs_lock.rb, line 25
def parse!
  input_hash.each_pair do |module_ref_term, info_hash|
    add parse_element(module_ref_term, info_hash)
  end
end
parser_output_type() click to toggle source
# File lib/dsl/template/v1/module_refs_lock.rb, line 21
def parser_output_type
  :array
end

Private Instance Methods

parse_element(module_ref_term, info_hash) click to toggle source
# File lib/dsl/template/v1/module_refs_lock.rb, line 33
def parse_element(module_ref_term, info_hash)
  ret = self.class.file_parser_output_hash
  
  version                = parse_version(info_hash)
  namespace, module_name = parse_module_ref_term(module_ref_term)
  
  ret.set :Namespace, namespace
  ret.set :ModuleName, module_name
  ret.set :ModuleVersion, version
  ret
end
parse_module_ref_term(module_ref_term) click to toggle source

returns [namespace, module_name]

# File lib/dsl/template/v1/module_refs_lock.rb, line 54
def parse_module_ref_term(module_ref_term)
  split = split_by_delim(module_ref_term)
  unless split.size == 2
    raise parsing_error("The term '#{module_ref_term}' is an ill-formed module reference")
  end
  namespace, module_name = split
  [namespace, module_name]
end
parse_version(info_hash) click to toggle source
# File lib/dsl/template/v1/module_refs_lock.rb, line 45
def parse_version(info_hash)
  unless version = info_hash['version']
    raise parsing_error("The missing version info")
  end
  # TODO: check syntax of version
  version
end
split_by_delim(str) click to toggle source
# File lib/dsl/template/v1/module_refs_lock.rb, line 65
def split_by_delim(str)
  if matching_delim = MODULE_NAMESPACE_DELIMS.find { |delim| str =~ Regexp.new(delim) }
    str.split(matching_delim)
  else
    [str]
  end
end