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
|