class CartoCSSHelper::Info

Public Class Methods

get_expected_composite(key, value) click to toggle 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
get_expected_state(key, value) click to toggle 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
rendered_on_zlevel(tags, type, zlevel, on_water) click to toggle 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

asssume_that_no_composite_will_match(key, value, zlevels) click to toggle 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
assume_that_only_this_composite_can_match(key, value, zlevels, expected_composite) click to toggle 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
get_render_state_of_tag(key, value, quick_and_more_prone_to_errors) click to toggle 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
get_render_state_of_tag_quick_heurestic() click to toggle 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
get_render_state_of_tag_thorough(key, value, expected_composite, zlevels) click to toggle 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
get_render_state_of_tags(quick_and_more_prone_to_errors) click to toggle source
# File lib/cartocss_helper/tag_lister.rb, line 58
def get_render_state_of_tags(quick_and_more_prone_to_errors)
  states = []
  @last_composite = nil
  Heuristic.get_tags.each do |tag|
    key = tag[0]
    value = tag[1]
    # print_render_state_of_tag key, value
    state = get_render_state_of_tag(key, value, quick_and_more_prone_to_errors)
    states.push(TagRenderingStatus.new(key, value, state, @last_composite))
  end
  return states
end
how_rendered_as_composite(key, value, suggested_composite, zlevels = [Configuration.get_max_z]) click to toggle 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
is_key_rendered_and_value_ignored(key, value) click to toggle 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
is_key_rendered_and_value_ignored_set(key, value, type, zlevel, on_water) click to toggle 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
is_rendered(key, value, zlevels = [Configuration.get_max_z]) click to toggle 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
is_rendered_as_composite(key, value, suggested_composite = nil, zlevels = [Configuration.get_max_z]) click to toggle 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
print_render_state_of_tag(key, value) click to toggle source
print_render_state_of_tags(git_branch) click to toggle source

Protected Instance Methods

deep_clone(input) click to toggle source
# File lib/cartocss_helper/tag_lister.rb, line 224
def deep_clone(input)
  return Marshal.load(Marshal.dump(input))
end
how_rendered_on_zlevel_as_composite(tags, type, zlevel, on_water, suggested_composite) click to toggle 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
is_rendered_with_this_composite(tags, type, provided_composite, zlevel, on_water) click to toggle 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