notam 1.1.5 → 1.2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f06e13965826e0726d6173f12ef55d15f66b683e868e10576547901935044be9
4
- data.tar.gz: 549209eab0d8ba3a04550af0ebbf851ef8d38b5cfb23d5db303789bb1ecd1257
3
+ metadata.gz: d1f6ca70e125218801ceb20789fc4753e9c661f8a34c051959c440e67046fd96
4
+ data.tar.gz: 6a29b9451886c77b9b50e64308a4bf366281c5b37a36db3473d54e95ad9a1463
5
5
  SHA512:
6
- metadata.gz: cabf5ba3d903aabe6f49a2d29a4bf5d9efe938ad29cc5af2147c23b5904c325d4dc7a0b9527f62ef3326d05f7d62f0465d4d0e2b034c4d4bc5645c69fd0bffe6
7
- data.tar.gz: 4d1d621b39980b07b30c219a1875010fa67386b45cb41059ca2054ed438efd05c45f1aed3b359f57abf9b0ec69813376d6f1d7e3e5ec28695064b121e0e0e0e8
6
+ metadata.gz: 3f44de736e5a038b821feaf563bc928d91bd869c2d4678df4ec7cdd540f4f668fe628402870ff61f21dc44212a1c0117dd2524752673ebe67f12c30681f6faeb
7
+ data.tar.gz: 6414d39731b2472c88a45322deff941854fc486e35b44362bf23d453cb3b4e520a549dfd2c6e45910b81bd19693ca8cc0e4595d8111929d7fb57368a7b90eed8
data/CHANGELOG.md CHANGED
@@ -2,71 +2,84 @@
2
2
 
3
3
  Nothing so far
4
4
 
5
+ ## 1.2.0
6
+
7
+ ### Changes
8
+ * Drop certs
9
+ * Add action for trusted release
10
+ * Update Q codes as per AIRAC 2412
11
+
12
+ ## 1.1.6
13
+
14
+ ### Changes
15
+ * Update Ruby to 3.4
16
+ * Add ignore list for fixtures broken upstream
17
+
5
18
  ## 1.1.5
6
19
 
7
- #### Changes
20
+ ### Changes
8
21
  * Add support for Ruby 3.3
9
22
 
10
23
  ## 1.1.4
11
24
 
12
- #### Changes
25
+ ### Changes
13
26
  * Drop obsolete countries gem
14
27
 
15
28
  ## 1.1.3
16
29
 
17
- #### Changes
30
+ ### Changes
18
31
  * Don't wrap years when breaking down date ranges
19
32
  * Allow HJ and HN in schedules
20
33
 
21
34
  ## 1.1.2
22
35
 
23
- #### Fixes
36
+ ### Fixes
24
37
  * Carry over last base date instead of first base date
25
38
 
26
39
  ## 1.1.1
27
40
 
28
- #### Fixes
41
+ ### Fixes
29
42
  * Carry over base date for multiple D-item elements which partially omit to
30
43
  mention the month in every element
31
44
 
32
45
  ## 1.1.0
33
46
 
34
- #### Additions
47
+ ### Additions
35
48
  * Extract subject group and condition group on Q item
36
49
 
37
50
  ## 1.0.0
38
51
 
39
- #### Breaking Changes
52
+ ### Breaking Changes
40
53
  * `NOTAM::Schedule.parse` now returns an array of `NOTAM_Schedule` instances
41
54
  instead of just a single one.
42
55
 
43
- #### Changes
56
+ ### Changes
44
57
  * Edge case tolerant extraction of `PART n OF n` and `END PART n OF n` markers
45
58
 
46
- #### Additions
59
+ ### Additions
47
60
  * Support for datetime ranges (i.e. `1 APR 2000-20 MAY 2000`) as well as times
48
61
  across midnight (i.e. `1 APR 1900-0500`) on D items.
49
62
  * Wrap all exceptions raised while parsing items.
50
63
 
51
64
  ## 0.1.3
52
65
 
53
- #### Fixes
66
+ ### Fixes
54
67
  * Reverse accidentally flipped F and G item.
55
68
 
56
69
  ## 0.1.2
57
70
 
58
- #### Changes
71
+ ### Changes
59
72
  * The five day schedules are calculated starting today if `effective_at` is
60
73
  in the past.
61
74
 
62
75
  ## 0.1.1
63
76
 
64
- #### Changes
77
+ ### Changes
65
78
  * Update dependency on AIXM gem
66
79
 
67
80
  ## 0.1.0
68
81
 
69
- #### Initial Implementation
82
+ ### Initial Implementation
70
83
  * Require Ruby 3.0
