aipp 0.2.5 → 0.2.6
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.tar.gz.sig +0 -0
- data/CHANGELOG.md +8 -0
- data/README.md +40 -14
- data/exe/aip2aixm +1 -1
- data/exe/aip2ofmx +1 -1
- data/lib/aipp.rb +2 -0
- data/lib/aipp/aip.rb +17 -12
- data/lib/aipp/downloader.rb +1 -1
- data/lib/aipp/executable.rb +15 -12
- data/lib/aipp/parser.rb +58 -43
- data/lib/aipp/pdf.rb +1 -1
- data/lib/aipp/regions/LF/AD-1.3.rb +7 -6
- data/lib/aipp/regions/LF/AD-1.6.rb +7 -5
- data/lib/aipp/regions/LF/AD-2.rb +16 -9
- data/lib/aipp/regions/LF/AD-3.1.rb +6 -6
- data/lib/aipp/regions/LF/ENR-2.1.rb +81 -6
- data/lib/aipp/regions/LF/ENR-4.1.rb +3 -1
- data/lib/aipp/regions/LF/ENR-4.3.rb +2 -3
- data/lib/aipp/regions/LF/ENR-5.1.rb +15 -2
- data/lib/aipp/regions/LF/ENR-5.4.rb +90 -0
- data/lib/aipp/regions/LF/ENR-5.5.rb +12 -10
- data/lib/aipp/regions/LF/fixtures/AD-1.3.yml +2 -2
- data/lib/aipp/regions/LF/helpers/base.rb +17 -9
- data/lib/aipp/regions/LF/helpers/radio_AD.rb +21 -13
- data/lib/aipp/t_hash.rb +3 -3
- data/lib/aipp/version.rb +1 -1
- data/lib/core_ext/enumerable.rb +7 -7
- data/lib/core_ext/string.rb +9 -4
- metadata +156 -168
- metadata.gz.sig +1 -0
- data/.github/workflows/test.yml +0 -26
- data/.gitignore +0 -8
- data/.ruby-version +0 -1
- data/.yardopts +0 -3
- data/Guardfile +0 -7
- data/TODO.md +0 -6
- data/aipp.gemspec +0 -45
- data/gems.rb +0 -3
- data/rakefile.rb +0 -12
- data/spec/fixtures/border.geojson +0 -201
- data/spec/fixtures/document.pdf +0 -0
- data/spec/fixtures/document.pdf.json +0 -1
- data/spec/fixtures/new.html +0 -6
- data/spec/fixtures/new.pdf +0 -0
- data/spec/fixtures/new.txt +0 -1
- data/spec/fixtures/source.zip +0 -0
- data/spec/lib/aipp/airac_spec.rb +0 -98
- data/spec/lib/aipp/border_spec.rb +0 -135
- data/spec/lib/aipp/downloader_spec.rb +0 -81
- data/spec/lib/aipp/patcher_spec.rb +0 -46
- data/spec/lib/aipp/pdf_spec.rb +0 -124
- data/spec/lib/aipp/t_hash_spec.rb +0 -44
- data/spec/lib/aipp/version_spec.rb +0 -7
- data/spec/lib/core_ext/enumberable_spec.rb +0 -76
- data/spec/lib/core_ext/hash_spec.rb +0 -27
- data/spec/lib/core_ext/integer_spec.rb +0 -15
- data/spec/lib/core_ext/nil_class_spec.rb +0 -11
- data/spec/lib/core_ext/string_spec.rb +0 -112
- data/spec/sounds/failure.mp3 +0 -0
- data/spec/sounds/success.mp3 +0 -0
- data/spec/spec_helper.rb +0 -29
@@ -99,7 +99,7 @@ module AIPP
|
|
99
99
|
|
100
100
|
def prepare(html:)
|
101
101
|
html.tap do |node|
|
102
|
-
node.css('del,
|
102
|
+
node.css('del, *[class*="AmdtDeletedAIRAC"]').each(&:remove) # remove deleted entries
|
103
103
|
end
|
104
104
|
end
|
105
105
|
|
@@ -141,16 +141,24 @@ module AIPP
|
|
141
141
|
end
|
142
142
|
end
|
143
143
|
|
144
|
+
def d_from(text)
|
145
|
+
case text
|
146
|
+
when nil then nil
|
147
|
+
when /(\d+)(\w+)/ then AIXM.d($1.to_i, $2.to_sym)
|
148
|
+
else fail "d `#{text}' not recognized"
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
144
152
|
def elevation_from(text)
|
145
153
|
value, unit = text.strip.split
|
146
154
|
AIXM.z(AIXM.d(value.to_i, unit).to_ft.dist, :qnh)
|
147
155
|
end
|
148
156
|
|
149
|
-
def layer_from(
|
150
|
-
above, below =
|
157
|
+
def layer_from(text_for_limit, text_for_class=nil)
|
158
|
+
above, below = text_for_limit.gsub(/ /, '').split(/\n+/).select(&:blank_to_nil).split { _1.match? '---+' }
|
151
159
|
AIXM.layer(
|
152
160
|
class: text_for_class,
|
153
|
-
|
161
|
+
vertical_limit: AIXM.vertical_limit(
|
154
162
|
upper_z: z_from(above[0]),
|
155
163
|
max_z: z_from(above[1]),
|
156
164
|
lower_z: z_from(below[0]),
|
@@ -165,23 +173,23 @@ module AIPP
|
|
165
173
|
text.gsub(/\s+/, ' ').strip.split(/ - /).append('end').each do |element|
|
166
174
|
case element
|
167
175
|
when /arc (anti-)?horaire .+ sur (\S+) , (\S+)/i
|
168
|
-
geometry
|
176
|
+
geometry.add_segment AIXM.arc(
|
169
177
|
xy: buffer.delete(:xy),
|
170
178
|
center_xy: AIXM.xy(lat: $2, long: $3),
|
171
179
|
clockwise: $1.nil?
|
172
180
|
)
|
173
181
|
when /cercle de ([\d\.]+) (NM|km|m) .+ sur (\S+) , (\S+)/i
|
174
|
-
geometry
|
182
|
+
geometry.add_segment AIXM.circle(
|
175
183
|
center_xy: AIXM.xy(lat: $3, long: $4),
|
176
184
|
radius: AIXM.d($1.to_f, $2)
|
177
185
|
)
|
178
186
|
when /end|(\S+) , (\S+)/
|
179
|
-
geometry
|
187
|
+
geometry.add_segment AIXM.point(xy: buffer[:xy]) if buffer.has_key?(:xy)
|
180
188
|
buffer[:xy] = AIXM.xy(lat: $1, long: $2) if $1
|
181
189
|
if border = buffer.delete(:border)
|
182
190
|
from = border.nearest(xy: geometry.segments.last.xy)
|
183
191
|
to = border.nearest(xy: buffer[:xy], geometry_index: from.geometry_index)
|
184
|
-
geometry.
|
192
|
+
geometry.add_segments border.segment(from_position: from, to_position: to).map(&:to_point)
|
185
193
|
end
|
186
194
|
when /^frontière ([\w-]+)/i, /^(\D[^(]+)/i
|
187
195
|
border_name = BORDERS.fetch($1.downcase.strip)
|
@@ -193,7 +201,7 @@ module AIPP
|
|
193
201
|
if border_name == 'FRANCE_SPAIN' # specify which part of this split border
|
194
202
|
border_name += buffer[:xy].lat < 42.55 ? '_EAST' : '_WEST'
|
195
203
|
end
|
196
|
-
geometry
|
204
|
+
geometry.add_segment AIXM.border(
|
197
205
|
xy: buffer.delete(:xy),
|
198
206
|
name: border_name
|
199
207
|
)
|
@@ -22,11 +22,12 @@ module AIPP
|
|
22
22
|
type = tds[0].text.strip
|
23
23
|
next if IGNORED_TYPES.include? type
|
24
24
|
f, callsign, _, remarks = parts_from(tds).values
|
25
|
+
callsign = callsign.split(/\n\s*/).join('/')
|
25
26
|
if ADDRESS_TYPES.include?(type)
|
26
27
|
AIXM.address(
|
27
28
|
source: source(position: tr.line),
|
28
29
|
type: :radio_frequency,
|
29
|
-
address: f.to_s
|
30
|
+
address: f.freq.to_s
|
30
31
|
).tap do |address|
|
31
32
|
address.remarks = ["#{type} - indicatif/callsign #{callsign}", remarks.blank_to_nil].compact.join("\n")
|
32
33
|
end
|
@@ -34,7 +35,7 @@ module AIPP
|
|
34
35
|
end.compact
|
35
36
|
end
|
36
37
|
|
37
|
-
def units_from(trs)
|
38
|
+
def units_from(trs, airport:)
|
38
39
|
return [] if trs.text.blank?
|
39
40
|
trs.each_with_object({}) do |tr, services|
|
40
41
|
tds = tr.css('td')
|
@@ -54,8 +55,10 @@ module AIPP
|
|
54
55
|
remarks = [SERVICE_TYPES.dig(type, :remarks), remarks.blank_to_nil].compact.join("\n")
|
55
56
|
end
|
56
57
|
unless services.include? type
|
58
|
+
@source = source(position: tr.line) # TODO
|
57
59
|
services[type] = AIXM.service(
|
58
|
-
|
60
|
+
# TODO: add source as soon as it is supported by components
|
61
|
+
# source: source(position: tr.line),
|
59
62
|
type: type
|
60
63
|
)
|
61
64
|
end
|
@@ -71,17 +74,22 @@ module AIPP
|
|
71
74
|
frequency.remarks = [remarks, timetable.blank_to_nil].compact.join("\n").cleanup.blank_to_nil
|
72
75
|
end
|
73
76
|
)
|
74
|
-
end.values.
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
77
|
+
end.values.each_with_object(AIXM::Association::Array.new) do |service, units|
|
78
|
+
type = service.guessed_unit_type
|
79
|
+
unit = units.find_by(:unit, name: airport.id, type: type).first
|
80
|
+
unless unit
|
81
|
+
unit = AIXM.unit(
|
82
|
+
source: @source, # TODO
|
83
|
+
organisation: organisation_lf, # TODO: not yet implemented
|
84
|
+
type: type,
|
85
|
+
name: airport.id,
|
86
|
+
class: :icao # TODO: verify whether all units are ICAO
|
87
|
+
).tap do |unit|
|
88
|
+
unit.airport = airport
|
89
|
+
end
|
90
|
+
units.send(:push, unit)
|
84
91
|
end
|
92
|
+
unit.add_service(service)
|
85
93
|
end
|
86
94
|
end
|
87
95
|
|
data/lib/aipp/t_hash.rb
CHANGED
@@ -19,13 +19,13 @@ module AIPP
|
|
19
19
|
alias_method :tsort_each_node, :each_key
|
20
20
|
|
21
21
|
def tsort_each_child(node, &block)
|
22
|
-
|
22
|
+
fetch(node).each(&block)
|
23
23
|
end
|
24
24
|
|
25
25
|
def tsort(node=nil)
|
26
26
|
if node
|
27
27
|
subhash = subhash_for node
|
28
|
-
super().select {
|
28
|
+
super().select { subhash.include? _1 }
|
29
29
|
else
|
30
30
|
super()
|
31
31
|
end
|
@@ -37,7 +37,7 @@ module AIPP
|
|
37
37
|
memo.tap do |m|
|
38
38
|
fail TSort::Cyclic if m.include? node
|
39
39
|
m << node
|
40
|
-
fetch(node).each {
|
40
|
+
fetch(node).each { subhash_for(_1, m) }
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
data/lib/aipp/version.rb
CHANGED
data/lib/core_ext/enumerable.rb
CHANGED
@@ -5,11 +5,11 @@ module Enumerable
|
|
5
5
|
# returning an array of these sub-enumerables.
|
6
6
|
#
|
7
7
|
# @example
|
8
|
-
# [1, 2, 0, 3, 4].split {
|
9
|
-
# [1, 2, 0, 3, 4].split(0)
|
10
|
-
# [0, 0, 1, 0, 2].split(0)
|
11
|
-
# [1, 0, 0, 2, 3].split(0)
|
12
|
-
# [1, 0, 2, 0, 0].split(0)
|
8
|
+
# [1, 2, 0, 3, 4].split { _1 == 0 } # => [[1, 2], [3, 4]]
|
9
|
+
# [1, 2, 0, 3, 4].split(0) # => [[1, 2], [3, 4]]
|
10
|
+
# [0, 0, 1, 0, 2].split(0) # => [[], [] [1], [2]]
|
11
|
+
# [1, 0, 0, 2, 3].split(0) # => [[1], [], [2], [3]]
|
12
|
+
# [1, 0, 2, 0, 0].split(0) # => [[1], [2]]
|
13
13
|
#
|
14
14
|
# @note While similar to +Array#split+ from ActiveSupport, this core
|
15
15
|
# extension works for all enumerables and therefore works fine with.
|
@@ -35,7 +35,7 @@ module Enumerable
|
|
35
35
|
# an array of subsequent elements which don't match the chunk condition.
|
36
36
|
#
|
37
37
|
# @example
|
38
|
-
# [1, 10, 11, 12, 2, 20, 21, 3, 30, 31, 32].group_by_chunks {
|
38
|
+
# [1, 10, 11, 12, 2, 20, 21, 3, 30, 31, 32].group_by_chunks { _1 < 10 }
|
39
39
|
# # => { 1 => [10, 11, 12], 2 => [20, 21], 3 => [30, 31, 32] }
|
40
40
|
#
|
41
41
|
# @note The first element must match the chunk condition.
|
@@ -46,7 +46,7 @@ module Enumerable
|
|
46
46
|
# @return [Hash]
|
47
47
|
def group_by_chunks
|
48
48
|
fail(ArgumentError, "first element must match chunk condition") unless yield(first)
|
49
|
-
slice_when {
|
49
|
+
slice_when { yield(_2) }.map { [_1.first, _1[1..]] }.to_h
|
50
50
|
end
|
51
51
|
|
52
52
|
end
|
data/lib/core_ext/string.rb
CHANGED
@@ -23,7 +23,7 @@ class String
|
|
23
23
|
gsub(/[#{AIXM::MIN}]{2}|[#{AIXM::SEC}]/, '"'). # unify quotes
|
24
24
|
gsub(/[#{AIXM::MIN}]/, "'"). # unify apostrophes
|
25
25
|
gsub(/"[[:blank:]]*(.*?)[[:blank:]]*"/m, '"\1"'). # remove whitespace within quotes
|
26
|
-
split(/\r?\n/).map {
|
26
|
+
split(/\r?\n/).map { _1.strip.blank_to_nil }.compact.join("\n") # remove blank lines
|
27
27
|
end
|
28
28
|
|
29
29
|
# Strip and collapse unnecessary whitespace
|
@@ -36,7 +36,7 @@ class String
|
|
36
36
|
#
|
37
37
|
# @return [String] compacted string
|
38
38
|
def compact
|
39
|
-
split("\n").map {
|
39
|
+
split("\n").map { _1.squish.blank_to_nil }.compact.join("\n")
|
40
40
|
end
|
41
41
|
|
42
42
|
# Calculate the correlation of two strings by counting mutual words
|
@@ -79,8 +79,8 @@ class String
|
|
79
79
|
gsub(/\b(\w)\s?(\d+)\b/, '\1\2').
|
80
80
|
compact.
|
81
81
|
split(/\W+/).
|
82
|
-
map {
|
83
|
-
keep_if {
|
82
|
+
map { (i = synonyms.index(_1)).nil? ? _1 : (i.odd? ? _1 : synonyms[i + 1]).upcase }.
|
83
|
+
keep_if { _1.match?(/\w{5,}|\w\d+|[[:upper:]]/) }.
|
84
84
|
uniq
|
85
85
|
end
|
86
86
|
(self_words & other_words).count
|
@@ -92,6 +92,11 @@ class String
|
|
92
92
|
remove(/\A[^\p{L}\p{N}]*|[^\p{L}\p{N}]*\z/)
|
93
93
|
end
|
94
94
|
|
95
|
+
# Similar to +scan+, but remove matches from the string
|
96
|
+
def extract(pattern)
|
97
|
+
scan(pattern).tap { remove! pattern }
|
98
|
+
end
|
99
|
+
|
95
100
|
# Same as +to_f+ but accept both dot and comma as decimal separator
|
96
101
|
#
|
97
102
|
# @example
|
metadata
CHANGED
@@ -1,317 +1,337 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aipp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sven Schwyn
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
|
-
cert_chain:
|
11
|
-
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDcDCCAligAwIBAgIBATANBgkqhkiG9w0BAQUFADA/MQ0wCwYDVQQDDARydWJ5
|
14
|
+
MRkwFwYKCZImiZPyLGQBGRYJYml0Y2V0ZXJhMRMwEQYKCZImiZPyLGQBGRYDY29t
|
15
|
+
MB4XDTIwMDMxNDE5NDgwNVoXDTIxMDMxNDE5NDgwNVowPzENMAsGA1UEAwwEcnVi
|
16
|
+
eTEZMBcGCgmSJomT8ixkARkWCWJpdGNldGVyYTETMBEGCgmSJomT8ixkARkWA2Nv
|
17
|
+
bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL4k2DCa8/eAFiak4Kwe
|
18
|
+
0Iu8dk0JfHWeywjVVSNv6PtnQ96B/1jLmw5Wb+xYJSyvG6KEOzEMWA/lqO+nIrdO
|
19
|
+
2LDRxuWojH5GROp/dtQ+SxsWlvui4cs9iBmI5Mj0mc1UgST3UFf60ry8OnyR+E9N
|
20
|
+
RVVZZykAGmxwyAqD1aq5Yt0lZMdvrGnaLWcZdKC99e812pdTN948k8Iw2GJAaNtH
|
21
|
+
Tp17XDfDNBANHjYy9xCqrxvNTfT4Bs43rPA1A77+mkPgI2Vx51u2CWA+K3hP4gAZ
|
22
|
+
F50xqnagzgXSOzCme1mC/sUUmoAAB39g2CuNocWuhv0R3/HeqdwAsA/1XpDF2NfQ
|
23
|
+
zW8CAwEAAaN3MHUwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFDfY
|
24
|
+
gRWUI+J6nX7Po7Zq0zvDopfYMB0GA1UdEQQWMBSBEnJ1YnlAYml0Y2V0ZXJhLmNv
|
25
|
+
bTAdBgNVHRIEFjAUgRJydWJ5QGJpdGNldGVyYS5jb20wDQYJKoZIhvcNAQEFBQAD
|
26
|
+
ggEBAFsTSBbxIkTdppL8yFl0KglyUMq9DjkMwvz7ORJzHMfw1S2OmXMYnJ5fSXFu
|
27
|
+
C/9puwYMdD6V3THyqc1Rhj6RRZ/576MDwIXMgOETQfPTT6jNE+p4cRougDrQ32aV
|
28
|
+
29WIAY21/o0FBuJZqxLDRTu6O7AHrjFnv7Kkpr1oYiR9G4MNEihyNt909nHnSixC
|
29
|
+
qn5dLDjawWVvAz5oeD1sE0Kyp6CDY8i3NfBu4aqz8uAbaEJh3jpY5NW2Lv++s7hf
|
30
|
+
EUqN8dad5Oosf9hYbfFXPzkJIIGiKMS4e1cbnAr/vadELoccfEN9tSlLuW/voNqA
|
31
|
+
2635TmaVXxUEgIOzRhGlE1+frXI=
|
32
|
+
-----END CERTIFICATE-----
|
33
|
+
date: 2020-03-15 00:00:00.000000000 Z
|
12
34
|
dependencies:
|
13
35
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
36
|
+
name: aixm
|
15
37
|
requirement: !ruby/object:Gem::Requirement
|
16
38
|
requirements:
|
17
39
|
- - ">="
|
18
40
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
20
|
-
type: :
|
41
|
+
version: 0.3.10
|
42
|
+
type: :runtime
|
21
43
|
prerelease: false
|
22
44
|
version_requirements: !ruby/object:Gem::Requirement
|
23
45
|
requirements:
|
24
46
|
- - ">="
|
25
47
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
48
|
+
version: 0.3.10
|
27
49
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
50
|
+
name: activesupport
|
29
51
|
requirement: !ruby/object:Gem::Requirement
|
30
52
|
requirements:
|
31
|
-
- - "
|
53
|
+
- - "~>"
|
32
54
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
34
|
-
type: :
|
55
|
+
version: '5'
|
56
|
+
type: :runtime
|
35
57
|
prerelease: false
|
36
58
|
version_requirements: !ruby/object:Gem::Requirement
|
37
59
|
requirements:
|
38
|
-
- - "
|
60
|
+
- - "~>"
|
39
61
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
62
|
+
version: '5'
|
41
63
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
64
|
+
name: nokogiri
|
43
65
|
requirement: !ruby/object:Gem::Requirement
|
44
66
|
requirements:
|
45
|
-
- - "
|
67
|
+
- - "~>"
|
46
68
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
48
|
-
type: :
|
69
|
+
version: '1'
|
70
|
+
type: :runtime
|
49
71
|
prerelease: false
|
50
72
|
version_requirements: !ruby/object:Gem::Requirement
|
51
73
|
requirements:
|
52
|
-
- - "
|
74
|
+
- - "~>"
|
53
75
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
76
|
+
version: '1'
|
55
77
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
78
|
+
name: nokogumbo
|
57
79
|
requirement: !ruby/object:Gem::Requirement
|
58
80
|
requirements:
|
59
|
-
- - "
|
81
|
+
- - "~>"
|
60
82
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
62
|
-
type: :
|
83
|
+
version: '2'
|
84
|
+
type: :runtime
|
63
85
|
prerelease: false
|
64
86
|
version_requirements: !ruby/object:Gem::Requirement
|
65
87
|
requirements:
|
66
|
-
- - "
|
88
|
+
- - "~>"
|
67
89
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
90
|
+
version: '2'
|
69
91
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
92
|
+
name: pdf-reader
|
71
93
|
requirement: !ruby/object:Gem::Requirement
|
72
94
|
requirements:
|
73
|
-
- - "
|
95
|
+
- - "~>"
|
74
96
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
76
|
-
type: :
|
97
|
+
version: '2'
|
98
|
+
type: :runtime
|
77
99
|
prerelease: false
|
78
100
|
version_requirements: !ruby/object:Gem::Requirement
|
79
101
|
requirements:
|
80
|
-
- - "
|
102
|
+
- - "~>"
|
81
103
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
104
|
+
version: '2'
|
83
105
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
106
|
+
name: json
|
85
107
|
requirement: !ruby/object:Gem::Requirement
|
86
108
|
requirements:
|
87
|
-
- - "
|
109
|
+
- - "~>"
|
88
110
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
90
|
-
type: :
|
111
|
+
version: '2'
|
112
|
+
type: :runtime
|
91
113
|
prerelease: false
|
92
114
|
version_requirements: !ruby/object:Gem::Requirement
|
93
115
|
requirements:
|
94
|
-
- - "
|
116
|
+
- - "~>"
|
95
117
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
118
|
+
version: '2'
|
97
119
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
120
|
+
name: rubyzip
|
99
121
|
requirement: !ruby/object:Gem::Requirement
|
100
122
|
requirements:
|
101
|
-
- - "
|
123
|
+
- - "~>"
|
102
124
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
104
|
-
type: :
|
125
|
+
version: '2'
|
126
|
+
type: :runtime
|
105
127
|
prerelease: false
|
106
128
|
version_requirements: !ruby/object:Gem::Requirement
|
107
129
|
requirements:
|
108
|
-
- - "
|
130
|
+
- - "~>"
|
109
131
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
132
|
+
version: '2'
|
111
133
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
134
|
+
name: colorize
|
113
135
|
requirement: !ruby/object:Gem::Requirement
|
114
136
|
requirements:
|
115
|
-
- - "
|
137
|
+
- - "~>"
|
116
138
|
- !ruby/object:Gem::Version
|
117
139
|
version: '0'
|
118
|
-
type: :
|
140
|
+
type: :runtime
|
119
141
|
prerelease: false
|
120
142
|
version_requirements: !ruby/object:Gem::Requirement
|
121
143
|
requirements:
|
122
|
-
- - "
|
144
|
+
- - "~>"
|
123
145
|
- !ruby/object:Gem::Version
|
124
146
|
version: '0'
|
125
147
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
148
|
+
name: pry
|
127
149
|
requirement: !ruby/object:Gem::Requirement
|
128
150
|
requirements:
|
129
|
-
- - "
|
151
|
+
- - "~>"
|
130
152
|
- !ruby/object:Gem::Version
|
131
153
|
version: '0'
|
132
|
-
type: :
|
154
|
+
type: :runtime
|
133
155
|
prerelease: false
|
134
156
|
version_requirements: !ruby/object:Gem::Requirement
|
135
157
|
requirements:
|
136
|
-
- - "
|
158
|
+
- - "~>"
|
137
159
|
- !ruby/object:Gem::Version
|
138
160
|
version: '0'
|
139
161
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
162
|
+
name: pry-rescue
|
141
163
|
requirement: !ruby/object:Gem::Requirement
|
142
164
|
requirements:
|
143
|
-
- - "
|
165
|
+
- - "~>"
|
144
166
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
167
|
+
version: '1'
|
146
168
|
type: :runtime
|
147
169
|
prerelease: false
|
148
170
|
version_requirements: !ruby/object:Gem::Requirement
|
149
171
|
requirements:
|
150
|
-
- - "
|
172
|
+
- - "~>"
|
151
173
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
174
|
+
version: '1'
|
153
175
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
176
|
+
name: pry-stack_explorer
|
155
177
|
requirement: !ruby/object:Gem::Requirement
|
156
178
|
requirements:
|
157
179
|
- - "~>"
|
158
180
|
- !ruby/object:Gem::Version
|
159
|
-
version: '
|
181
|
+
version: '0'
|
160
182
|
type: :runtime
|
161
183
|
prerelease: false
|
162
184
|
version_requirements: !ruby/object:Gem::Requirement
|
163
185
|
requirements:
|
164
186
|
- - "~>"
|
165
187
|
- !ruby/object:Gem::Version
|
166
|
-
version: '
|
188
|
+
version: '0'
|
167
189
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
190
|
+
name: rake
|
169
191
|
requirement: !ruby/object:Gem::Requirement
|
170
192
|
requirements:
|
171
|
-
- - "
|
193
|
+
- - ">="
|
172
194
|
- !ruby/object:Gem::Version
|
173
|
-
version: '
|
174
|
-
type: :
|
195
|
+
version: '0'
|
196
|
+
type: :development
|
175
197
|
prerelease: false
|
176
198
|
version_requirements: !ruby/object:Gem::Requirement
|
177
199
|
requirements:
|
178
|
-
- - "
|
200
|
+
- - ">="
|
179
201
|
- !ruby/object:Gem::Version
|
180
|
-
version: '
|
202
|
+
version: '0'
|
181
203
|
- !ruby/object:Gem::Dependency
|
182
|
-
name:
|
204
|
+
name: minitest
|
183
205
|
requirement: !ruby/object:Gem::Requirement
|
184
206
|
requirements:
|
185
|
-
- - "
|
207
|
+
- - ">="
|
186
208
|
- !ruby/object:Gem::Version
|
187
|
-
version: '
|
188
|
-
type: :
|
209
|
+
version: '0'
|
210
|
+
type: :development
|
189
211
|
prerelease: false
|
190
212
|
version_requirements: !ruby/object:Gem::Requirement
|
191
213
|
requirements:
|
192
|
-
- - "
|
214
|
+
- - ">="
|
193
215
|
- !ruby/object:Gem::Version
|
194
|
-
version: '
|
216
|
+
version: '0'
|
195
217
|
- !ruby/object:Gem::Dependency
|
196
|
-
name:
|
218
|
+
name: minitest-reporters
|
197
219
|
requirement: !ruby/object:Gem::Requirement
|
198
220
|
requirements:
|
199
|
-
- - "
|
221
|
+
- - ">="
|
200
222
|
- !ruby/object:Gem::Version
|
201
|
-
version: '
|
202
|
-
type: :
|
223
|
+
version: '0'
|
224
|
+
type: :development
|
203
225
|
prerelease: false
|
204
226
|
version_requirements: !ruby/object:Gem::Requirement
|
205
227
|
requirements:
|
206
|
-
- - "
|
228
|
+
- - ">="
|
207
229
|
- !ruby/object:Gem::Version
|
208
|
-
version: '
|
230
|
+
version: '0'
|
209
231
|
- !ruby/object:Gem::Dependency
|
210
|
-
name:
|
232
|
+
name: minitest-sound
|
211
233
|
requirement: !ruby/object:Gem::Requirement
|
212
234
|
requirements:
|
213
|
-
- - "
|
235
|
+
- - ">="
|
214
236
|
- !ruby/object:Gem::Version
|
215
|
-
version: '
|
216
|
-
type: :
|
237
|
+
version: '0'
|
238
|
+
type: :development
|
217
239
|
prerelease: false
|
218
240
|
version_requirements: !ruby/object:Gem::Requirement
|
219
241
|
requirements:
|
220
|
-
- - "
|
242
|
+
- - ">="
|
221
243
|
- !ruby/object:Gem::Version
|
222
|
-
version: '
|
244
|
+
version: '0'
|
223
245
|
- !ruby/object:Gem::Dependency
|
224
|
-
name:
|
246
|
+
name: minitest-focus
|
225
247
|
requirement: !ruby/object:Gem::Requirement
|
226
248
|
requirements:
|
227
|
-
- - "
|
249
|
+
- - ">="
|
228
250
|
- !ruby/object:Gem::Version
|
229
|
-
version: '
|
230
|
-
type: :
|
251
|
+
version: '0'
|
252
|
+
type: :development
|
231
253
|
prerelease: false
|
232
254
|
version_requirements: !ruby/object:Gem::Requirement
|
233
255
|
requirements:
|
234
|
-
- - "
|
256
|
+
- - ">="
|
235
257
|
- !ruby/object:Gem::Version
|
236
|
-
version: '
|
258
|
+
version: '0'
|
237
259
|
- !ruby/object:Gem::Dependency
|
238
|
-
name:
|
260
|
+
name: minitest-matchers
|
239
261
|
requirement: !ruby/object:Gem::Requirement
|
240
262
|
requirements:
|
241
|
-
- - "
|
263
|
+
- - ">="
|
242
264
|
- !ruby/object:Gem::Version
|
243
265
|
version: '0'
|
244
|
-
type: :
|
266
|
+
type: :development
|
245
267
|
prerelease: false
|
246
268
|
version_requirements: !ruby/object:Gem::Requirement
|
247
269
|
requirements:
|
248
|
-
- - "
|
270
|
+
- - ">="
|
249
271
|
- !ruby/object:Gem::Version
|
250
272
|
version: '0'
|
251
273
|
- !ruby/object:Gem::Dependency
|
252
|
-
name:
|
274
|
+
name: spy
|
253
275
|
requirement: !ruby/object:Gem::Requirement
|
254
276
|
requirements:
|
255
|
-
- - "
|
277
|
+
- - ">="
|
256
278
|
- !ruby/object:Gem::Version
|
257
279
|
version: '0'
|
258
|
-
type: :
|
280
|
+
type: :development
|
259
281
|
prerelease: false
|
260
282
|
version_requirements: !ruby/object:Gem::Requirement
|
261
283
|
requirements:
|
262
|
-
- - "
|
284
|
+
- - ">="
|
263
285
|
- !ruby/object:Gem::Version
|
264
286
|
version: '0'
|
265
287
|
- !ruby/object:Gem::Dependency
|
266
|
-
name:
|
288
|
+
name: guard
|
267
289
|
requirement: !ruby/object:Gem::Requirement
|
268
290
|
requirements:
|
269
|
-
- - "
|
291
|
+
- - ">="
|
270
292
|
- !ruby/object:Gem::Version
|
271
|
-
version: '
|
272
|
-
type: :
|
293
|
+
version: '0'
|
294
|
+
type: :development
|
273
295
|
prerelease: false
|
274
296
|
version_requirements: !ruby/object:Gem::Requirement
|
275
297
|
requirements:
|
276
|
-
- - "
|
298
|
+
- - ">="
|
277
299
|
- !ruby/object:Gem::Version
|
278
|
-
version: '
|
300
|
+
version: '0'
|
279
301
|
- !ruby/object:Gem::Dependency
|
280
|
-
name:
|
302
|
+
name: guard-minitest
|
281
303
|
requirement: !ruby/object:Gem::Requirement
|
282
304
|
requirements:
|
283
|
-
- - "
|
305
|
+
- - ">="
|
284
306
|
- !ruby/object:Gem::Version
|
285
307
|
version: '0'
|
286
|
-
type: :
|
308
|
+
type: :development
|
287
309
|
prerelease: false
|
288
310
|
version_requirements: !ruby/object:Gem::Requirement
|
289
311
|
requirements:
|
290
|
-
- - "
|
312
|
+
- - ">="
|
291
313
|
- !ruby/object:Gem::Version
|
292
314
|
version: '0'
|
293
|
-
description:
|
315
|
+
description: |
|
316
|
+
Parse public AIP (Aeronautical Information Publication) and convert the data
|
317
|
+
to either AIXM (Aeronautical Information Exchange Model) or OFMX (Open
|
318
|
+
FlightMaps eXchange).
|
294
319
|
email:
|
295
320
|
- ruby@bitcetera.com
|
296
321
|
executables:
|
297
322
|
- aip2aixm
|
298
323
|
- aip2ofmx
|
299
324
|
extensions: []
|
300
|
-
extra_rdoc_files:
|
325
|
+
extra_rdoc_files:
|
326
|
+
- README.md
|
327
|
+
- CHANGELOG.md
|
328
|
+
- LICENSE.txt
|
301
329
|
files:
|
302
|
-
- ".github/workflows/test.yml"
|
303
|
-
- ".gitignore"
|
304
|
-
- ".ruby-version"
|
305
|
-
- ".yardopts"
|
306
330
|
- CHANGELOG.md
|
307
|
-
- Guardfile
|
308
331
|
- LICENSE.txt
|
309
332
|
- README.md
|
310
|
-
- TODO.md
|
311
|
-
- aipp.gemspec
|
312
333
|
- exe/aip2aixm
|
313
334
|
- exe/aip2ofmx
|
314
|
-
- gems.rb
|
315
335
|
- lib/aipp.rb
|
316
336
|
- lib/aipp/aip.rb
|
317
337
|
- lib/aipp/airac.rb
|
@@ -329,6 +349,7 @@ files:
|
|
329
349
|
- lib/aipp/regions/LF/ENR-4.1.rb
|
330
350
|
- lib/aipp/regions/LF/ENR-4.3.rb
|
331
351
|
- lib/aipp/regions/LF/ENR-5.1.rb
|
352
|
+
- lib/aipp/regions/LF/ENR-5.4.rb
|
332
353
|
- lib/aipp/regions/LF/ENR-5.5.rb
|
333
354
|
- lib/aipp/regions/LF/borders/france_atlantic_coast.geojson
|
334
355
|
- lib/aipp/regions/LF/borders/france_atlantic_territorial_sea.geojson
|
@@ -349,72 +370,39 @@ files:
|
|
349
370
|
- lib/core_ext/nil_class.rb
|
350
371
|
- lib/core_ext/object.rb
|
351
372
|
- lib/core_ext/string.rb
|
352
|
-
- rakefile.rb
|
353
|
-
- spec/fixtures/border.geojson
|
354
|
-
- spec/fixtures/document.pdf
|
355
|
-
- spec/fixtures/document.pdf.json
|
356
|
-
- spec/fixtures/new.html
|
357
|
-
- spec/fixtures/new.pdf
|
358
|
-
- spec/fixtures/new.txt
|
359
|
-
- spec/fixtures/source.zip
|
360
|
-
- spec/lib/aipp/airac_spec.rb
|
361
|
-
- spec/lib/aipp/border_spec.rb
|
362
|
-
- spec/lib/aipp/downloader_spec.rb
|
363
|
-
- spec/lib/aipp/patcher_spec.rb
|
364
|
-
- spec/lib/aipp/pdf_spec.rb
|
365
|
-
- spec/lib/aipp/t_hash_spec.rb
|
366
|
-
- spec/lib/aipp/version_spec.rb
|
367
|
-
- spec/lib/core_ext/enumberable_spec.rb
|
368
|
-
- spec/lib/core_ext/hash_spec.rb
|
369
|
-
- spec/lib/core_ext/integer_spec.rb
|
370
|
-
- spec/lib/core_ext/nil_class_spec.rb
|
371
|
-
- spec/lib/core_ext/string_spec.rb
|
372
|
-
- spec/sounds/failure.mp3
|
373
|
-
- spec/sounds/success.mp3
|
374
|
-
- spec/spec_helper.rb
|
375
373
|
homepage: https://github.com/svoop/aipp
|
376
374
|
licenses:
|
377
375
|
- MIT
|
378
|
-
metadata:
|
376
|
+
metadata:
|
377
|
+
homepage_uri: https://github.com/svoop/aipp
|
378
|
+
changelog_uri: https://github.com/svoop/aipp/blob/master/CHANGELOG.md
|
379
|
+
source_code_uri: https://github.com/svoop/aipp
|
380
|
+
documentation_uri: https://www.rubydoc.info/gems/aipp
|
381
|
+
bug_tracker_uri: https://github.com/svoop/aipp/issues
|
379
382
|
post_install_message:
|
380
|
-
rdoc_options:
|
383
|
+
rdoc_options:
|
384
|
+
- "--title"
|
385
|
+
- AIP Parser and Converter
|
386
|
+
- "--main"
|
387
|
+
- README.md
|
388
|
+
- "--line-numbers"
|
389
|
+
- "--inline-source"
|
390
|
+
- "--quiet"
|
381
391
|
require_paths:
|
382
392
|
- lib
|
383
393
|
required_ruby_version: !ruby/object:Gem::Requirement
|
384
394
|
requirements:
|
385
395
|
- - ">="
|
386
396
|
- !ruby/object:Gem::Version
|
387
|
-
version:
|
397
|
+
version: 2.7.0
|
388
398
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
389
399
|
requirements:
|
390
400
|
- - ">="
|
391
401
|
- !ruby/object:Gem::Version
|
392
402
|
version: '0'
|
393
403
|
requirements: []
|
394
|
-
rubygems_version: 3.
|
404
|
+
rubygems_version: 3.1.2
|
395
405
|
signing_key:
|
396
406
|
specification_version: 4
|
397
|
-
summary: Parser for
|
398
|
-
test_files:
|
399
|
-
- spec/fixtures/border.geojson
|
400
|
-
- spec/fixtures/document.pdf
|
401
|
-
- spec/fixtures/document.pdf.json
|
402
|
-
- spec/fixtures/new.html
|
403
|
-
- spec/fixtures/new.pdf
|
404
|
-
- spec/fixtures/new.txt
|
405
|
-
- spec/fixtures/source.zip
|
406
|
-
- spec/lib/aipp/airac_spec.rb
|
407
|
-
- spec/lib/aipp/border_spec.rb
|
408
|
-
- spec/lib/aipp/downloader_spec.rb
|
409
|
-
- spec/lib/aipp/patcher_spec.rb
|
410
|
-
- spec/lib/aipp/pdf_spec.rb
|
411
|
-
- spec/lib/aipp/t_hash_spec.rb
|
412
|
-
- spec/lib/aipp/version_spec.rb
|
413
|
-
- spec/lib/core_ext/enumberable_spec.rb
|
414
|
-
- spec/lib/core_ext/hash_spec.rb
|
415
|
-
- spec/lib/core_ext/integer_spec.rb
|
416
|
-
- spec/lib/core_ext/nil_class_spec.rb
|
417
|
-
- spec/lib/core_ext/string_spec.rb
|
418
|
-
- spec/sounds/failure.mp3
|
419
|
-
- spec/sounds/success.mp3
|
420
|
-
- spec/spec_helper.rb
|
407
|
+
summary: Parser for aeronautical information publications
|
408
|
+
test_files: []
|