Class: SchemaRD::Metadata::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/schemard/metadata.rb

Overview

parser for metadata yaml

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(output_file, *metadata_files) ⇒ Parser

Returns a new instance of Parser.



116
117
118
119
120
121
122
# File 'lib/schemard/metadata.rb', line 116

def initialize(output_file, *)
  @parsed = {}
  .select{|| File.exist?() }.each do ||
    self.class.deep_merge(@parsed, YAML.load_file())
  end
  self.class.deep_merge(@parsed, YAML.load_file(output_file)) if File.exist?(output_file)
end

Class Method Details

.deep_merge(source, other) ⇒ Object



127
128
129
130
131
132
# File 'lib/schemard/metadata.rb', line 127

def self.deep_merge(source, other)
  other.each do |k,v|
    next self.deep_merge(source[k], other[k]) if other[k].is_a?(Hash) && source[k].is_a?(Hash)
    source[k] = other[k]
  end
end

Instance Method Details

#parseObject

get hash of metadata



124
125
126
# File 'lib/schemard/metadata.rb', line 124

def parse
  @parsed
end