class VatsimTools::StationParser
Constants
- LOCAL_DATA
Public Class Methods
new(icao, args = nil)
click to toggle source
# File lib/vatsim_online/station_parser.rb, line 14 def initialize(icao, args = nil) VatsimTools::DataDownloader.new args.class == Hash ? @role = determine_role(args) : @role = "all" if icao == "ALL" @icao = nil else @icao = icao.upcase.split(',').each { |s| s.strip! } end @excluded = args[:exclude].upcase if args && args[:exclude] @gcmap_width = args[:gcmap_width] if args && args[:gcmap_width] @gcmap_height = args[:gcmap_height] if args && args[:gcmap_height] end
Public Instance Methods
determine_role(args)
click to toggle source
# File lib/vatsim_online/station_parser.rb, line 27 def determine_role(args) args[:atc] == false ? role = "pilot" : role = "all" args[:pilots] == false ? role = "atc" : role = role role = "all" if args[:pilots] == false && args[:atc] == false role end
sorted_station_objects()
click to toggle source
# File lib/vatsim_online/station_parser.rb, line 69 def sorted_station_objects atc = []; pilots = []; arrivals = []; departures = [] station_objects.each { |sobj| sobj.role == "controller" ? atc << sobj : pilots << sobj } if @icao @icao.each do |icao| pilots.each do |pilot| departures << pilot if pilot.origin[0...icao.length] == icao arrivals << pilot if pilot.destination[0...icao.length] == icao end end end atc.delete_if { |a| @excluded && a.callsign[0...@excluded.length] == @excluded } { :atc => atc, :pilots => pilots, :arrivals => arrivals, :departures => departures } end
station_objects()
click to toggle source
# File lib/vatsim_online/station_parser.rb, line 60 def station_objects station_objects = [] args = {} args[:gcmap_width] = @gcmap_width if @gcmap_width args[:gcmap_height] = @gcmap_height if @gcmap_height stations.each { |station| station_objects << VatsimTools::Station.new(station, args) } station_objects end
stations()
click to toggle source
# File lib/vatsim_online/station_parser.rb, line 34 def stations matching_stations = [] raw_data = File.read(LOCAL_DATA) data = JSON.parse(raw_data) pilots = data['pilots'].each { |p| p['role'] = 'pilot' } controllers = data['controllers'].each { |p| p['role'] = 'controller' } atis = data['atis'].each { |p| p['role'] = 'atis' } stations = pilots + controllers + atis stations.each do |station| callsign = station['callsign'] destination = station['flight_plan']['arrival'] rescue '' origin = station['flight_plan']['departure'] rescue '' client = station['role'] unless @icao matching_stations << station if (client == "controller") unless @role == "pilot" matching_stations << station if (client == "pilot") unless @role == "atc" else @icao.each do |icao| matching_stations << station if (callsign[0...icao.length] == icao && client == "controller") unless @role == "pilot" matching_stations << station if (origin[0...icao.length] == icao || destination[0...icao.length] == icao) unless @role == "atc" end end end matching_stations end