Class: Metar::Report

Inherits:
Object
  • Object
show all
Defined in:
lib/metar/report.rb

Constant Summary collapse

ATTRIBUTES =
%i(
  station_name
  station_country
  time
  wind
  visibility
  minimum_visibility
  present_weather
  sky_summary
  temperature
).freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parser) ⇒ Report

Returns a new instance of Report.



21
22
23
24
25
# File 'lib/metar/report.rb', line 21

def initialize(parser)
  @parser = parser
  # TODO: parser should return the station
  @station = Station.find_by_cccc(@parser.station_code)
end

Instance Attribute Details

#parserObject (readonly)

Returns the value of attribute parser.



19
20
21
# File 'lib/metar/report.rb', line 19

def parser
  @parser
end

#stationObject (readonly)

Returns the value of attribute station.



19
20
21
# File 'lib/metar/report.rb', line 19

def station
  @station
end

Instance Method Details

#dateObject



39
40
41
# File 'lib/metar/report.rb', line 39

def date
  I18n.l(@parser.date)
end

#dew_pointObject



98
99
100
# File 'lib/metar/report.rb', line 98

def dew_point
  @parser.dew_point.to_s
end

#minimum_visibilityObject



66
67
68
# File 'lib/metar/report.rb', line 66

def minimum_visibility
  @parser.minimum_visibility.to_s
end

#observerObject



50
51
52
# File 'lib/metar/report.rb', line 50

def observer
  I18n.t('metar.observer.' + @parser.observer.to_s)
end

#present_weatherObject



74
75
76
# File 'lib/metar/report.rb', line 74

def present_weather
  @parser.present_weather.join(', ')
end

#remarksObject



106
107
108
# File 'lib/metar/report.rb', line 106

def remarks
  @parser.remarks.join(', ')
end

#runway_visible_rangeObject



70
71
72
# File 'lib/metar/report.rb', line 70

def runway_visible_range
  @parser.runway_visible_range.map(&:to_s).join(', ')
end

#sea_level_pressureObject



102
103
104
# File 'lib/metar/report.rb', line 102

def sea_level_pressure
  @parser.sea_level_pressure.value.to_s
end

#sky_conditionsObject



86
87
88
# File 'lib/metar/report.rb', line 86

def sky_conditions
  @parser.sky_conditions.map(&:to_s).join(', ')
end

#sky_summaryObject



78
79
80
81
82
83
84
# File 'lib/metar/report.rb', line 78

def sky_summary
  if @parser.sky_conditions.empty?
    return I18n.t('metar.sky_conditions.clear skies')
  end

  @parser.sky_conditions[-1].to_summary
end

#station_codeObject



35
36
37
# File 'lib/metar/report.rb', line 35

def station_code
  @parser.station_code
end

#station_countryObject



31
32
33
# File 'lib/metar/report.rb', line 31

def station_country
  @station.country
end

#station_nameObject



27
28
29
# File 'lib/metar/report.rb', line 27

def station_name
  @station.name
end

#temperatureObject



94
95
96
# File 'lib/metar/report.rb', line 94

def temperature
  @parser.temperature.to_s
end

#timeObject



43
44
45
46
47
48
# File 'lib/metar/report.rb', line 43

def time
  format(
    "%<hour>u:%02<min>u",
    hour: @parser.time.hour, min: @parser.time.min
  )
end

#to_sObject



110
111
112
113
114
115
116
# File 'lib/metar/report.rb', line 110

def to_s
  attributes.collect do |attribute|
    I18n.t('metar.' + attribute[:attribute].to_s + '.title') +
      ': ' +
      attribute[:value]
  end.join("\n") + "\n"
end

#variable_windObject



58
59
60
# File 'lib/metar/report.rb', line 58

def variable_wind
  @parser.variable_wind.to_s
end

#vertical_visibilityObject



90
91
92
# File 'lib/metar/report.rb', line 90

def vertical_visibility
  @parser.vertical_visibility.to_s
end

#visibilityObject



62
63
64
# File 'lib/metar/report.rb', line 62

def visibility
  @parser.visibility.to_s
end

#windObject



54
55
56
# File 'lib/metar/report.rb', line 54

def wind
  @parser.wind.to_s
end