aixm 1.3.0 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +16 -0
- data/README.md +7 -0
- data/lib/aixm/classes.rb +1 -0
- data/lib/aixm/concerns/xml_builder.rb +4 -4
- data/lib/aixm/document.rb +6 -3
- data/lib/aixm/feature/airspace.rb +2 -0
- data/lib/aixm/feature/generic.rb +1 -1
- data/lib/aixm/refinements.rb +21 -22
- data/lib/aixm/schedule/date.rb +16 -0
- data/lib/aixm/schedule/date_time.rb +56 -0
- data/lib/aixm/schedule/day.rb +35 -4
- data/lib/aixm/schedule/time.rb +5 -1
- data/lib/aixm/shortcuts.rb +8 -2
- data/lib/aixm/version.rb +1 -1
- data/lib/aixm.rb +1 -0
- data.tar.gz.sig +1 -3
- metadata +22 -22
- metadata.gz.sig +0 -0
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 6fa3066c9e65afaa76e4327da9a11a42c27f1baad1a712de3fee6400765c0b6a
         | 
| 4 | 
            +
              data.tar.gz: 6c0d4261d076fddc05b150b5c1851a61ffa011ff6b8f15f254492987e4f80fb4
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 88bcefbea10f86f6f5b3c483f546197409dcd06b8751b8f0ced1d2e3730e27559a248486015a0673685d24afb04f306df4ea0acf3f14fe5347c3c9f89d72e23c
         | 
| 7 | 
            +
              data.tar.gz: 067ee1c2ffc6b251a9063982ee4e5d07492746aa0d780be020b46f549868992397348054c09d08704bb5e4744a0a78da8936ee739870822029a8eb32776c10c0
         | 
    
        checksums.yaml.gz.sig
    CHANGED
    
    | Binary file | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -2,16 +2,32 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            Nothing so far
         | 
| 4 4 |  | 
| 5 | 
            +
            ## 1.3.2
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            #### Changes
         | 
| 8 | 
            +
            * Add `#pred` (aliased `#prev`) and `#succ` (alias `#next`) to both
         | 
| 9 | 
            +
              `AIXM::Date` and `AIXM::Day` in order to use them for iterations
         | 
| 10 | 
            +
            * Pretty print generic features only to prevent segfaults on large documents
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            ## 1.3.1
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            #### Changes
         | 
| 15 | 
            +
            * Update certificate
         | 
| 16 | 
            +
             | 
| 5 17 | 
             
            ## 1.3.0
         | 
| 6 18 |  | 
| 7 19 | 
             
            #### Breaking Changes
         | 
| 8 20 | 
             
            * `Document#created_at` no longer falls back to `Document#effective_at`
         | 
| 21 | 
            +
            * Renamed `AIXM::Date#succ` to `AIXM::Date#next`
         | 
| 9 22 |  | 
| 10 23 | 
             
            #### Additions
         | 
| 11 24 | 
             
            * Refinement to pretty print Nokogiri XML documents
         | 
| 12 25 | 
             
            * XML comments on features (e.g. to include raw NOTAM)
         | 
| 13 26 | 
             
            * `Document#expiration_at` for OFMX
         | 
| 14 27 | 
             
            * Generic features as raw XML (e.g. extracted from another AIXM/OFMX file)
         | 
| 28 | 
            +
            * Convenience combinator `AIXM::Schedule::DateTime`
         | 
| 29 | 
            +
            * Shortcuts `AIXM::BEGINNING_OF_DAY` and `AIXM::END_OF_DAY`
         | 
| 30 | 
            +
            * `AIXM::Date#next` and `AIXM::Date#-`
         | 
| 15 31 |  | 
| 16 32 | 
             
            ## 1.2.1
         | 
| 17 33 |  | 
    
        data/README.md
    CHANGED
    
    | @@ -187,6 +187,13 @@ AIXM.config.ignored_errors = /invalid date/i | |
