Sha256: 5248ef087e6afe0e6875c5880456952cc88ad194660517af2dddc5cf797b7ab2
Contents?: true
Size: 1.83 KB
Versions: 1
Compression:
Stored size: 1.83 KB
Contents
module GoodData::SmallGoodZilla def self.get_ids(a_maql_string) a_maql_string.scan(/!\[([^\"]+)\]/).flatten end def self.get_facts(a_maql_string) a_maql_string.scan(/#\"([^\"]+)\"/).flatten end def self.get_attributes(a_maql_string) a_maql_string.scan(/@\"([^\"]+)\"/).flatten end def self.get_metrics(a_maql_string) a_maql_string.scan(/\?"([^\"]+)\"/).flatten end def self.interpolate(values, dictionaries) { :facts => interpolate_values(values[:facts], dictionaries[:facts]), :attributes => interpolate_values(values[:attributes], dictionaries[:attributes]), :metrics => interpolate_values(values[:metrics], dictionaries[:metrics]) } end def self.interpolate_ids(*ids) res = GoodData::MdObject.identifier_to_uri(*ids.flatten) fail "Not all of the identifiers were resolved" if (Array(res).size != ids.flatten.size) res end def self.interpolate_values(keys, values) x = values.values_at(*keys) keys.zip(x) end def self.interpolate_metric(metric, dictionary) 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(ids))) metric = interpolated[:facts].reduce(metric) {|memo, item| memo.sub("#\"#{item[0]}\"", "[#{item[1]}]")} metric = interpolated[:attributes].reduce(metric) {|memo, item| memo.sub("@\"#{item[0]}\"", "[#{item[1]}]")} metric = interpolated[:metrics].reduce(metric) {|memo, item| memo.sub("?\"#{item[0]}\"", "[#{item[1]}]")} metric = interpolated_ids.reduce(metric) {|memo, item| memo.sub("![#{item[0]}]", "[#{item[1]}]")} metric end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
gooddata-0.6.0.pre8 | lib/gooddata/goodzilla/goodzilla.rb |