Class: Metar::Data::RunwayVisibleRange
- Defined in:
- lib/metar/data/runway_visible_range.rb
Constant Summary collapse
- TENDENCY =
{ '' => nil, 'N' => :no_change, 'U' => :improving, 'D' => :worsening }.freeze
- COMPARATOR =
{'' => nil, 'P' => :more_than, 'M' => :less_than}.freeze
- UNITS =
{'' => :meters, 'FT' => :feet}.freeze
Instance Attribute Summary collapse
-
#designator ⇒ Object
readonly
Returns the value of attribute designator.
-
#tendency ⇒ Object
readonly
Returns the value of attribute tendency.
-
#visibility1 ⇒ Object
readonly
Returns the value of attribute visibility1.
-
#visibility2 ⇒ Object
readonly
Returns the value of attribute visibility2.
Attributes inherited from Base
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(raw, designator:, visibility1:, visibility2: nil, tendency: nil, units: :meters) ⇒ RunwayVisibleRange
constructor
A new instance of RunwayVisibleRange.
- #to_s ⇒ Object
Methods inherited from Base
Constructor Details
permalink #initialize(raw, designator:, visibility1:, visibility2: nil, tendency: nil, units: :meters) ⇒ RunwayVisibleRange
Returns a new instance of RunwayVisibleRange.
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/metar/data/runway_visible_range.rb', line 68 def initialize( raw, designator:, visibility1:, visibility2: nil, tendency: nil, units: :meters ) @raw = raw @designator = designator @visibility1 = visibility1 @visibility2 = visibility2 @tendency = tendency @units = units end |
Instance Attribute Details
permalink #designator ⇒ Object (readonly)
Returns the value of attribute designator.
66 67 68 |
# File 'lib/metar/data/runway_visible_range.rb', line 66 def designator @designator end |
permalink #tendency ⇒ Object (readonly)
Returns the value of attribute tendency.
66 67 68 |
# File 'lib/metar/data/runway_visible_range.rb', line 66 def tendency @tendency end |
permalink #visibility1 ⇒ Object (readonly)
Returns the value of attribute visibility1.
66 67 68 |
# File 'lib/metar/data/runway_visible_range.rb', line 66 def visibility1 @visibility1 end |
permalink #visibility2 ⇒ Object (readonly)
Returns the value of attribute visibility2.
66 67 68 |
# File 'lib/metar/data/runway_visible_range.rb', line 66 def visibility2 @visibility2 end |
Class Method Details
permalink .parse(raw) ⇒ Object
[View source]
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/metar/data/runway_visible_range.rb', line 16 def self.parse(raw) return nil if raw.nil? m1 = raw.match(%r{^R(\d+[RLC]?)/(P|M|)(\d{4})(FT|)/?(N|U|D|)$}) if m1 designator = m1[1] comparator = COMPARATOR[m1[2]] count = m1[3].to_f units = UNITS[m1[4]] tendency = TENDENCY[m1[5]] distance = Metar::Data::Distance.send(units, count) visibility = Metar::Data::Visibility.new( nil, distance: distance, comparator: comparator ) return new( raw, designator: designator, visibility1: visibility, tendency: tendency ) end m2 = raw.match( %r{^R(\d+[RLC]?)/(P|M|)(\d{4})V(P|M|)(\d{4})(FT|)/?(N|U|D)?$} ) if m2 designator = m2[1] comparator1 = COMPARATOR[m2[2]] count1 = m2[3].to_f comparator2 = COMPARATOR[m2[4]] count2 = m2[5].to_f units = UNITS[m2[6]] tendency = TENDENCY[m2[7]] distance1 = Metar::Data::Distance.send(units, count1) distance2 = Metar::Data::Distance.send(units, count2) visibility1 = Metar::Data::Visibility.new( nil, distance: distance1, comparator: comparator1 ) visibility2 = Metar::Data::Visibility.new( nil, distance: distance2, comparator: comparator2 ) return new( raw, designator: designator, visibility1: visibility1, visibility2: visibility2, tendency: tendency, units: units ) end nil end |
Instance Method Details
permalink #to_s ⇒ Object
[View source]
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/metar/data/runway_visible_range.rb', line 84 def to_s = { abbreviated: true, precision: 0, units: @units } s = if @visibility2.nil? I18n.t('metar.runway_visible_range.runway') + ' ' + @designator + ': ' + @visibility1.to_s() else I18n.t('metar.runway_visible_range.runway') + ' ' + @designator + ': ' + I18n.t('metar.runway_visible_range.from') + ' ' + @visibility1.to_s() + ' ' + I18n.t('metar.runway_visible_range.to') + ' ' + @visibility2.to_s() end s += ' ' + I18n.t("tendency.#{tendency}") if !tendency.nil? s end |