43 lines
1.2 KiB
Ruby
43 lines
1.2 KiB
Ruby
require_relative './point'
|
|
require_relative './line'
|
|
require_relative './polygon'
|
|
require_relative './style'
|
|
require_relative '../definition'
|
|
|
|
module Carto::Styles
|
|
class Geometry < Style
|
|
def initialize
|
|
super(nil)
|
|
end
|
|
|
|
def self.accepted_geometry_types
|
|
['geometry', 'st_geometry']
|
|
end
|
|
|
|
NAMES_CLASSES_MAP = {
|
|
"layer['mapnik::geometry_type'=1]" => Carto::Styles::Point,
|
|
"layer['mapnik::geometry_type'=2]" => Carto::Styles::Line,
|
|
"layer['mapnik::geometry_type'=3]" => Carto::Styles::Polygon
|
|
}.freeze
|
|
|
|
def to_cartocss
|
|
cartocss_classes = NAMES_CLASSES_MAP.keys.map do |class_name|
|
|
cartocss_array = NAMES_CLASSES_MAP[class_name].new.to_cartocss_array
|
|
Carto::Styles::Presenters::CartoCSS.new(cartocss_array: cartocss_array,
|
|
class_name: class_name)
|
|
.to_s
|
|
end
|
|
|
|
cartocss_classes.join("\n")
|
|
end
|
|
|
|
def default_definition
|
|
definition_instance = Carto::Definition.instance
|
|
definition = definition_instance
|
|
.load_from_file(CARTOGRAPHY_DEFINITION_LOCATION)
|
|
|
|
definition[:simple][:point]
|
|
end
|
|
end
|
|
end
|