71
84
  * `NOTAM::Message` and `NOTAM::Item` (Header, Q, A-G, Footer)
72
85
  * `NOTAM::Schedule` with useful tools like `slice` and `resolve`
data/README.md CHANGED
@@ -1,27 +1,19 @@
1
1
  [![Version](https://img.shields.io/gem/v/notam.svg?style=flat)](https://rubygems.org/gems/notam)
2
2
  [![Tests](https://img.shields.io/github/actions/workflow/status/svoop/notam/test.yml?style=flat&label=tests)](https://github.com/svoop/notam/actions?workflow=Test)
3
3
  [![Code Climate](https://img.shields.io/codeclimate/maintainability/svoop/notam.svg?style=flat)](https://codeclimate.com/github/svoop/notam/)
4
- [![Donorbox](https://img.shields.io/badge/donate-on_donorbox-yellow.svg)](https://donorbox.org/bitcetera)
4
+ [![GitHub Sponsors](https://img.shields.io/github/sponsors/svoop.svg)](https://github.com/sponsors/svoop)
5
5
 
6
6
  # NOTAM
7
7
 
8
- Parser for [NOTAM (Notice to Airmen)](https://www.icao.int/safety/istars/pages/notams.aspx) messages in Ruby.
8
+ Parser for [NOTAM (Notice to Air Missions)](https://www.icao.int/safety/istars/pages/notams.aspx) messages in Ruby.
9
9
 
10
10
  * [Homepage](https://github.com/svoop/notam)
11
11
  * [API](https://www.rubydoc.info/gems/notam)
12
12
  * Author: [Sven Schwyn - Bitcetera](https://bitcetera.com)
13
13
 
14
- ## Install
15
-
16
- ### Security
17
-
18
- This gem is [cryptographically signed](https://guides.rubygems.org/security/#using-gems) in order to assure it hasn't been tampered with. Unless already done, please add the author's public key as a trusted certificate now:
19
-
20
- ```
21
- gem cert --add <(curl -Ls https://raw.github.com/svoop/notam/main/certs/svoop.pem)
22
- ```
14
+ Thank you for supporting free and open-source software by sponsoring on [GitHub](https://github.com/sponsors/svoop) or on [Donorbox](https://donorbox.com/bitcetera). Any gesture is appreciated, from a single Euro for a ☕️ cup of coffee to 🍹 early retirement.
23
15
 
24
- ### Bundler
16
+ ## Install
25
17
 
26
18
  Add the following to the `Gemfile` or `gems.rb` of your [Bundler](https://bundler.io) powered Ruby project:
27
19
 
@@ -32,7 +24,7 @@ gem 'notam'
32
24
  And then install the bundle:
33
25
 
34
26
  ```
35
- bundle install --trust-policy MediumSecurity
27
+ bundle install
36
28
  ```
37
29
 
38
30
  ## Usage
@@ -211,10 +203,9 @@ Parsed | `00:00` | `24:00` | the Ruby way
211
203
 
212
204
  ### References
213
205
 
214
- * [ICAO Doc 8126: Aeronautical Information Services Manual](https://www.icao.int/NACC/Documents/eDOCS/AIM/8126_unedited_en%20Jul2021.pdf)
206
+ * [ICAO Doc 8126: Aeronautical Information Services Manual](https://www.bazl.admin.ch/dam/bazl/de/dokumente/Fachleute/Regulationen_und_Grundlagen/icao-annex/ICAO%20doc%208126%20Aeronautical%20Information%20Services%20Manual%20%20.pdf.download.pdf/ICAO%20Doc%208126%20Aeronautical%20Information%20Services%20Manual.pdf)
215
207
  * [ICAO Doc 10066: Aeronautical Information Management](https://ffac.ch/wp-content/uploads/2020/11/ICAO-Doc-10066-Aeronautical-Information-Management.pdf)
216
208
  * [EUROCONTROL Guidelines Operating Procedures AIS Dynamic Data (OPADD)](https://www.eurocontrol.int/sites/default/files/2021-07/eurocontrol-guidelines-opadd-ed4-1.pdf)
217
- * [NOTAM Q Codes](https://www.faa.gov/air_traffic/publications/atpubs/notam_html/appendix_b.html)
218
209
  * [NOTAM Contractions](https://www.notams.faa.gov/downloads/contractions.pdf)
219
210
  * [NOTAM format cheat sheet](http://vat-air.dk/files/ICAO%20NOTAM%20format.pdf)
220
211
  * [Introduction on Wikipedia](https://en.wikipedia.org/wiki/NOTAM)
@@ -254,6 +245,10 @@ bundle exec guard # run tests whenever files are modified
254
245
 
255
246
  You're welcome to [submit issues](https://github.com/svoop/notam/issues) and contribute code by [forking the project and submitting pull requests](https://docs.github.com/en/get-started/quickstart/fork-a-repo).
256
247
 
248
+ ## Trivia
249
+
250
+ In the early days, the acronym [NOTAM](https://en.wikipedia.org/wiki/NOTAM) ment "Notice to Airmen". As many women roam the skies these days as well, it has finally been redefined as "Notice to Air Missions".
251
+
257
252
  ## License
258
253
 
259
254
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
data/lib/locales/en.yml CHANGED
@@ -431,7 +431,6 @@ en:
431
431
  rapid_exit_taxiway: "rapid exit taxiway"
432
432
  all_radio_navigation_facilities: "all radio navigation facilities"
433
433
  nondirectional_radio_beacon: "nondirectional radio beacon"
434
- decca: "DECCA"
435
434
  dme: "distance measuring equipment (DME)"
436
435
  fan_marker: "fan marker"
437
436
  locator: "locator"
@@ -494,6 +493,7 @@ en:
494
493
  banner_towing: "banner/target towing"
495
494
  ascent_of_free_balloon: "ascent of free balloon"
496
495
  missile_gun_firing: "missile/gun/rocket firing"
496
+ laser_emission: "laser emission"
497
497
  parachute_paragliding_or_hang_gliding: "parachute jumping/paragliding/hang gliding"
498
498
  radioactive_or_toxic_materials: "radioactive materials or toxic chemicals"
499
499
  blowing_gas: "burning or blowing gas"
@@ -502,7 +502,7 @@ en:
502
502
  formation_flight: "formation flight"
503
503
  volcanic_activity: "significant volcanic activity"
504
504
  aerial_survey: "aerial survey"
505
- model_flying: "model flying"
505
+ fireworks: "fireworks"
506
506
  other: "other"
507
507
  condition_groups:
508
508
  availability: "availabiity"
@@ -594,21 +594,21 @@ en:
594
594
  trigger: "trigger NOTAM"
595
595
  other: "other subject as specified in plain language"
596
596
  traffic:
597
- ifr_and_vfr: "IFR and VFR"
598
- ifr: "IFR"
599
- vfr: "VFR"
600
- checklist: "checklist of NOTAM"
597
+ ifr_and_vfr: "IFR and VFR"
598
+ ifr: "IFR"
599
+ vfr: "VFR"
600
+ checklist: "checklist of NOTAM"
601
601
  purposes:
602
- immediate_attention: "immediate attention of flight crews"
603
- operational_significance: "operational significance (PIB entry)"
604
- flight_operations: "concerning flight operations"
605
- miscellaneous: "miscellaneous (no PIB entry)"
606
- checklist: "checklist of NOTAM"
602
+ immediate_attention: "immediate attention of flight crews"
603
+ operational_significance: "operational significance (PIB entry)"
604
+ flight_operations: "concerning flight operations"
605
+ miscellaneous: "miscellaneous (no PIB entry)"
606
+ checklist: "checklist of NOTAM"
607
607
  scopes:
608
- aerodrome: "aerodrome"
609
- en_route: "en-route"
610
- navigation_warning: "navigation warning"
611
- checklist: "checklist of NOTAM"
608
+ aerodrome: "aerodrome"
609
+ en_route: "en-route"
610
+ navigation_warning: "navigation warning"
611
+ checklist: "checklist of NOTAM"
612
612
  contractions:
613
613
  airport_lighting: "airport lighting"
614
614
  braking_action_fair: "braking action fair"
@@ -829,7 +829,7 @@ en:
829
829
  nonstandard: "nonstandard"
830
830
  no_procedure_turn_required: "no procedure turn required"
831
831
  number: "number"
832
- notice_to_airmen_publication: "notice to airmen publication"
832
+ notice_to_air_missions_publication: "notice to air missions publication"
833
833
  northwest: "northwest"
834
834
  obscured: "obscured/obscure/obscuring"
835
835
  obstacle: "obstacle/obstruction"
@@ -118,9 +118,9 @@ module NOTAM
118
118
  # @return [String]
119
119
  def cleanup(string)
120
120
  string
121
- .gsub(/\s+/, ' ') # collapse whitespaces to single space
122
- .gsub(/ *- */, '-') # remove spaces around dashes
123
- .strip
121
+ .gsub(/\s+/, ' ') # collapse whitespaces to single space
122
+ .gsub(/ *- */, '-') # remove spaces around dashes
123
+ .strip
124
124
  end
125
125
 
126
126
  # @return [AIXM::Schedule::DateTime]
@@ -541,7 +541,6 @@ module NOTAM
541
541
  'MY' => :rapid_exit_taxiway,
542
542
  'NA' => :all_radio_navigation_facilities,
543
543
  'NB' => :nondirectional_radio_beacon,
544
- 'NC' => :decca,
545
544
  'ND' => :dme,
546
545
  'NF' => :fan_marker,
547
546
  'NL' => :locator,
@@ -604,6 +603,7 @@ module NOTAM
604
603
  'WJ' => :banner_towing,
605
604
  'WL' => :ascent_of_free_balloon,
606
605
  'WM' => :missile_gun_firing,
606
+ 'WO' => :laser_emission,
607
607
  'WP' => :parachute_paragliding_or_hang_gliding,
608
608
  'WR' => :radioactive_or_toxic_materials,
609
609
  'WS' => :blowing_gas,
@@ -612,7 +612,7 @@ module NOTAM
612
612
  'WV' => :formation_flight,
613
613
  'WW' => :volcanic_activity,
614
614
  'WY' => :aerial_survey,
615
- 'WZ' => :model_flying,
615
+ 'WZ' => :fireworks,
616
616
  'XX' => :other
617
617
  }.freeze
618
618
 
@@ -966,7 +966,7 @@ module NOTAM
966
966
  'NONSTD' => :nonstandard,
967
967
  'NOPT' => :no_procedure_turn_required,
968
968
  'NR' => :number,
969
- 'NTAP' => :notice_to_airmen_publication,
969
+ 'NTAP' => :notice_to_air_missions_publication,
970
970
  'NW' => :northwest,
971
971
  'OBSC' => :obscured,
972
972
  'OBST' => :obstacle,
@@ -1109,5 +1109,3 @@ module NOTAM
1109
1109
  }.freeze
1110
1110
 
1111
1111
  end
1112
-
1113
-
data/lib/notam/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module NOTAM
4
- VERSION = "1.1.5".freeze
4
+ VERSION = "1.2.0".freeze
5
5
  end
@@ -5,6 +5,9 @@ require_relative '../notam/translation'
5
5
 
6
6
  namespace :fixtures do
7
7
  DEFAULT_FIRS = 'ED,LF,LO,LS'
8
+ IGNORE = [
9
+ 'LFBB_R0188_24' # broken - duplicate F item
10
+ ]
8
11
 
9
12
  desc "Fetch new NOTAM fixtures for comma separated informal two letter ICAO FIR codes (default: #{DEFAULT_FIRS})"
10
13
  task :fetch, [:firs] do |_, args|
@@ -21,9 +24,11 @@ namespace :fixtures do
21
24
  response.body.scan(/<pre>(.+?)<\/pre>/im) do |message|
22
25
  message = message.first
23
26
  if NOTAM::Message.supported_format? message
27
+ next unless message.match %r{^(\w+?)/(\w+?)\s+\w+\s+Q\)\s+(\w+?)/}
28
+ name = [$3, $1, $2].join('_')
29
+ next if IGNORE.include? name
24
30
  counter += 1
25
- id = message.split(/\s/, 2).first.sub(/\W+/, '_')
26
- File.write(fixtures_path.join("#{id}.txt"), message)
31
+ File.write(fixtures_path.join(name + '.txt'), message)
27
32
  end
28
33
  end
29
34
  puts "#{counter} fixtures downloaded"
@@ -46,8 +51,8 @@ namespace :fixtures do
46
51
  end
47
52
  end
48
53
 
49
- desc "Clean current test NOTAM fixtures"
50
- task :clean do
54
+ desc "Clear current test NOTAM fixtures"
55
+ task :clear do
51
56
  fixtures_path.rmtree
52
57
  end
53
58
 
metadata CHANGED
@@ -1,33 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: notam
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.5
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sven Schwyn
8
- autorequire:
9
8
  bindir: bin
10
- cert_chain:
11
- - |
12
- -----BEGIN CERTIFICATE-----
13
- MIIC+jCCAeKgAwIBAgIBAjANBgkqhkiG9w0BAQsFADAjMSEwHwYDVQQDDBhydWJ5
14
- L0RDPWJpdGNldGVyYS9EQz1jb20wHhcNMjMxMTEwMTgyMzM2WhcNMjQxMTA5MTgy
15
- MzM2WjAjMSEwHwYDVQQDDBhydWJ5L0RDPWJpdGNldGVyYS9EQz1jb20wggEiMA0G
16
- CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDcLg+IHjXYaUlTSU7R235lQKD8ZhEe
17
- KMhoGlSUonZ/zo1OT3KXcqTCP1iMX743xYs6upEGALCWWwq+nxvlDdnWRjF3AAv7
18
- ikC+Z2BEowjyeCCT/0gvn4ohKcR0JOzzRaIlFUVInlGSAHx2QHZ2N8ntf54lu7nd
19
- L8CiDK8rClsY4JBNGOgH9UC81f+m61UUQuTLxyM2CXfAYkj/sGNTvFRJcNX+nfdC
20
- hM9r2kH1+7wsa8yG7wJ2IkrzNACD8v84oE6qVusN8OLEMUI/NaEPVPbw2LUM149H
21
- PVa0i729A4IhroNnFNmw4wOC93ARNbM1+LW36PLMmKjKudf5Exg8VmDVAgMBAAGj
22
- OTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBSfK8MtR62mQ6oN
23
- yoX/VKJzFjLSVDANBgkqhkiG9w0BAQsFAAOCAQEAXhT/LpMArF3JRcZSRkJDY+dU
24
- GKCRqOefi2iydqh1yIqXyTA9PGR1w5O6O+WS1FvF+sHCwh8fFjCuStg2L8V2RSeo
25
- aDtfZ5s80sL8wRFxg3kek69cBuI6ozU+rf9DaXlMES4i8+zASsdv9Y4a2BsbhEdE
26
- 9AtuMcWn5a45TOO0S4Q8OuV0v705V38Ow15J2RDRvkFRySt+//8/Vd57XAJxPXU0
27
- k/QvZU05f6HMYBrPogJgIzHC/C5N/yeE4BVEuBDn+10Zb1iu3aDk8sd0uMgukCY8
28
- TUmlP5A6NeGdeDJIoLgromAKs+nvI7TWzhQq9ODs51XhxgUFRCvBqUTpjTQigw==
29
- -----END CERTIFICATE-----
30
- date: 2024-01-13 00:00:00.000000000 Z
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
31
11
  dependencies:
32
12
  - !ruby/object:Gem::Dependency
33
13
  name: aixm
@@ -189,7 +169,7 @@ dependencies:
189
169
  - - ">="
190
170
  - !ruby/object:Gem::Version
191
171
  version: '0'
192
- description: 'Parser for NOTAM (Notice to Airmen) messages in Ruby.
172
+ description: 'Parser for NOTAM (Notice to Air Missions) messages in Ruby.
193
173
 
194
174
  '
195
175
  email:
@@ -197,9 +177,9 @@ email:
197
177
  executables: []
198
178
  extensions: []
199
179
  extra_rdoc_files:
200
- - README.md
201
180
  - CHANGELOG.md
202
181
  - LICENSE.txt
182
+ - README.md
203
183
  files:
204
184
  - CHANGELOG.md
205
185
  - LICENSE.txt
@@ -233,7 +213,6 @@ metadata:
233
213
  source_code_uri: https://github.com/svoop/notam
234
214
  documentation_uri: https://www.rubydoc.info/gems/notam
235
215
  bug_tracker_uri: https://github.com/svoop/notam/issues
236
- post_install_message:
237
216
  rdoc_options:
238
217
  - "--title"
239
218
  - NOTAM Parser
@@ -255,8 +234,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
255
234
  - !ruby/object:Gem::Version
256
235
  version: '0'
257
236
  requirements: []
258
- rubygems_version: 3.5.4
259
- signing_key:
237
+ rubygems_version: 3.6.9
260
238
  specification_version: 4
261
- summary: Parser for NOTAM (Notice to Airmen) messages
239
+ summary: Parser for NOTAM (Notice to Air Missions) messages
262
240
  test_files: []
checksums.yaml.gz.sig DELETED
@@ -1,5 +0,0 @@
1
- 2��L`FMם�JIw@uu?��У����6�0�
2
- ����N�=`���
3
- %TU�����}7�Z�ǫ
4
- Mx,,Ѝ|��G�=�$|I.|jQL��R�>Yꁈ�ICOE`S�HF�XJP�����ΫEBe�io\ 8�ft��n��—�9\��b ��?�YW�0A,D�D�}Vm�>��Q�@Tw�z�aM�T���
5
- ����7���<�Vt�O�h�z�2��>����� 2���� ��.��w��Vܒb�a
data.tar.gz.sig DELETED
Binary file
metadata.gz.sig DELETED
@@ -1,2 +0,0 @@
1
- A�'��vt���8��5���a�����$;d=�W�'|��a���Wp{�shP�B�e���JoY��# �_�#:�u� ��jr������8JZ�T�Z�]��̰�;�-�?_����[^R�H�a
2
- ��̺�nP�&l��Hɛ���"�ˠ