Method: GoodData::SmallGoodZilla.interpolate_metric

Defined in:
lib/gooddata/goodzilla/goodzilla.rb

.interpolate_metric(metric, dictionary, options = { :client => GoodData.connection, :project => GoodData.project }) ⇒ Object Also known as: interpolate_measure



140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# File 'lib/gooddata/goodzilla/goodzilla.rb', line 140

def interpolate_metric(metric, dictionary, options = { :client => GoodData.connection, :project => GoodData.project })
  interpolated = interpolate({
                               :facts => GoodData::SmallGoodZilla.get_facts(metric),
                               :attributes => GoodData::SmallGoodZilla.get_attributes(metric),
                               :metrics => GoodData::SmallGoodZilla.get_metrics(metric)
                             }, dictionary)

  ids = GoodData::SmallGoodZilla.get_ids(metric)
  interpolated_ids = ids.zip(Array(interpolate_ids(options, ids)))

  metric = interpolated[:facts].reduce(metric) { |acc, elem| acc.sub("#\"#{elem[0]}\"", "[#{elem[1]}]") }
  metric = interpolated[:attributes].reduce(metric) { |acc, elem| acc.sub("@\"#{elem[0]}\"", "[#{elem[1]}]") }
  metric = interpolated[:metrics].reduce(metric) { |acc, elem| acc.sub("?\"#{elem[0]}\"", "[#{elem[1]}]") }
  metric = interpolated_ids.reduce(metric) { |acc, elem| acc.gsub("![#{elem[0]}]", "[#{elem[1]}]") }
  metric
end