class HamRadio
Public Class Methods
new()
click to toggle source
# File lib/hamradio.rb, line 3 def initialize() end
Public Instance Methods
grid_decode(gridsquare)
click to toggle source
# File lib/hamradio.rb, line 41 def grid_decode(gridsquare) gridsquare += 'MM' if gridsquare.size == 4 a = gridsquare[0].ord - 'A'.ord b = gridsquare[1].ord - 'A'.ord c = gridsquare[2].ord - '0'.ord d = gridsquare[3].ord - '0'.ord e = gridsquare[4].upcase.ord - 'A'.ord f = gridsquare[5].upcase.ord - 'A'.ord lon = (a*20) + (c*2) + ((e+0.5)/12) - 180 lat = (b*10) + d + ((f+0.5)/24) - 90 [lat,lon] end
grid_encode(dms)
click to toggle source
# File lib/hamradio.rb, line 7 def grid_encode(dms) # return nil if this isn't a valid gridsquare return nil if self.valid_gridsquare(dms) == nil grid = '' lat = dms[0].to_f+90 lon = dms[1].to_f+180 v = (lon/20).to_i lon -= (v*20) grid += ((?A.ord + v).chr).to_s # first letter v = (lat/10).to_i lat -= (v*10) grid += ((?A.ord + v).chr).to_s # second letter p3 = (lon/2).to_i grid += p3.to_s # third number p4 = (lat).to_i grid += p4.to_s # fourth number lon -= p3*2 lat -= p4 p3 = (?0.ord + p3.to_i).chr p4 = (?0.ord + p4).chr p5 = (12.ord * lon).to_i p6 = (24.ord * lat).to_i grid += ((?a.ord + p5).chr).to_s # fifth letter grid += ((?a.ord + p6).chr).to_s # sixth letter end
lookup_callsign(call)
click to toggle source
# File lib/hamradio.rb, line 59 def lookup_callsign(call) require 'nestful' c = Nestful.get 'http://callbytxt.org/db/'+call+'.json', :format => :json #=> {:json_hash => 1} c['calls'] end
valid_callsign(call)
click to toggle source
# File lib/hamradio.rb, line 66 def valid_callsign(call) (call =~ /^([BFGIKMNTW]|[A-Z0-9]{2})[0-9][A-Z0-9]{0,3}[A-Z]$/i) != nil end
valid_gridsquare(grid)
click to toggle source
# File lib/hamradio.rb, line 55 def valid_gridsquare(grid) (grid =~ /[a-z][a-z]\d\d[a-z]*/i) != nil end