Module: Raml::Merge

Included in:
AbstractMethod, AbstractResource, Body, Parameter::AbstractParameter, Response
Defined in:
lib/raml/mixin/merge.rb

Instance Method Summary collapse

Instance Method Details

#merge(other) ⇒ Object



4
5
6
7
8
9
10
# File 'lib/raml/mixin/merge.rb', line 4

def merge(other)
  other.scalar_properties.each do |prop|
    prop_var  = "@#{prop}"
    prop_val = other.instance_variable_get prop_var
    instance_variable_set prop_var, prop_val unless prop_val.nil?
  end
end

#merge_properties(other, type) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/raml/mixin/merge.rb', line 12

def merge_properties(other, type)
  match, no_match = other.send(type).values.partition { |param| self.send(type).has_key? param.name }

  match.each { |param| self.send(type)[param.name].merge param }

  # if its an optional property, and there is no match in self, don't merge it.
  no_match.reject! { |node| node.optional      }
  no_match.map!    { |node| node.clone         }
  no_match.each    { |node| node.parent = self }
  @children += no_match
end