Class: GoodData::Bam::DSL::MetadataDSL

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

Instance Method Summary collapse

Constructor Details

#initialize(flow_name, &bl) ⇒ MetadataDSL

Returns a new instance of MetadataDSL.



87
88
89
90
91
# File 'lib/dsl/dsl.rb', line 87

def initialize(flow_name, &bl)
  @name = flow_name
  @steps = []
  instance_eval(&bl)
end

Instance Method Details

#add(data, &bl) ⇒ Object



93
94
95
96
97
98
99
100
# File 'lib/dsl/dsl.rb', line 93

def add(data, &bl)
  fail "Params need to be hash. This means for example remove(:name => \"value\"). " unless data.is_a? Hash
  fail "Remove field should have at least \"name\" defined. You provided \"#{data}\"." unless data.has_key?(:name)
  data_copy = data.clone
  data_copy[:field_type] = data[:type] unless data[:type].nil?
  data_copy.delete(:type)
  @steps << {:type => :field_add}.merge(data_copy)
end

#remove(data, &bl) ⇒ Object



102
103
104
105
106
# File 'lib/dsl/dsl.rb', line 102

def remove(data, &bl)
  fail "Params need to be hash. This means for example remove(:name => \"value\"). " unless data.is_a? Hash
  fail "Remove field should have at least \"name\" defined. You provided \"#{data}\"." unless data.has_key?(:name)
  @steps << {:type => :field_remove}.merge(data)
end

#to_aObject



115
116
117
# File 'lib/dsl/dsl.rb', line 115

def to_a
  @steps
end

#to_hashObject



108
109
110
111
112
113
# File 'lib/dsl/dsl.rb', line 108

def to_hash
  {
    :name => @name,
    :steps => @steps
  }
end