class CartoCSSHelper::Info
Public Class Methods
Source
# File lib/cartocss_helper/tag_lister.rb, line 43 def self.get_expected_composite(key, value) CartoCSSHelper::Configuration.get_style_specific_data.list_of_documented_tags.each do |documented| next unless documented.key == key return documented.composite if documented.value == value end return nil end
Source
# File lib/cartocss_helper/tag_lister.rb, line 35 def self.get_expected_state(key, value) CartoCSSHelper::Configuration.get_style_specific_data.list_of_documented_tags.each do |documented| next unless documented.key == key return documented.state if documented.value == value end return nil end
Source
# File lib/cartocss_helper/tag_lister.rb, line 201 def self.rendered_on_zlevel(tags, type, zlevel, on_water) empty = Scene.new({}, zlevel, on_water, type, true) tested = Scene.new(tags, zlevel, on_water, type, true) return tested.is_output_different(empty) end
Public Instance Methods
Source
# File lib/cartocss_helper/tag_lister.rb, line 102 def asssume_that_no_composite_will_match(key, value, zlevels) @last_composite = nil if is_rendered key, value, zlevels return :primary else return :ignored end end
Source
# File lib/cartocss_helper/tag_lister.rb, line 92 def assume_that_only_this_composite_can_match(key, value, zlevels, expected_composite) if is_rendered_as_composite key, value, expected_composite, zlevels @last_composite = how_rendered_as_composite key, value, expected_composite, zlevels return :composite else @last_composite = nil return :ignored end end
Source
# File lib/cartocss_helper/tag_lister.rb, line 71 def get_render_state_of_tag(key, value, quick_and_more_prone_to_errors) if Info.get_expected_state(key, value) == :ignored @last_composite = nil return :ignored end zlevels = [22, 13] # TODO: - this is specially tuned for Default expected_composite = Info.get_expected_composite(key, value) if quick_and_more_prone_to_errors return get_render_state_of_tag_quick_heurestic(key, value, expected_composite, zlevels) end return get_render_state_of_tag_thorough(key, value, expected_composite, zlevels) end
Source
# File lib/cartocss_helper/tag_lister.rb, line 84 def get_render_state_of_tag_quick_heurestic if expected_composite != nil return assume_that_only_this_composite_can_match(key, value, zlevels, expected_composite) else return asssume_that_no_composite_will_match(key, value, zlevels) end end
Source
# File lib/cartocss_helper/tag_lister.rb, line 111 def get_render_state_of_tag_thorough(key, value, expected_composite, zlevels) if is_rendered key, value, zlevels @last_composite = nil return :primary end if is_rendered_as_composite key, value, expected_composite @last_composite = how_rendered_as_composite key, value, expected_composite return :composite else @last_composite = nil return :ignored end end
Source
# File lib/cartocss_helper/tag_lister.rb, line 184 def how_rendered_as_composite(key, value, suggested_composite, zlevels = [Configuration.get_max_z]) # TODO: - note that some tags may be rendered up to X zoom level, but checking all zlevels would take too much time [false, true].each do |on_water| zlevels.each do |zlevel| result = how_rendered_on_zlevel_as_composite({ key => value }, 'closed_way', zlevel, on_water, suggested_composite) return result if result != nil result = how_rendered_on_zlevel_as_composite({ key => value }, 'way', zlevel, on_water, suggested_composite) return result if result != nil result = how_rendered_on_zlevel_as_composite({ key => value }, 'node', zlevel, on_water, suggested_composite) return result if result != nil end end if suggested_composite != nil return how_rendered_as_composite key, value, nil end return nil end
Source
# File lib/cartocss_helper/tag_lister.rb, line 144 def is_key_rendered_and_value_ignored(key, value) return false if notis_rendered key, get_generic_tag_value [false, true].each do |on_water| [Configuration.get_max_z].each do |zlevel| ['area', 'closed_way', 'way', 'node'].each do |type| next unless CartoCSSHelper::Info.rendered_on_zlevel({ key => value }, type, zlevel, on_water) unless is_key_rendered_and_value_ignored_set(key, value, type, zlevel, on_water) return false end end end end return true end
Source
# File lib/cartocss_helper/tag_lister.rb, line 159 def is_key_rendered_and_value_ignored_set(key, value, type, zlevel, on_water) with_tested_value = Scene.new({ key => value }, zlevel, on_water, type, true) with_generic_value = Scene.new({ key => get_generic_tag_value }, zlevel, on_water, type, true) return !with_tested_value.is_output_different(with_generic_value) end
Source
# File lib/cartocss_helper/tag_lister.rb, line 165 def is_rendered(key, value, zlevels = [Configuration.get_max_z]) # TODO: - note that some tags may be rendered up to X zoom level, but checking all zlevels would take too much time [false, true].each do |on_water| zlevels.each do |zlevel| # ['area', 'closed_way', 'way', 'node'].each do |type| if CartoCSSHelper::Info.rendered_on_zlevel({ key => value }, type, zlevel, on_water) return true end end end end return false end
Source
# File lib/cartocss_helper/tag_lister.rb, line 178 def is_rendered_as_composite(key, value, suggested_composite = nil, zlevels = [Configuration.get_max_z]) # TODO: - note that some tags may be rendered up to X zoom level, but checking all zlevels would take too much time reason = how_rendered_as_composite key, value, suggested_composite, zlevels return false if reason == nil return true end
Source
# File lib/cartocss_helper/tag_lister.rb, line 125 def print_render_state_of_tag(key, value) if is_rendered key, value @last_composite = nil if value == get_generic_tag_value puts "#{key}=#{value} - primary generic tag value" elsif is_key_rendered_and_value_ignored(key, value) puts "#{key}=#{value} - primary, but rendering the same as generic value" else puts "#{key}=#{value} - primary" end elsif is_rendered_as_composite key, value, @last_composite @last_composite = how_rendered_as_composite key, value, @last_composite puts "#{key}=#{value} - composite with #{@last_composite} - and maybe other tags" else @last_composite = nil puts "#{key}=#{value} - not displayed" end end
Protected Instance Methods
Source
# File lib/cartocss_helper/tag_lister.rb, line 224 def deep_clone(input) return Marshal.load(Marshal.dump(input)) end
Source
# File lib/cartocss_helper/tag_lister.rb, line 209 def how_rendered_on_zlevel_as_composite(tags, type, zlevel, on_water, suggested_composite) if suggested_composite != nil if is_rendered_with_this_composite tags, type, suggested_composite, zlevel, on_water return suggested_composite end return nil end CartoCSSHelper::Configuration.get_style_specific_data.list_of_documented_compositions.each do |composite| if is_rendered_with_this_composite tags, type, composite, zlevel, on_water return composite end end return nil end
Source
# File lib/cartocss_helper/tag_lister.rb, line 228 def is_rendered_with_this_composite(tags, type, provided_composite, zlevel, on_water) tags_with_composite = deep_clone(tags) composite = deep_clone(provided_composite) composite.each do |key, value| if tags_with_composite[key] != nil return false # shadowing end tags_with_composite[key] = value end with_composite = Scene.new(tags_with_composite, zlevel, on_water, type, true) only_composite = Scene.new(composite, zlevel, on_water, type, true) empty = Scene.new({}, zlevel, on_water, type, true) return false if with_composite.is_output_identical(empty) return false if with_composite.is_output_identical(only_composite) return true if composite['area'] != nil composite['area'] = 'yes' composite_interpreted_as_area = Scene.new(composite, zlevel, on_water, type, true) return false if with_composite.is_output_identical(composite_interpreted_as_area) return true end