aixm 1.3.1 → 1.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c4dd1d553f6bf8c1f704cd521b14f26e89dc1161d065b82fd867fde1a556d97e
4
- data.tar.gz: 9fcba185054638267827d2e7a5eec09e849d237738455ec1bd9bb1cbabbabf5f
3
+ metadata.gz: 6fa3066c9e65afaa76e4327da9a11a42c27f1baad1a712de3fee6400765c0b6a
4
+ data.tar.gz: 6c0d4261d076fddc05b150b5c1851a61ffa011ff6b8f15f254492987e4f80fb4
5
5
  SHA512:
6
- metadata.gz: 0ab5bd974c993d0813e550c129040c6fac9f2d31f787f428e3582aef9486d1a2e95983dca76c822be9b621c97fe87c0263d571e92a485b0a3f9b2af76a7a6d0b
7
- data.tar.gz: 2969d03eb3bf308ad19fd481c1ca5244525848a5802eea3b9d4a999bb3feeb826ef483dbfdec23b567a2e326a3704fe1c45a61a74825cd0483bc4bfb2c7e9b97
6
+ metadata.gz: 88bcefbea10f86f6f5b3c483f546197409dcd06b8751b8f0ced1d2e3730e27559a248486015a0673685d24afb04f306df4ea0acf3f14fe5347c3c9f89d72e23c
7
+ data.tar.gz: 067ee1c2ffc6b251a9063982ee4e5d07492746aa0d780be020b46f549868992397348054c09d08704bb5e4744a0a78da8936ee739870822029a8eb32776c10c0
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
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
+
5
12
  ## 1.3.1
6
13
 
7
14
  #### Changes
@@ -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 |document|
14
- Nokogiri::XML::Builder.with(document) do |fragment|
15
- yield fragment
13
+ Nokogiri::XML::DocumentFragment.parse('').tap do |fragment|
14
+ Nokogiri::XML::Builder.with(fragment) do |builder|
15
+ yield builder
16
16
  end
17
- document.elements.each { _1.add_next_sibling("\n") } # add newline between tags on top level
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
- features.each { _1.add_to(root) }
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.pretty.to_xml
188
+ document.to_xml
186
189
  end
187
190
  end
188
191
  end
@@ -59,7 +59,7 @@ module AIXM
59
59
  element['region'] ||= region if element.name.match?(/Uid$/)
60
60
  end
61
61
  end
62
- builder << decorated_fragment.to_xml
62
+ builder << decorated_fragment.to_pretty_xml
63
63
  end
64
64
  end
65
65
 
@@ -129,33 +129,32 @@ module AIXM
129
129
  end
130
130
  end
131
131
 
132
- # @!method pretty
133
- # Transform the XML document to be pretty when sending +to_xml+
132
+ # @!method to_pretty_xml
133
+ # Pretty printing alternative of +to_xml+
134
134
  #
135
135
  # @example
136
136
  # xml = <<~END
137
- # <xml><aaa> AAA </aaa>
137
+ # <aaa></aaa>
138
138
  # <bbb/>
139
- # <ccc foo="bar" >
140
- # CCC
141
- # </ccc>
142
- # </xml>
139
+ # <ccc foo="bar" >
140
+ # <ddd>
141
+ # </ddd>
142
+ # </ccc>
143
143
  # END
144
- # Nokogiri.XML(xml).pretty.to_xml
145
- # # => <?xml version=\"1.0\" encoding=\"UTF-8\"?>
146
- # <xml>
147
- # <aaa> AAA </aaa>
148
- # <bbb/>
149
- # <ccc foo="bar">
150
- # CCC
151
- # </ccc>
152
- # </xml>
153
- #
154
- # @note This is a refinement for +Nokogiri::XML::Document+
155
- # @return [Nokogiri::XML::Document]
156
- refine Nokogiri::XML::Document do
157
- def pretty
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
 
@@ -84,16 +84,20 @@ module AIXM
84
84
  end
85
85
 
86
86
  # Create new date one day prior to this one.
87
- def prev
87
+ #
88
+ # @return [AIXM::Schedule::Date]
89
+ def pred
88
90
  self.class.new(date.prev_day.to_s.sub(/^-/, '')).at(year: (YEARLESS_YEAR if yearless?))
89
91
  end
92
+ alias_method :prev, :pred
90
93
 
91
94
  # Create new date one day after this one.
92
95
  #
93
96
  # @return [AIXM::Schedule::Date]
94
- def next
97
+ def succ
95
98
  self.class.new(date.next_day).at(year: (YEARLESS_YEAR if yearless?))
96
99
  end
100
+ alias_method :next, :succ
97
101
 
98
102
  # Calculate difference in days between two dates.
99
103
  #
@@ -13,8 +13,8 @@ module AIXM
13
13
  include AIXM::Concerns::HashEquality
14
14
  include Comparable
15
15
 
16
- DAYS = %i(sunday monday tuesday wednesday thursday friday saturday workday day_preceding_workday day_following_workday holiday day_preceding_holiday day_following_holiday any).freeze
17
- SORTABLE_DAYS = DAYS[0, 7]
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 = SORTABLE_DAYS[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
- SORTABLE_DAYS.include? day
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/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module AIXM
2
- VERSION = "1.3.1".freeze
2
+ VERSION = "1.3.2".freeze
3
3
  end
data.tar.gz.sig CHANGED
@@ -1,2 +1 @@
1
- ��W���c
2
- 滺P~��[�9�z'�:������w3w�41�S�/0�Н$f�t��w;�m�O[�l�ϭ�ώK�Wy��z6�t���L��3�����3xjB��d�!}P�9�hQe�-���%�*4��֎�_B��Ku�'Y���5�K��)4FX�}�����&�� �0�PR����B�ՠ�B32�cZ���ӎA8v^���w��Ӎ�����ɹ��M�7|&6;�%7\���4n�M��!�O����r�
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.1
4
+ version: 1.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sven Schwyn
@@ -29,7 +29,7 @@ cert_chain:
29
29
  kAyiRqgxF4dJviwtqI7mZIomWL63+kXLgjOjMe1SHxfIPo/0ji6+r1p4KYa7o41v
30
30
  fwIwU1MKlFBdsjkd
31
31
  -----END CERTIFICATE-----
32
- date: 2022-11-06 00:00:00.000000000 Z
32
+ date: 2022-11-18 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: nokogiri
@@ -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.25
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
@@ -1,2 +1,2 @@
1
- Z���%ى��Z0�~2[}O-'�B<Rg�WG��Rf
2
- ���(����@B!�NB~�d,��� ~��q4Q7W�w�V�E`fwA�`r�(e=���P��J�
1
+ sc8����\~а�
2
+ �V�%���=�4