X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/5f4dcd34ff5943ff4de39bc8322013376a6de8b9..56798e94358c2943b2b269513e5479e4d5a48000:/lib/potlatch.rb diff --git a/lib/potlatch.rb b/lib/potlatch.rb index 4b56414a4..0b01daf29 100644 --- a/lib/potlatch.rb +++ b/lib/potlatch.rb @@ -24,7 +24,7 @@ module Potlatch # Return eight-byte double-precision float def self.getdouble(s) - a = s.read(8).unpack("G") # G big-endian, E little-endian + a = s.read(8).unpack("G") # G big-endian, E little-endian a[0] end @@ -38,25 +38,25 @@ module Potlatch arr = {} while (key = getstring(s)) break if key == "" + arr[key] = getvalue(s) end - s.getbyte # skip the 9 'end of object' value + s.getbyte # skip the 9 'end of object' value arr end # Parse and get value def self.getvalue(s) case s.getbyte - when 0 then return getdouble(s) # number - when 1 then return s.getbyte # boolean - when 2 then return getstring(s) # string - when 3 then return getobject(s) # object/hash - when 5 then return nil # null - when 6 then return nil # undefined - when 8 then s.read(4) # mixedArray - return getobject(s) # | - when 10 then return getarray(s) # array - else return nil # error + when 0 then getdouble(s) # number + when 1 then s.getbyte # boolean + when 2 then getstring(s) # string + when 3 then getobject(s) # object/hash + when 5 then nil # null + when 6 then nil # undefined + when 8 then s.read(4) # mixedArray + getobject(s) # | + when 10 then getarray(s) # array end end @@ -71,31 +71,31 @@ module Potlatch # Pack variables as AMF def self.encodevalue(n) - case n.class.to_s - when "Array" + case n + when Array a = 10.chr + encodelong(n.length) n.each do |b| a += encodevalue(b) end a - when "Hash" + when Hash a = 3.chr n.each do |k, v| a += encodestring(k.to_s) + encodevalue(v) end a + 0.chr + 0.chr + 9.chr - when "String" + when String 2.chr + encodestring(n) - when "Bignum", "Fixnum", "Float" + when Numeric, GeoRecord::Coord 0.chr + encodedouble(n) - when "NilClass" + when NilClass 5.chr - when "TrueClass" + when TrueClass 0.chr + encodedouble(1) - when "FalseClass" + when FalseClass 0.chr + encodedouble(0) else - Rails.logger.error("Unexpected Ruby type for AMF conversion: " + n.class.to_s) + raise "Unexpected Ruby type for AMF conversion: #{n.class.name}" end end @@ -108,7 +108,7 @@ module Potlatch # Encode number as eight-byte double precision float def self.encodedouble(n) - [n].pack("G") + [n.to_f].pack("G") end # Encode number as four-byte long @@ -163,11 +163,11 @@ module Potlatch # The Potlatch class is a helper for Potlatch class Potlatch # ----- getpresets - # in: none - # does: reads tag preset menus, colours, and autocomplete config files - # out: [0] presets, [1] presetmenus, [2] presetnames, - # [3] colours, [4] casing, [5] areas, [6] autotags - # (all hashes) + # in: none + # does: reads tag preset menus, colours, and autocomplete config files + # out: [0] presets, [1] presetmenus, [2] presetnames, + # [3] colours, [4] casing, [5] areas, [6] autotags + # (all hashes) def self.get_presets Rails.logger.info(" Message: getpresets") @@ -177,8 +177,8 @@ module Potlatch presetnames = { "point" => {}, "way" => {}, "POI" => {} } presettype = "" presetcategory = "" - # StringIO.open(txt) do |file| - File.open("#{Rails.root}/config/potlatch/presets.txt") do |file| + # StringIO.open(txt) do |file| + File.open(Rails.root.join("config", "potlatch", "presets.txt")) do |file| file.each_line do |line| t = line.chomp if t =~ %r{(\w+)/(\w+)} @@ -202,7 +202,7 @@ module Potlatch colours = {} casing = {} areas = {} - File.open("#{Rails.root}/config/potlatch/colours.txt") do |file| + File.open(Rails.root.join("config", "potlatch", "colours.txt")) do |file| file.each_line do |line| next unless line.chomp =~ /(\w+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)/ @@ -217,7 +217,7 @@ module Potlatch relcolours = {} relalphas = {} relwidths = {} - File.open("#{Rails.root}/config/potlatch/relation_colours.txt") do |file| + File.open(Rails.root.join("config", "potlatch", "relation_colours.txt")) do |file| file.each_line do |line| next unless line.chomp =~ /(\w+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)/ @@ -231,7 +231,7 @@ module Potlatch # Read POI presets icon_list = [] icon_tags = {} - File.open("#{Rails.root}/config/potlatch/icon_presets.txt") do |file| + File.open(Rails.root.join("config", "potlatch", "icon_presets.txt")) do |file| file.each_line do |line| (icon, tags) = line.chomp.split("\t") icon_list.push(icon) @@ -242,7 +242,7 @@ module Potlatch # Read auto-complete autotags = { "point" => {}, "way" => {}, "POI" => {} } - File.open("#{Rails.root}/config/potlatch/autocomplete.txt") do |file| + File.open(Rails.root.join("config", "potlatch", "autocomplete.txt")) do |file| file.each_line do |line| next unless line.chomp =~ %r{^([\w:]+)/(\w+)\s+(.+)$}