| 187 187 | 
             
            * [VASIS](https://www.rubydoc.info/gems/aixm/AIXM/Component/VASIS.html)
         | 
| 188 188 | 
             
            * [Vertical limit](https://www.rubydoc.info/gems/aixm/AIXM/Component/VerticalLimit.html)
         | 
| 189 189 |  | 
| 190 | 
            +
            ### Schedule
         | 
| 191 | 
            +
             | 
| 192 | 
            +
            * [Date](https://www.rubydoc.info/gems/aixm/AIXM/Schedule/Date.html)
         | 
| 193 | 
            +
            * [Day](https://www.rubydoc.info/gems/aixm/AIXM/Schedule/Day.html)
         | 
| 194 | 
            +
            * [Time](https://www.rubydoc.info/gems/aixm/AIXM/Schedule/Time.html)
         | 
| 195 | 
            +
            * [DateTime](https://www.rubydoc.info/gems/aixm/AIXM/Schedule/DateTime.html)
         | 
| 196 | 
            +
             | 
| 190 197 | 
             
            ## Associations
         | 
| 191 198 |  | 
| 192 199 | 
             
            The different models are interwoven with [`has_many` and `has_one` associations](https://www.rubydoc.info/gems/aixm/AIXM/Association).
         | 
    
        data/lib/aixm/classes.rb
    CHANGED
    
    | @@ -14,6 +14,7 @@ module AIXM | |
| 14 14 | 
             
                date: 'AIXM::Schedule::Date',
         | 
| 15 15 | 
             
                day: 'AIXM::Schedule::Day',
         | 
| 16 16 | 
             
                time: 'AIXM::Schedule::Time',
         | 
| 17 | 
            +
                datetime: 'AIXM::Schedule::DateTime',
         | 
| 17 18 | 
             
                address: 'AIXM::Component::Address',
         | 
| 18 19 | 
             
                approach_lighting: 'AIXM::Component::ApproachLighting',
         | 
| 19 20 | 
             
                organisation: 'AIXM::Feature::Organisation',
         | 
| @@ -10,11 +10,11 @@ module AIXM | |
| 10 10 | 
             
                  # @yield [Nokogiri::XML::Builder]
         | 
| 11 11 | 
             
                  # @return [Nokogiri::XML::DocumentFragment]
         | 
| 12 12 | 
             
                  def build_fragment
         | 
| 13 | 
            -
                    Nokogiri::XML::DocumentFragment.parse('').tap do | | 
| 14 | 
            -
                      Nokogiri::XML::Builder.with( | 
| 15 | 
            -
                        yield  | 
| 13 | 
            +
                    Nokogiri::XML::DocumentFragment.parse('').tap do |fragment|
         | 
| 14 | 
            +
                      Nokogiri::XML::Builder.with(fragment) do |builder|
         | 
| 15 | 
            +
                        yield builder
         | 
| 16 16 | 
             
                      end
         | 
| 17 | 
            -
                       | 
| 17 | 
            +
                      fragment.elements.each { _1.add_next_sibling("\n") }   # add newline between tags on top level
         | 
| 18 18 | 
             
                    end
         | 
| 19 19 | 
             
                  end
         | 
| 20 20 |  | 
    
        data/lib/aixm/document.rb
    CHANGED
    
    | @@ -168,10 +168,13 @@ module AIXM | |
| 168 168 | 
             
                    effective: @effective_at.xmlschema,
         | 
| 169 169 | 
             
                    expiration: (@expiration_at&.xmlschema if AIXM.ofmx?)
         | 
| 170 170 | 
             
                  }.compact
         | 
| 171 | 
            -
                  Nokogiri::XML::Builder.new do |builder|
         | 
| 171 | 
            +
                  Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |builder|
         | 
| 172 172 | 
             
                    builder.send(AIXM.schema(:root), meta) do |root|
         | 
| 173 | 
            +
                      root.text("\n")
         | 
| 173 174 | 
             
                      AIXM::Concerns::Memoize.method :to_uid do
         | 
| 174 | 
            -
                         | 
| 175 | 
            +
                        # TODO: indent is lost if added directly to the builder
         | 
| 176 | 
            +
                        # features.each { _1.add_to(root) }
         | 
| 177 | 
            +
                        features.each { root << _1.to_xml.indent(2) }
         | 
| 175 178 | 
             
                      end
         | 
| 176 179 | 
             
                      if AIXM.ofmx? && AIXM.config.mid
         | 
| 177 180 | 
             
                        AIXM::PayloadHash::Mid.new(builder.doc).insert_mid
         | 
| @@ -182,7 +185,7 @@ module AIXM | |
| 182 185 |  | 
| 183 186 | 
             
                # @return [String] AIXM or OFMX markup
         | 
| 184 187 | 
             
                def to_xml
         | 
| 185 | 
            -
                  document. | 
| 188 | 
            +
                  document.to_xml
         | 
| 186 189 | 
             
                end
         | 
| 187 190 | 
             
              end
         | 
| 188 191 | 
             
            end
         | 
| @@ -18,6 +18,8 @@ module AIXM | |
| 18 18 | 
             
                #   airspace.add_layer(AIXM.layer)
         | 
| 19 19 | 
             
                #   airspace.geometry.add_segment(AIXM.point or AIXM.arc or AIXM.border or AIXM.circle)
         | 
| 20 20 | 
             
                #
         | 
| 21 | 
            +
                # Timetables and remarks have to be set on the layer!
         | 
| 22 | 
            +
                #
         | 
| 21 23 | 
             
                # The +id+ is mandatory, however, you may omit it when initializing a new
         | 
| 22 24 | 
             
                # airspace or assign +nil+ to an existing airspace which will generate a 8
         | 
| 23 25 | 
             
                # character digest from +type+, +local_type+ and +name+.
         | 
    
        data/lib/aixm/feature/generic.rb
    CHANGED
    
    
    
        data/lib/aixm/refinements.rb
    CHANGED
    
    | @@ -129,33 +129,32 @@ module AIXM | |
| 129 129 | 
             
                  end
         | 
| 130 130 | 
             
                end
         | 
| 131 131 |  | 
| 132 | 
            -
                # @!method  | 
| 133 | 
            -
                #    | 
| 132 | 
            +
                # @!method to_pretty_xml
         | 
| 133 | 
            +
                #   Pretty printing alternative of +to_xml+
         | 
| 134 134 | 
             
                #
         | 
| 135 135 | 
             
                #   @example
         | 
| 136 136 | 
             
                #     xml = <<~END
         | 
| 137 | 
            -
                #       < | 
| 137 | 
            +
                #       <aaa></aaa>
         | 
| 138 138 | 
             
                #         <bbb/>
         | 
| 139 | 
            -
                # | 
| 140 | 
            -
                # | 
| 141 | 
            -
                # | 
| 142 | 
            -
                #       </ | 
| 139 | 
            +
                #       <ccc   foo="bar"  >
         | 
| 140 | 
            +
                #         <ddd>
         | 
| 141 | 
            +
                #       </ddd>
         | 
| 142 | 
            +
                #       </ccc>
         | 
| 143 143 | 
             
                #     END
         | 
| 144 | 
            -
                #     Nokogiri. | 
| 145 | 
            -
                #     # =>  | 
| 146 | 
            -
                #          < | 
| 147 | 
            -
                # | 
| 148 | 
            -
                #            < | 
| 149 | 
            -
                # | 
| 150 | 
            -
                # | 
| 151 | 
            -
                # | 
| 152 | 
            -
                # | 
| 153 | 
            -
                 | 
| 154 | 
            -
             | 
| 155 | 
            -
             | 
| 156 | 
            -
             | 
| 157 | 
            -
             | 
| 158 | 
            -
                    PRETTY_XSLT.transform(self)
         | 
| 144 | 
            +
                #     Nokogiri::XML::DocumentFragment.parse(xml).to_pretty_xml
         | 
| 145 | 
            +
                #     # => <aaa/>
         | 
| 146 | 
            +
                #          <bbb/>
         | 
| 147 | 
            +
                #          <ccc foo="bar">
         | 
| 148 | 
            +
                #            <ddd/>
         | 
| 149 | 
            +
                #          </ccc>
         | 
| 150 | 
            +
                #
         | 
| 151 | 
            +
                #   @note This is a refinement for +Nokogiri::XML::DocumentFragment+
         | 
| 152 | 
            +
                #   @return [String]
         | 
| 153 | 
            +
                refine Nokogiri::XML::DocumentFragment do
         | 
| 154 | 
            +
                  def to_pretty_xml
         | 
| 155 | 
            +
                    builder = Nokogiri::XML::Builder.new
         | 
| 156 | 
            +
                    builder.DocumentFragment { _1 << self.to_html }
         | 
| 157 | 
            +
                    AIXM::Refinements::PRETTY_XSLT.transform(builder.doc).at_css('DocumentFragment').children.map(&:to_xml).join("\n")
         | 
| 159 158 | 
             
                  end
         | 
| 160 159 | 
             
                end
         | 
| 161 160 |  | 
    
        data/lib/aixm/schedule/date.rb
    CHANGED
    
    | @@ -83,12 +83,28 @@ module AIXM | |
| 83 83 | 
             
                    self.class.new(date.strftime(yearless? ? '%m-%d' : '%F'))
         | 
| 84 84 | 
             
                  end
         | 
| 85 85 |  | 
| 86 | 
            +
                  # Create new date one day prior to this one.
         | 
| 87 | 
            +
                  #
         | 
| 88 | 
            +
                  # @return [AIXM::Schedule::Date]
         | 
| 89 | 
            +
                  def pred
         | 
| 90 | 
            +
                    self.class.new(date.prev_day.to_s.sub(/^-/, '')).at(year: (YEARLESS_YEAR if yearless?))
         | 
| 91 | 
            +
                  end
         | 
| 92 | 
            +
                  alias_method :prev, :pred
         | 
| 93 | 
            +
             | 
| 86 94 | 
             
                  # Create new date one day after this one.
         | 
| 87 95 | 
             
                  #
         | 
| 88 96 | 
             
                  # @return [AIXM::Schedule::Date]
         | 
| 89 97 | 
             
                  def succ
         | 
| 90 98 | 
             
                    self.class.new(date.next_day).at(year: (YEARLESS_YEAR if yearless?))
         | 
| 91 99 | 
             
                  end
         | 
| 100 | 
            +
                  alias_method :next, :succ
         | 
| 101 | 
            +
             | 
| 102 | 
            +
                  # Calculate difference in days between two dates.
         | 
| 103 | 
            +
                  #
         | 
| 104 | 
            +
                  # @return [Integer]
         | 
| 105 | 
            +
                  def -(date)
         | 
| 106 | 
            +
                    (self.date - date.date).to_i
         | 
| 107 | 
            +
                  end
         | 
| 92 108 |  | 
| 93 109 | 
             
                  # Convert date to day
         | 
| 94 110 | 
             
                  #
         | 
| @@ -0,0 +1,56 @@ | |
| 1 | 
            +
            using AIXM::Refinements
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module AIXM
         | 
| 4 | 
            +
              module Schedule
         | 
| 5 | 
            +
             | 
| 6 | 
            +
                # Datetimes suitable for schedules
         | 
| 7 | 
            +
                #
         | 
| 8 | 
            +
                # This class combines +AIXM::Schedule::Date+ and +AIXM::Schedule::Time+:
         | 
| 9 | 
            +
                #
         | 
| 10 | 
            +
                # @example
         | 
| 11 | 
            +
                #   datetime = AIXM.datetime('2022-04-20', '20:00')   # => 2022-04-20 20:00
         | 
| 12 | 
            +
                #   datetime.date         # => 2022-04-20
         | 
| 13 | 
            +
                #   datetime.date.class   # => AIXM::Schedule::Date
         | 
| 14 | 
            +
                #   datetime.time         # => 20:00
         | 
| 15 | 
            +
                #   datetime.time.class   # => AIXM::Schedule::Time
         | 
| 16 | 
            +
                class DateTime
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  # Date part
         | 
| 19 | 
            +
                  #
         | 
| 20 | 
            +
                  # @return [AIXM::Schedule::Date]
         | 
| 21 | 
            +
                  attr_reader :date
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  # Time part
         | 
| 24 | 
            +
                  #
         | 
| 25 | 
            +
                  # @return [AIXM::Schedule::Time]
         | 
| 26 | 
            +
                  attr_reader :time
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                  # Parse the given representation of date and time.
         | 
| 29 | 
            +
                  #
         | 
| 30 | 
            +
                  # @param date [AIXM::Schedule::Date]
         | 
| 31 | 
            +
                  # @param time [AIXM::Schedule::Time]
         | 
| 32 | 
            +
                  def initialize(date, time)
         | 
| 33 | 
            +
                    fail(ArgumentError, 'invalid date') unless date.instance_of? AIXM::Schedule::Date
         | 
| 34 | 
            +
                    fail(ArgumentError, 'invalid time') unless time.instance_of? AIXM::Schedule::Time
         | 
| 35 | 
            +
                    @date, @time = date, time
         | 
| 36 | 
            +
                  end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                  # Human readable representation such as "2002-05-19 20:00"
         | 
| 39 | 
            +
                  #
         | 
| 40 | 
            +
                  # @return [String]
         | 
| 41 | 
            +
                  def to_s
         | 
| 42 | 
            +
                    [@date.to_s, @time.to_s].join(' ')
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                  def inspect
         | 
| 46 | 
            +
                    %Q(#<#{self.class} #{to_s}>)
         | 
| 47 | 
            +
                  end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                  # @see Object#hash
         | 
| 50 | 
            +
                  def hash
         | 
| 51 | 
            +
                     [@date.hash, @time.hash].hash
         | 
| 52 | 
            +
                  end
         | 
| 53 | 
            +
                end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
              end
         | 
| 56 | 
            +
            end
         | 
    
        data/lib/aixm/schedule/day.rb
    CHANGED
    
    | @@ -13,8 +13,8 @@ module AIXM | |
| 13 13 | 
             
                  include AIXM::Concerns::HashEquality
         | 
| 14 14 | 
             
                  include Comparable
         | 
| 15 15 |  | 
| 16 | 
            -
                   | 
| 17 | 
            -
                   | 
| 16 | 
            +
                  WEEKDAYS = %i(sunday monday tuesday wednesday thursday friday saturday).freeze
         | 
| 17 | 
            +
                  DAYS =  (WEEKDAYS + %i(workday day_preceding_workday day_following_workday holiday day_preceding_holiday day_following_holiday any)).freeze
         | 
| 18 18 |  | 
| 19 19 | 
             
                  # Day of the week or special named day
         | 
| 20 20 | 
             
                  #
         | 
| @@ -31,7 +31,7 @@ module AIXM | |
| 31 31 | 
             
                      self.day = day
         | 
| 32 32 | 
             
                    when Integer
         | 
| 33 33 | 
             
                      fail ArgumentError unless day.between?(0, 6)
         | 
| 34 | 
            -
                      self.day =  | 
| 34 | 
            +
                      self.day = WEEKDAYS[day]
         | 
| 35 35 | 
             
                    else
         | 
| 36 36 | 
             
                      fail ArgumentError
         | 
| 37 37 | 
             
                    end
         | 
| @@ -44,10 +44,37 @@ module AIXM | |
| 44 44 | 
             
                    day.to_s.gsub('_', ' ')
         | 
| 45 45 | 
             
                  end
         | 
| 46 46 |  | 
| 47 | 
            +
                  # Symbol used to initialize this day
         | 
| 48 | 
            +
                  #
         | 
| 49 | 
            +
                  # @return [Symbol]
         | 
| 50 | 
            +
                  def to_sym
         | 
| 51 | 
            +
                    day.to_s.to_sym
         | 
| 52 | 
            +
                  end
         | 
| 53 | 
            +
             | 
| 47 54 | 
             
                  def inspect
         | 
| 48 55 | 
             
                    %Q(#<#{self.class} #{to_s}>)
         | 
| 49 56 | 
             
                  end
         | 
| 50 57 |  | 
| 58 | 
            +
                  # Create new day one day prior to this one.
         | 
| 59 | 
            +
                  #
         | 
| 60 | 
            +
                  # @return [AIXM::Schedule::Day]
         | 
| 61 | 
            +
                  def pred
         | 
| 62 | 
            +
                    return self if any?
         | 
| 63 | 
            +
                    fail(TypeError, "can't iterate from #{day}") unless wday
         | 
| 64 | 
            +
                    self.class.new(WEEKDAYS[wday.pred % 7])
         | 
| 65 | 
            +
                  end
         | 
| 66 | 
            +
                  alias_method :prev, :pred
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                  # Create new day one day after this one.
         | 
| 69 | 
            +
                  #
         | 
| 70 | 
            +
                  # @return [AIXM::Schedule::Day]
         | 
| 71 | 
            +
                  def succ
         | 
| 72 | 
            +
                    return self if any?
         | 
| 73 | 
            +
                    fail(TypeError, "can't iterate from #{day}") unless wday
         | 
| 74 | 
            +
                    self.class.new(WEEKDAYS[wday.succ % 7])
         | 
| 75 | 
            +
                  end
         | 
| 76 | 
            +
                  alias_method :next, :succ
         | 
| 77 | 
            +
             | 
| 51 78 | 
             
                  # Whether two days are equal.
         | 
| 52 79 | 
             
                  #
         | 
| 53 80 | 
             
                  # @return [Boolean]
         | 
| @@ -71,7 +98,7 @@ module AIXM | |
| 71 98 | 
             
                  #
         | 
| 72 99 | 
             
                  # @return [Boolean]
         | 
| 73 100 | 
             
                  def sortable?
         | 
| 74 | 
            -
                     | 
| 101 | 
            +
                    WEEKDAYS.include? day
         | 
| 75 102 | 
             
                  end
         | 
| 76 103 |  | 
| 77 104 | 
             
                  # Whether this schedule day falls within the given range of schedule
         | 
| @@ -104,6 +131,10 @@ module AIXM | |
| 104 131 | 
             
                    fail ArgumentError unless DAYS.include? @day
         | 
| 105 132 | 
             
                  end
         | 
| 106 133 |  | 
| 134 | 
            +
                  def wday
         | 
| 135 | 
            +
                    WEEKDAYS.index(day.to_sym)
         | 
| 136 | 
            +
                  end
         | 
| 137 | 
            +
             | 
| 107 138 | 
             
                  # @note Necessary to use this class in Range.
         | 
| 108 139 | 
             
                  def <=>(other)
         | 
| 109 140 | 
             
                    DAYS.index(day) <=> DAYS.index(other.day) || day.to_s <=> other.to_s
         | 
    
        data/lib/aixm/schedule/time.rb
    CHANGED
    
    | @@ -19,6 +19,10 @@ module AIXM | |
| 19 19 | 
             
                # @example
         | 
| 20 20 | 
             
                #   time = AIXM.time('21:30')                                  # => 21:30
         | 
| 21 21 | 
             
                #   time.covered_by?(AIXM.time('20:00')..AIXM.time('02:00'))   # => true
         | 
| 22 | 
            +
                #
         | 
| 23 | 
            +
                # ===Shortcuts:
         | 
| 24 | 
            +
                # * +AIXM::BEGINNING_OF_DAY+ - midnight expressed as "00:00"
         | 
| 25 | 
            +
                # * +AIXM::END_OF_DAY+ - midnight expressed as "24:00"
         | 
| 22 26 | 
             
                class Time
         | 
| 23 27 | 
             
                  include AIXM::Concerns::HashEquality
         | 
| 24 28 | 
             
                  extend Forwardable
         | 
| @@ -73,7 +77,7 @@ module AIXM | |
| 73 77 | 
             
                    case time_or_event
         | 
| 74 78 | 
             
                    when Symbol
         | 
| 75 79 | 
             
                      self.event = time_or_event
         | 
| 76 | 
            -
                    when ::Time, DateTime
         | 
| 80 | 
            +
                    when ::Time, ::DateTime
         | 
| 77 81 | 
             
                      time_or_event = time_or_event.to_time
         | 
| 78 82 | 
             
                      set_time(time_or_event.hour, time_or_event.min, time_or_event.utc_offset)
         | 
| 79 83 | 
             
                    when /\A(\d{2}):?(\d{2}) ?([+-]\d{2}:?\d{2}|UTC)?\z/
         | 
    
        data/lib/aixm/shortcuts.rb
    CHANGED
    
    | @@ -15,10 +15,16 @@ module AIXM | |
| 15 15 | 
             
              # Max flight level used to signal "no upper limit"
         | 
| 16 16 | 
             
              UNLIMITED = z(999, :qne).freeze
         | 
| 17 17 |  | 
| 18 | 
            +
              # Day to signal "whatever date or day"
         | 
| 19 | 
            +
              ANY_DAY = AIXM.day(:any).freeze
         | 
| 20 | 
            +
             | 
| 18 21 | 
             
              # Timetable used to signal "always active"
         | 
| 19 22 | 
             
              H24 = timetable(code: :H24).freeze
         | 
| 20 23 |  | 
| 21 | 
            -
              #  | 
| 22 | 
            -
               | 
| 24 | 
            +
              # Time which marks midnight at beginning of the day
         | 
| 25 | 
            +
              BEGINNING_OF_DAY = AIXM.time('00:00').freeze
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              # Time which marks midnight at end of the day
         | 
| 28 | 
            +
              END_OF_DAY = AIXM.time('24:00').freeze
         | 
| 23 29 |  | 
| 24 30 | 
             
            end
         | 
    
        data/lib/aixm/version.rb
    CHANGED
    
    
    
        data/lib/aixm.rb
    CHANGED
    
    | @@ -45,6 +45,7 @@ require_relative 'aixm/p' | |
| 45 45 | 
             
            require_relative 'aixm/schedule/date'
         | 
| 46 46 | 
             
            require_relative 'aixm/schedule/day'
         | 
| 47 47 | 
             
            require_relative 'aixm/schedule/time'
         | 
| 48 | 
            +
            require_relative 'aixm/schedule/date_time'
         | 
| 48 49 |  | 
| 49 50 | 
             
            require_relative 'aixm/component'
         | 
| 50 51 | 
             
            require_relative 'aixm/component/address'
         | 
    
        data.tar.gz.sig
    CHANGED
    
    | @@ -1,3 +1 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
            =sZ���/���!wv���cU�p��#�����]��yY��R	�S�O�S�	�����՚�af�5
         | 
| 3 | 
            -
            �?����"��8.�lCHv;���P�(��e.���m�v��7
         | 
| 1 | 
            +
            ����mL��h\S��g���o>;i��w%*�Uk��R��0��]Fl�D����l�w��f�i�Z�,��9�`�6w�$@*�3����H������{�Ut���VWu�l���~N��ݥzh�=l�簣�n"G���dYh�,w�_�E���v�2�^m�<XZ��o6�$���ųQ9��"㗨�;���������Ow�]�cD�2�j�Ts��f�u%�S�����1�D*O?��q��P)C4̈t��Z��
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: aixm
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.3. | 
| 4 | 
            +
              version: 1.3.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Sven Schwyn
         | 
| @@ -10,27 +10,26 @@ bindir: exe | |
| 10 10 | 
             
            cert_chain:
         | 
| 11 11 | 
             
            - |
         | 
| 12 12 | 
             
              -----BEGIN CERTIFICATE-----
         | 
| 13 | 
            -
               | 
| 14 | 
            -
               | 
| 15 | 
            -
               | 
| 16 | 
            -
               | 
| 17 | 
            -
               | 
| 18 | 
            -
               | 
| 19 | 
            -
               | 
| 20 | 
            -
               | 
| 21 | 
            -
               | 
| 22 | 
            -
               | 
| 23 | 
            -
               | 
| 24 | 
            -
               | 
| 25 | 
            -
               | 
| 26 | 
            -
               | 
| 27 | 
            -
               | 
| 28 | 
            -
               | 
| 29 | 
            -
               | 
| 30 | 
            -
               | 
| 31 | 
            -
              5JcY2h7owdMxXIvgk1oakgldFJc=
         | 
| 13 | 
            +
              MIIDODCCAiCgAwIBAgIBATANBgkqhkiG9w0BAQsFADAjMSEwHwYDVQQDDBhydWJ5
         | 
| 14 | 
            +
              L0RDPWJpdGNldGVyYS9EQz1jb20wHhcNMjIxMTA2MTIzNjUwWhcNMjMxMTA2MTIz
         | 
| 15 | 
            +
              NjUwWjAjMSEwHwYDVQQDDBhydWJ5L0RDPWJpdGNldGVyYS9EQz1jb20wggEiMA0G
         | 
| 16 | 
            +
              CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDcLg+IHjXYaUlTSU7R235lQKD8ZhEe
         | 
| 17 | 
            +
              KMhoGlSUonZ/zo1OT3KXcqTCP1iMX743xYs6upEGALCWWwq+nxvlDdnWRjF3AAv7
         | 
| 18 | 
            +
              ikC+Z2BEowjyeCCT/0gvn4ohKcR0JOzzRaIlFUVInlGSAHx2QHZ2N8ntf54lu7nd
         | 
| 19 | 
            +
              L8CiDK8rClsY4JBNGOgH9UC81f+m61UUQuTLxyM2CXfAYkj/sGNTvFRJcNX+nfdC
         | 
| 20 | 
            +
              hM9r2kH1+7wsa8yG7wJ2IkrzNACD8v84oE6qVusN8OLEMUI/NaEPVPbw2LUM149H
         | 
| 21 | 
            +
              PVa0i729A4IhroNnFNmw4wOC93ARNbM1+LW36PLMmKjKudf5Exg8VmDVAgMBAAGj
         | 
| 22 | 
            +
              dzB1MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBSfK8MtR62mQ6oN
         | 
| 23 | 
            +
              yoX/VKJzFjLSVDAdBgNVHREEFjAUgRJydWJ5QGJpdGNldGVyYS5jb20wHQYDVR0S
         | 
| 24 | 
            +
              BBYwFIEScnVieUBiaXRjZXRlcmEuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQAYG2na
         | 
| 25 | 
            +
              ye8OE2DANQIFM/xDos/E4DaPWCJjX5xvFKNKHMCeQYPeZvLICCwyw2paE7Otwk6p
         | 
| 26 | 
            +
              uvbg2Ks5ykXsbk5i6vxDoeeOLvmxCqI6m+tHb8v7VZtmwRJm8so0eSX0WvTaKnIf
         | 
| 27 | 
            +
              CAn1bVUggczVdNoBXw9WAILKyw9bvh3Ft740XZrR74sd+m2pGwjCaM8hzLvrVbGP
         | 
| 28 | 
            +
              DyYhlBeRWyQKQ0WDIsiTSRhzK8HwSTUWjvPwx7SEdIU/HZgyrk0ETObKPakVu6bH
         | 
| 29 | 
            +
              kAyiRqgxF4dJviwtqI7mZIomWL63+kXLgjOjMe1SHxfIPo/0ji6+r1p4KYa7o41v
         | 
| 30 | 
            +
              fwIwU1MKlFBdsjkd
         | 
| 32 31 | 
             
              -----END CERTIFICATE-----
         | 
| 33 | 
            -
            date: 2022- | 
| 32 | 
            +
            date: 2022-11-18 00:00:00.000000000 Z
         | 
| 34 33 | 
             
            dependencies:
         | 
| 35 34 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 36 35 | 
             
              name: nokogiri
         | 
| @@ -266,6 +265,7 @@ files: | |
| 266 265 | 
             
            - lib/aixm/r.rb
         | 
| 267 266 | 
             
            - lib/aixm/refinements.rb
         | 
| 268 267 | 
             
            - lib/aixm/schedule/date.rb
         | 
| 268 | 
            +
            - lib/aixm/schedule/date_time.rb
         | 
| 269 269 | 
             
            - lib/aixm/schedule/day.rb
         | 
| 270 270 | 
             
            - lib/aixm/schedule/time.rb
         | 
| 271 271 | 
             
            - lib/aixm/shortcuts.rb
         | 
| @@ -312,7 +312,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 312 312 | 
             
                - !ruby/object:Gem::Version
         | 
| 313 313 | 
             
                  version: '0'
         | 
| 314 314 | 
             
            requirements: []
         | 
| 315 | 
            -
            rubygems_version: 3.3. | 
| 315 | 
            +
            rubygems_version: 3.3.26
         | 
| 316 316 | 
             
            signing_key:
         | 
| 317 317 | 
             
            specification_version: 4
         | 
| 318 318 | 
             
            summary: Builder for AIXM/OFMX aeronautical information
         | 
    
        metadata.gz.sig
    CHANGED
    
    | Binary file |