aixm 1.2.1 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +23 -3
  4. data/README.md +37 -2
  5. data/exe/ckmid +1 -7
  6. data/exe/mkmid +1 -7
  7. data/lib/aixm/classes.rb +3 -1
  8. data/lib/aixm/component/address.rb +12 -15
  9. data/lib/aixm/component/approach_lighting.rb +11 -16
  10. data/lib/aixm/component/fato.rb +22 -34
  11. data/lib/aixm/component/frequency.rb +10 -15
  12. data/lib/aixm/component/geometry/arc.rb +2 -3
  13. data/lib/aixm/component/geometry/border.rb +6 -10
  14. data/lib/aixm/component/geometry/circle.rb +4 -4
  15. data/lib/aixm/component/geometry/point.rb +4 -4
  16. data/lib/aixm/component/geometry/rhumb_line.rb +4 -4
  17. data/lib/aixm/component/geometry.rb +4 -4
  18. data/lib/aixm/component/helipad.rb +13 -20
  19. data/lib/aixm/component/layer.rb +6 -8
  20. data/lib/aixm/component/lighting.rb +12 -17
  21. data/lib/aixm/component/runway.rb +26 -38
  22. data/lib/aixm/component/service.rb +12 -16
  23. data/lib/aixm/component/surface.rb +8 -10
  24. data/lib/aixm/component/timesheet.rb +9 -10
  25. data/lib/aixm/component/timetable.rb +6 -7
  26. data/lib/aixm/component/vasis.rb +6 -8
  27. data/lib/aixm/component/vertical_limit.rb +8 -8
  28. data/lib/aixm/component.rb +3 -2
  29. data/lib/aixm/concerns/association.rb +381 -0
  30. data/lib/aixm/concerns/memoize.rb +107 -0
  31. data/lib/aixm/concerns/xml_builder.rb +34 -0
  32. data/lib/aixm/document.rb +52 -21
  33. data/lib/aixm/feature/airport.rb +44 -47
  34. data/lib/aixm/feature/airspace.rb +29 -34
  35. data/lib/aixm/feature/generic.rb +67 -0
  36. data/lib/aixm/feature/navigational_aid/designated_point.rb +11 -13
  37. data/lib/aixm/feature/navigational_aid/dme.rb +12 -15
  38. data/lib/aixm/feature/navigational_aid/marker.rb +12 -15
  39. data/lib/aixm/feature/navigational_aid/ndb.rb +13 -16
  40. data/lib/aixm/feature/navigational_aid/tacan.rb +15 -17
  41. data/lib/aixm/feature/navigational_aid/vor.rb +16 -19
  42. data/lib/aixm/feature/navigational_aid.rb +7 -7
  43. data/lib/aixm/feature/obstacle.rb +20 -21
  44. data/lib/aixm/feature/obstacle_group.rb +19 -20
  45. data/lib/aixm/feature/organisation.rb +11 -12
  46. data/lib/aixm/feature/unit.rb +16 -18
  47. data/lib/aixm/feature.rb +26 -7
  48. data/lib/aixm/object.rb +1 -1
  49. data/lib/aixm/refinements.rb +57 -0
  50. data/lib/aixm/schedule/date.rb +13 -1
  51. data/lib/aixm/schedule/date_time.rb +56 -0
  52. data/lib/aixm/schedule/time.rb +5 -1
  53. data/lib/aixm/shortcuts.rb +8 -2
  54. data/lib/aixm/version.rb +1 -1
  55. data/lib/aixm.rb +5 -3
  56. data/schemas/ofmx/0.1/OFMX-Snapshot.xsd +6 -1
  57. data.tar.gz.sig +2 -3
  58. metadata +26 -38
  59. metadata.gz.sig +2 -3
  60. data/lib/aixm/association.rb +0 -378
  61. data/lib/aixm/memoize.rb +0 -105
data/lib/aixm/memoize.rb DELETED
@@ -1,105 +0,0 @@
1
- module AIXM
2
-
3
- # Memoize the return value of a specific method across multiple instances for
4
- # the duration of a block.
5
- #
6
- # The method signature is taken into account, therefore calls of the same
7
- # method with different positional and/or keyword arguments are cached
8
- # independently. On the other hand, when calling the method with a block,
9
- # no memoization is performed at all.
10
- #
11
- # Nested memoization of the same method is allowed and won't reset the
12
- # memoization cache.
13
- #
14
- # @example
15
- # class Either
16
- # include AIXM::Memoize
17
- #
18
- # def either(argument=nil, keyword: nil, &block)
19
- # $entropy || argument || keyword || (block.call if block)
20
- # end
21
- # memoize :either
22
- # end
23
- #
24
- # a, b, c = Either.new, Either.new, Either.new
25
- #
26
- # # No memoization before the block
27
- # $entropy = nil
28
- # a.either(1) # => 1
29
- # b.either(keyword: 2) # => 2
30
- # c.either { 3 } # => 3
31
- # $entropy = :not_nil
32
- # a.either(1) # => :not_nil
33
- # b.either(keyword: 2) # => :not_nil
34
- # c.either { 3 } # => :not_nil
35
- #
36
- # # Memoization inside the block
37
- # AIXM::Memoize.method :either do
38
- # $entropy = nil
39
- # a.either(1) # => 1
40
- # b.either(keyword: 2) # => 2
41
- # c.either { 3 } # => 3
42
- # $entropy = :not_nil
43
- # a.either(1) # => 1 (memoized)
44
- # b.either(keyword: 2) # => 2 (memoized)
45
- # c.either { 3 } # => :not_nil (cannot be memoized)
46
- # end
47
- #
48
- # # No memoization after the block
49
- # $entropy = nil
50
- # a.either(1) # => 1
51
- # $entropy = :not_nil
52
- # a.either(1) # => :not_nil
53
- module Memoize
54
- module ClassMethods
55
- def memoize(method)
56
- unmemoized_method = :"unmemoized_#{method}"
57
- alias_method unmemoized_method, method
58
- define_method method do |*args, **kargs, &block|
59
- if block || !AIXM::Memoize.cache.has_key?(method)
60
- send(unmemoized_method, *args, **kargs, &block)
61
- else
62
- cache = AIXM::Memoize.cache[method]
63
- id = object_id.hash ^ args.hash ^ kargs.hash
64
- if cache.has_key?(id)
65
- cache[id]
66
- else
67
- cache[id] = send(unmemoized_method, *args, **kargs)
68
- end
69
- end
70
- end
71
- end
72
- end
73
-
74
- class << self
75
- attr_reader :cache
76
-
77
- def included(base)
78
- base.extend(ClassMethods)
79
- @cache = {}
80
- end
81
-
82
- def method(method, &block) # TODO: [ruby-3.1] use anonymous block "&" on this and next line
83
- send(:"call_with#{:out if cached?(method)}_cache", method, &block)
84
- end
85
-
86
- private
87
-
88
- def cached?(method)
89
- cache.has_key?(method)
90
- end
91
-
92
- def call_without_cache(method)
93
- yield
94
- end
95
-
96
- def call_with_cache(method)
97
- cache[method] = {}
98
- yield
99
- ensure
100
- cache.delete(method)
101
- end
102
- end
103
-
104
- end
105
- end