Convert some model mixins to concerns
This commit is contained in:
parent
ad85a03e21
commit
82f3dc6823
3 changed files with 9 additions and 5 deletions
|
@ -1,57 +0,0 @@
|
|||
require "delegate"
|
||||
|
||||
module GeoRecord
|
||||
# Ensure that when coordinates are printed that they are always in decimal degrees,
|
||||
# and not e.g. 4.0e-05
|
||||
# Unfortunately you can't extend Numeric classes directly (e.g. `Coord < Float`).
|
||||
class Coord < DelegateClass(Float)
|
||||
def initialize(obj)
|
||||
super(obj)
|
||||
end
|
||||
|
||||
def to_s
|
||||
format("%.7f", self)
|
||||
end
|
||||
end
|
||||
|
||||
# This scaling factor is used to convert between the float lat/lon that is
|
||||
# returned by the API, and the integer lat/lon equivalent that is stored in
|
||||
# the database.
|
||||
SCALE = 10000000
|
||||
|
||||
def self.included(base)
|
||||
base.scope :bbox, ->(bbox) { base.where(OSM.sql_for_area(bbox)) }
|
||||
base.before_save :update_tile
|
||||
end
|
||||
|
||||
# Is this node within -90 >= latitude >= 90 and -180 >= longitude >= 180
|
||||
# * returns true/false
|
||||
def in_world?
|
||||
return false if lat < -90 || lat > 90
|
||||
return false if lon < -180 || lon > 180
|
||||
|
||||
true
|
||||
end
|
||||
|
||||
def update_tile
|
||||
self.tile = QuadTile.tile_for_point(lat, lon)
|
||||
end
|
||||
|
||||
def lat=(l)
|
||||
self.latitude = (l * SCALE).round
|
||||
end
|
||||
|
||||
def lon=(l)
|
||||
self.longitude = (l * SCALE).round
|
||||
end
|
||||
|
||||
# Return WGS84 latitude
|
||||
def lat
|
||||
Coord.new(latitude.to_f / SCALE)
|
||||
end
|
||||
|
||||
# Return WGS84 longitude
|
||||
def lon
|
||||
Coord.new(longitude.to_f / SCALE)
|
||||
end
|
||||
end
|
|
@ -1,11 +0,0 @@
|
|||
require "osm"
|
||||
|
||||
module NotRedactable
|
||||
def redacted?
|
||||
false
|
||||
end
|
||||
|
||||
def redact!(_r)
|
||||
raise OSM::APICannotRedactError
|
||||
end
|
||||
end
|
|
@ -1,41 +0,0 @@
|
|||
module ObjectMetadata
|
||||
def add_metadata_to_xml_node(el, osm, changeset_cache, user_display_name_cache)
|
||||
el["changeset"] = osm.changeset_id.to_s
|
||||
el["redacted"] = osm.redaction.id.to_s if osm.redacted?
|
||||
el["timestamp"] = osm.timestamp.xmlschema
|
||||
el["version"] = osm.version.to_s
|
||||
el["visible"] = osm.visible.to_s
|
||||
|
||||
if changeset_cache.key?(osm.changeset_id)
|
||||
# use the cache if available
|
||||
else
|
||||
changeset_cache[osm.changeset_id] = osm.changeset.user_id
|
||||
end
|
||||
|
||||
user_id = changeset_cache[osm.changeset_id]
|
||||
|
||||
if user_display_name_cache.key?(user_id)
|
||||
# use the cache if available
|
||||
elsif osm.changeset.user.data_public?
|
||||
user_display_name_cache[user_id] = osm.changeset.user.display_name
|
||||
else
|
||||
user_display_name_cache[user_id] = nil
|
||||
end
|
||||
|
||||
unless user_display_name_cache[user_id].nil?
|
||||
el["user"] = user_display_name_cache[user_id]
|
||||
el["uid"] = user_id.to_s
|
||||
end
|
||||
end
|
||||
|
||||
def add_tags_to_xml_node(el, tags)
|
||||
tags.each do |tag|
|
||||
tag_el = XML::Node.new("tag")
|
||||
|
||||
tag_el["k"] = tag.k
|
||||
tag_el["v"] = tag.v
|
||||
|
||||
el << tag_el
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue