ea 0.5.2 → 0.6.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.
Files changed (142) hide show
  1. checksums.yaml +4 -4
  2. data/TODO.complete/01-t-xref-parsing.md +1 -1
  3. data/TODO.complete/02-per-label-geometry.md +1 -1
  4. data/TODO.complete/03-object-properties-constraints.md +1 -1
  5. data/TODO.complete/04-operation-params.md +1 -1
  6. data/TODO.complete/05-pdata-flag-matrix.md +1 -1
  7. data/TODO.complete/06-emf-image-rendering.md +1 -1
  8. data/TODO.complete/07-auxiliary-tables.md +1 -1
  9. data/TODO.complete/10-mdg-stereotype-registry.md +1 -1
  10. data/TODO.complete/11-gml-xsd-generation.md +1 -1
  11. data/TODO.complete/13-shapescript-interpreter.md +12 -23
  12. data/TODO.complete/20-cli-diff.md +1 -1
  13. data/TODO.complete/21-cli-render.md +1 -1
  14. data/TODO.complete/22-cli-export.md +1 -1
  15. data/TODO.complete/23-cli-mdg.md +1 -1
  16. data/TODO.complete/30-headerlines-ocp-refactor.md +1 -1
  17. data/TODO.complete/32-spec-coverage.md +1 -1
  18. data/TODO.complete/33-blocked-parity-gaps.md +1 -1
  19. data/TODO.complete/36-stereotype-icon-wiring.md +1 -1
  20. data/TODO.complete/37-cli-lint.md +1 -1
  21. data/TODO.complete/38-cli-query.md +1 -1
  22. data/TODO.complete/39-cli-info.md +1 -1
  23. data/TODO.complete/40-ocl-evaluator.md +1 -1
  24. data/TODO.complete/41-round-trip-spec.md +1 -1
  25. data/TODO.complete/42-html-diff-report.md +1 -1
  26. data/TODO.complete/43-json-schema-export.md +1 -1
  27. data/TODO.complete/44-remaining-qea-tables.md +1 -1
  28. data/TODO.complete/45-shapescript-extensions.md +1 -1
  29. data/TODO.complete/46-xsd-consolidation.md +1 -1
  30. data/TODO.complete/47-headerlines-legacy-removal.md +1 -1
  31. data/TODO.complete/51-remove-respond-to.md +42 -15
  32. data/TODO.complete/52-xsd-decouple-fixtures.md +1 -1
  33. data/TODO.complete/54-wire-stereotype-icon-renderer.md +1 -1
  34. data/TODO.complete/55-wire-shapescript.md +1 -1
  35. data/TODO.complete/56-wire-emf-renderer.md +1 -1
  36. data/TODO.complete/57-wire-ocl-evaluator.md +1 -1
  37. data/TODO.complete/58-diff-modifications.md +1 -1
  38. data/TODO.complete/59-delete-toy-xmi-export.md +1 -1
  39. data/TODO.complete/60-curate-json-export.md +1 -1
  40. data/TODO.complete/61-plantuml-relationships.md +1 -1
  41. data/TODO.complete/62-changelog.md +1 -1
  42. data/TODO.complete/63-dependabot-fix.md +1 -1
  43. data/TODO.complete/64-qeatoxmi-connectors.md +9 -24
  44. data/TODO.complete/65-qeatoxmi-diagrams.md +9 -23
  45. data/TODO.complete/66-qeatoxmi-style-tags-docs.md +25 -18
  46. data/TODO.complete/67-ocl-collection-ops.md +12 -12
  47. data/TODO.complete/68-ocl-comparison-ops.md +16 -11
  48. data/TODO.complete/69-spec-new-models.md +13 -18
  49. data/TODO.complete/70-specs-for-all-models.md +21 -0
  50. data/TODO.complete/71-autoload-audit.md +26 -0
  51. data/TODO.complete/72-extension-serializer-ocp-naming.md +26 -0
  52. data/TODO.complete/73-ocl-validator-latent-bugs.md +50 -0
  53. data/TODO.complete/74-visibility-symbol-dry.md +39 -0
  54. data/TODO.complete/75-database-table-collection-registry.md +32 -0
  55. data/TODO.complete/76-stale-todo-cleanup.md +52 -0
  56. data/TODO.complete/77-eliminate-banned-patterns-from-specs.md +55 -0
  57. data/TODO.complete/78-mdg-stereotype-emission.md +66 -0
  58. data/TODO.complete/79-equivalence-fixes.md +57 -0
  59. data/TODO.complete/80-performance-extension-serializer-indexes.md +43 -0
  60. data/TODO.complete/81-dry-scope-guid-extraction.md +33 -0
  61. data/TODO.complete/82-public-send-audit-conclusion.md +25 -0
  62. data/TODO.complete/83-dry-shared-xml-escape-guid-format.md +52 -0
  63. data/TODO.complete/84-ocp-markers-shape-registry.md +54 -0
  64. data/TODO.complete/85-frozen-literal-rubocop-normalize-type-spec.md +38 -0
  65. data/TODO.complete/86-frozen-sweep-lint-query-specs.md +55 -0
  66. data/TODO.complete/STATUS.md +26 -5
  67. data/lib/ea/cli/app.rb +1 -0
  68. data/lib/ea/cli/command/export.rb +10 -1
  69. data/lib/ea/cli/command/mdg.rb +1 -10
  70. data/lib/ea/cli/command/render.rb +2 -1
  71. data/lib/ea/diff/html_reporter.rb +1 -5
  72. data/lib/ea/export/json/generator.rb +5 -6
  73. data/lib/ea/export/plantuml/generator.rb +5 -3
  74. data/lib/ea/guid_format.rb +91 -0
  75. data/lib/ea/mdg/document.rb +2 -1
  76. data/lib/ea/mdg/loader.rb +2 -1
  77. data/lib/ea/mdg/registry.rb +57 -2
  78. data/lib/ea/mdg/xml/applies_to.rb +1 -1
  79. data/lib/ea/mdg/xml/apply.rb +1 -1
  80. data/lib/ea/mdg/xml/content.rb +1 -1
  81. data/lib/ea/mdg/xml/documentation.rb +1 -1
  82. data/lib/ea/mdg/xml/stereotype.rb +1 -1
  83. data/lib/ea/mdg/xml/stereotypes.rb +1 -1
  84. data/lib/ea/mdg/xml/tag.rb +1 -1
  85. data/lib/ea/mdg/xml/tagged_values.rb +1 -1
  86. data/lib/ea/mdg/xml/technology.rb +1 -1
  87. data/lib/ea/mdg/xml/uml_profile.rb +1 -1
  88. data/lib/ea/mdg/xml/uml_profiles.rb +1 -1
  89. data/lib/ea/mdg/xml.rb +2 -1
  90. data/lib/ea/mdg.rb +2 -1
  91. data/lib/ea/model/ghost_label.rb +2 -1
  92. data/lib/ea/ocl/evaluator.rb +4 -2
  93. data/lib/ea/qea/database.rb +57 -2
  94. data/lib/ea/qea/factory/reference_resolver.rb +1 -1
  95. data/lib/ea/qea/models/ea_attribute.rb +1 -17
  96. data/lib/ea/qea/models/ea_connector.rb +3 -2
  97. data/lib/ea/qea/models/ea_object.rb +14 -9
  98. data/lib/ea/qea/models/ea_operation.rb +1 -17
  99. data/lib/ea/qea/models/ea_xref.rb +3 -0
  100. data/lib/ea/qea/models/scope_predicate.rb +29 -0
  101. data/lib/ea/qea/models.rb +1 -0
  102. data/lib/ea/qea/repositories/base_repository.rb +4 -1
  103. data/lib/ea/qea/validation/base_validator.rb +3 -48
  104. data/lib/ea/qea/validation/database/ocl_constraint_validator.rb +23 -13
  105. data/lib/ea/shapescript/renderer.rb +1 -3
  106. data/lib/ea/sources/qea/diagram_builder.rb +1 -0
  107. data/lib/ea/sources/qea/id_normalizer.rb +2 -2
  108. data/lib/ea/svg/ea_emitter/background.rb +2 -1
  109. data/lib/ea/svg/ea_emitter/element/attribute_line_builder.rb +1 -6
  110. data/lib/ea/svg/ea_emitter/element/operation_renderer.rb +2 -7
  111. data/lib/ea/svg/ea_emitter/elements.rb +1 -3
  112. data/lib/ea/svg/ea_emitter/ghost_labels.rb +2 -1
  113. data/lib/ea/svg/ea_emitter/label/end_label.rb +1 -6
  114. data/lib/ea/svg/ea_emitter/marker/package_import.rb +1 -1
  115. data/lib/ea/svg/ea_emitter/markers.rb +52 -23
  116. data/lib/ea/svg/ea_emitter/text_renderer.rb +1 -4
  117. data/lib/ea/svg/ea_emitter/visibility_symbol.rb +37 -0
  118. data/lib/ea/svg/ea_emitter.rb +1 -0
  119. data/lib/ea/svg/parity/source.rb +0 -2
  120. data/lib/ea/svg/parity/suite.rb +0 -1
  121. data/lib/ea/transformers/qea_to_xmi/cardinality.rb +40 -28
  122. data/lib/ea/transformers/qea_to_xmi/context.rb +35 -1
  123. data/lib/ea/transformers/qea_to_xmi/extension_serializer.rb +686 -0
  124. data/lib/ea/transformers/qea_to_xmi/guid_format.rb +5 -48
  125. data/lib/ea/transformers/qea_to_xmi/id_allocator.rb +55 -54
  126. data/lib/ea/transformers/qea_to_xmi/primitive_types.rb +105 -0
  127. data/lib/ea/transformers/qea_to_xmi/profile_serializer.rb +163 -0
  128. data/lib/ea/transformers/qea_to_xmi/run_state.rb +7 -6
  129. data/lib/ea/transformers/qea_to_xmi/transformer.rb +396 -185
  130. data/lib/ea/transformers/qea_to_xmi/visibility.rb +30 -19
  131. data/lib/ea/transformers/qea_to_xmi.rb +5 -2
  132. data/lib/ea/transformers.rb +7 -2
  133. data/lib/ea/validation.rb +1 -1
  134. data/lib/ea/version.rb +1 -1
  135. data/lib/ea/xmi/liquid_drops/attribute_drop.rb +12 -4
  136. data/lib/ea/xmi/liquid_drops/klass_drop.rb +1 -2
  137. data/lib/ea/xmi/lookup_service.rb +4 -0
  138. data/lib/ea/xmi/parser.rb +30 -1
  139. data/lib/ea/xml_escape.rb +21 -0
  140. data/lib/ea.rb +2 -0
  141. metadata +28 -11
  142. data/lutaml-uml-0.5.1.gem +0 -0
@@ -3,19 +3,16 @@
3
3
  module Ea
4
4
  module Transformers
5
5
  module QeaToXmi
6
- # Pure-function mapper from EA's integer scope/containment codes
7
- # to UML visibility / aggregation wire strings.
6
+ # Pure-function mapper from EA's scope/aggregation codes to UML
7
+ # visibility / aggregation wire strings.
8
8
  #
9
- # EA stores visibility as an integer in `t_attribute.scope`,
10
- # `t_operation.scope`, `t_object.scope`. The encoding:
9
+ # QEA databases store scope as text in `t_attribute.Scope`,
10
+ # `t_operation.Scope`, `t_object.Scope`: "Public", "Private",
11
+ # "Protected", "Package". The integer codes (0-3, same order) are
12
+ # kept as a fallback for EAP-era databases.
11
13
  #
12
- # 0 Public
13
- # 1 Private
14
- # 2 → Protected
15
- # 3 → Package
16
- #
17
- # EA stores aggregation kind in `t_connector.sourcecontainment`
18
- # and `t_connector.destcontainment`. The encoding:
14
+ # Aggregation kind comes from `t_connector.sourceisaggregate` /
15
+ # `destisaggregate` (via Transformer#containment_for). The encoding:
19
16
  #
20
17
  # 0 → None (omitted)
21
18
  # 1 → Shared (UML aggregation="shared")
@@ -23,6 +20,13 @@ module Ea
23
20
  #
24
21
  # Wire-side values are lower-case per the UML XMI schema.
25
22
  module Visibility
23
+ TEXT_SCOPES = {
24
+ "public" => "public",
25
+ "private" => "private",
26
+ "protected" => "protected",
27
+ "package" => "package",
28
+ }.freeze
29
+
26
30
  SCOPE_MAP = {
27
31
  0 => "public",
28
32
  1 => "private",
@@ -39,13 +43,18 @@ module Ea
39
43
  module_function
40
44
 
41
45
  # @param raw [String, Integer, nil]
42
- # @return [String, nil] UML visibility token, or nil if EA's
43
- # scope field is blank / unrecognised.
46
+ # @return [String, nil] UML visibility token. Returns nil for
47
+ # blank/unrecognised values AND for the UML default ("public")
48
+ # so the xmi gem omits the attribute — matching EA's output,
49
+ # which doesn't emit visibility="public".
44
50
  def from_scope(raw)
45
- return nil if raw.nil? || raw.to_s.strip.empty?
51
+ text = raw.to_s.strip
52
+ return nil if text.empty?
46
53
 
47
- key = raw.to_i
48
- SCOPE_MAP[key]
54
+ value = TEXT_SCOPES[text.downcase] || SCOPE_MAP[text.to_i]
55
+ return nil if value == "public"
56
+
57
+ value
49
58
  end
50
59
 
51
60
  # @param raw [String, Integer, nil]
@@ -59,11 +68,13 @@ module Ea
59
68
  end
60
69
 
61
70
  # @param raw [String, Integer, nil] EA's abstract flag ("1"/"0")
62
- # @return [Boolean, nil] true / false, or nil if unspecified.
63
- # Returns actual Ruby booleans (not strings) the xmi gem's
64
- # `is_*` attributes are typed as `:boolean`.
71
+ # @return [Boolean, nil] true when EA marks the element abstract,
72
+ # nil when blank OR "0" (false). Returning nil for false makes
73
+ # the xmi gem omit isAbstract="false" — matching EA's output,
74
+ # which doesn't emit the default.
65
75
  def boolean_from_flag(raw)
66
76
  return nil if raw.nil? || raw.to_s.strip.empty?
77
+ return nil if raw.to_s == "0"
67
78
 
68
79
  raw.to_s == "1"
69
80
  end
@@ -22,8 +22,11 @@ module Ea
22
22
  autoload :GuidFormat, "ea/transformers/qea_to_xmi/guid_format"
23
23
  autoload :Cardinality, "ea/transformers/qea_to_xmi/cardinality"
24
24
  autoload :Visibility, "ea/transformers/qea_to_xmi/visibility"
25
- autoload :RunState, "ea/transformers/qea_to_xmi/run_state"
26
- autoload :AssociationEnd, "ea/transformers/qea_to_xmi/association_end"
25
+ autoload :RunState, "ea/transformers/qea_to_xmi/run_state"
26
+ autoload :AssociationEnd, "ea/transformers/qea_to_xmi/association_end"
27
+ autoload :ExtensionSerializer, "ea/transformers/qea_to_xmi/extension_serializer"
28
+ autoload :PrimitiveTypes, "ea/transformers/qea_to_xmi/primitive_types"
29
+ autoload :ProfileSerializer, "ea/transformers/qea_to_xmi/profile_serializer"
27
30
  end
28
31
  end
29
32
  end
@@ -24,11 +24,16 @@ module Ea
24
24
  # Walks the QEA tables directly — no intermediate UML model, no loss of
25
25
  # Sparx-specific concepts (stereotypes, tagged values, multiplicities,
26
26
  # diagrams, xrefs).
27
+ #
27
28
  # @param database [Ea::Qea::Database]
28
29
  # @param with_extensions [Boolean] emit EA-specific connectors+diagrams
30
+ # @param mdg_registry [Ea::Mdg::Registry, nil] when provided,
31
+ # stereotype definitions from registered MDG technologies are
32
+ # emitted as `<uml:Stereotype>` profile elements in the model
33
+ # tree. MDGs can be swapped in/out at runtime (OCP).
29
34
  # @return [String] XMI XML
30
- def qea_to_xmi(database, with_extensions: true)
31
- QeaToXmi::Transformer.new(database).serialize(with_extensions: with_extensions)
35
+ def qea_to_xmi(database, with_extensions: true, mdg_registry: nil)
36
+ QeaToXmi::Transformer.new(database, mdg_registry: mdg_registry).serialize(with_extensions: with_extensions)
32
37
  end
33
38
  end
34
39
  end
data/lib/ea/validation.rb CHANGED
@@ -1,4 +1,4 @@
1
- # frozen_string: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Ea
4
4
  # Top-level validation namespace. Hosts cross-cutting validators
data/lib/ea/version.rb CHANGED
@@ -4,5 +4,5 @@ module Ea
4
4
  # Gem release version. Extracted to its own file so the
5
5
  # `gem-release` tool's `gem bump` can find and update it via the
6
6
  # standard `lib/<gem>/version.rb` convention.
7
- VERSION = "0.5.2"
7
+ VERSION = "0.6.0"
8
8
  end
@@ -35,11 +35,19 @@ module Ea
35
35
  end
36
36
 
37
37
  def definition
38
- if @options[:with_assoc] && @model.association
39
- @lookup.loopup_assoc_def(@model.association)
40
- else
41
- @model.definition
38
+ defn = if @options[:with_assoc] && @model.association
39
+ @lookup.lookup_assoc_def(@model.association)
40
+ else
41
+ @model.definition
42
+ end
43
+
44
+ if defn.nil? || defn.empty?
45
+ defn = @lookup.lookup_connector_def_by_associationclass(
46
+ @model.association,
47
+ )
42
48
  end
49
+
50
+ defn
43
51
  end
44
52
 
45
53
  def association
@@ -101,8 +101,7 @@ module Ea
101
101
  def attributes
102
102
  Array(@model.attributes).filter_map do |owned_attr|
103
103
  if @options[:with_assoc] || owned_attr.association.nil?
104
- ::Ea::Xmi::LiquidDrops::AttributeDrop.new(owned_attr,
105
- @options)
104
+ ::Ea::Xmi::LiquidDrops::AttributeDrop.new(owned_attr, @options)
106
105
  end
107
106
  end
108
107
  end
@@ -37,6 +37,10 @@ module Ea
37
37
  @parser.lookup_assoc_def(association)
38
38
  end
39
39
 
40
+ def lookup_connector_def_by_associationclass(xmi_id)
41
+ @parser.lookup_connector_def_by_associationclass(xmi_id)
42
+ end
43
+
40
44
  def fetch_connector(link_id)
41
45
  @parser.fetch_connector(link_id)
42
46
  end
data/lib/ea/xmi/parser.rb CHANGED
@@ -73,6 +73,10 @@ module Ea
73
73
  xmi_index.find_connector(link_id)
74
74
  end
75
75
 
76
+ def fetch_connector_by_associationclass(associationclass)
77
+ connector_by_associationclass_lookup[associationclass]
78
+ end
79
+
76
80
  def fetch_definition_node_value(link_id, node_name)
77
81
  connector_node = fetch_connector(link_id)
78
82
  return nil unless connector_node
@@ -199,6 +203,11 @@ module Ea
199
203
  connector&.documentation&.value
200
204
  end
201
205
 
206
+ def lookup_connector_def_by_associationclass(association)
207
+ connector = fetch_connector_by_associationclass(association)
208
+ connector&.documentation&.value
209
+ end
210
+
202
211
  def get_ns_by_xmi_id(xmi_id)
203
212
  return unless xmi_id
204
213
 
@@ -703,7 +712,7 @@ module Ea
703
712
  gen_attr.xmi_id = attr.xmi_id
704
713
  gen_attr.is_derived = !!attr.is_derived
705
714
  gen_attr.cardinality = attr.cardinality
706
- gen_attr.definition = attr.definition&.strip
715
+ gen_attr.definition = get_uml_general_attribute_definition(attr)
707
716
  gen_attr.association = attr.association
708
717
  gen_attr.has_association = !!attr.association
709
718
  gen_attr.type_ns = attr.type_ns
@@ -711,6 +720,14 @@ module Ea
711
720
  end
712
721
  end
713
722
 
723
+ def get_uml_general_attribute_definition(attr)
724
+ return attr.definition&.strip unless attr.association
725
+
726
+ attr.definition&.strip ||
727
+ lookup_assoc_def(attr.association) ||
728
+ lookup_connector_def_by_associationclass(attr.association)
729
+ end
730
+
714
731
  def set_uml_generalization(general_id)
715
732
  uml_general_obj, next_general_node_id = get_uml_general(general_id)
716
733
 
@@ -924,6 +941,18 @@ module Ea
924
941
  end
925
942
  end
926
943
 
944
+ def connector_by_associationclass_lookup
945
+ @connector_by_associationclass_lookup ||= begin
946
+ lookup = {}
947
+ connectors = @xmi_root_model.extension&.connectors&.connector || []
948
+ connectors.each do |con|
949
+ assoc_class = con.extended_properties&.associationclass
950
+ lookup[assoc_class] = con if assoc_class
951
+ end
952
+ lookup
953
+ end
954
+ end
955
+
927
956
  def index_connector_directions(con, lookup)
928
957
  %i[source target].each do |dir|
929
958
  idref = con.public_send(dir)&.idref
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ea
4
+ # Shared XML entity escaping. Centralised so the four subsystems
5
+ # that emit XML/XMI/SVG (Transformers, Diff, Shapescript, Svg)
6
+ # share one implementation instead of four local copies with
7
+ # subtle differences (quote-escaping was inconsistent).
8
+ module XmlEscape
9
+ module_function
10
+
11
+ # @param text [Object] value to escape; nil-safe via to_s
12
+ # @return [String] XML-escaped text with &, <, >, " replaced
13
+ def call(text)
14
+ text.to_s
15
+ .gsub("&", "&amp;")
16
+ .gsub("<", "&lt;")
17
+ .gsub(">", "&gt;")
18
+ .gsub('"', "&quot;")
19
+ end
20
+ end
21
+ end
data/lib/ea.rb CHANGED
@@ -30,6 +30,8 @@ module Ea
30
30
  autoload :Query, "ea/query"
31
31
  autoload :Ocl, "ea/ocl"
32
32
  autoload :Validation, "ea/validation"
33
+ autoload :XmlEscape, "ea/xml_escape"
34
+ autoload :GuidFormat, "ea/guid_format"
33
35
 
34
36
  class << self
35
37
  # Parse an EA file into its native representation.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ea
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-08-03 00:00:00.000000000 Z
11
+ date: 2026-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lutaml-model
@@ -72,20 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0.6'
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: 0.6.0
75
+ version: '0.7'
79
76
  type: :runtime
80
77
  prerelease: false
81
78
  version_requirements: !ruby/object:Gem::Requirement
82
79
  requirements:
83
80
  - - "~>"
84
81
  - !ruby/object:Gem::Version
85
- version: '0.6'
86
- - - ">="
87
- - !ruby/object:Gem::Version
88
- version: 0.6.0
82
+ version: '0.7'
89
83
  - !ruby/object:Gem::Dependency
90
84
  name: nokogiri
91
85
  requirement: !ruby/object:Gem::Requirement
@@ -242,6 +236,23 @@ files:
242
236
  - TODO.complete/67-ocl-collection-ops.md
243
237
  - TODO.complete/68-ocl-comparison-ops.md
244
238
  - TODO.complete/69-spec-new-models.md
239
+ - TODO.complete/70-specs-for-all-models.md
240
+ - TODO.complete/71-autoload-audit.md
241
+ - TODO.complete/72-extension-serializer-ocp-naming.md
242
+ - TODO.complete/73-ocl-validator-latent-bugs.md
243
+ - TODO.complete/74-visibility-symbol-dry.md
244
+ - TODO.complete/75-database-table-collection-registry.md
245
+ - TODO.complete/76-stale-todo-cleanup.md
246
+ - TODO.complete/77-eliminate-banned-patterns-from-specs.md
247
+ - TODO.complete/78-mdg-stereotype-emission.md
248
+ - TODO.complete/79-equivalence-fixes.md
249
+ - TODO.complete/80-performance-extension-serializer-indexes.md
250
+ - TODO.complete/81-dry-scope-guid-extraction.md
251
+ - TODO.complete/82-public-send-audit-conclusion.md
252
+ - TODO.complete/83-dry-shared-xml-escape-guid-format.md
253
+ - TODO.complete/84-ocp-markers-shape-registry.md
254
+ - TODO.complete/85-frozen-literal-rubocop-normalize-type-spec.md
255
+ - TODO.complete/86-frozen-sweep-lint-query-specs.md
245
256
  - TODO.complete/STATUS.md
246
257
  - TODO.diagrams/01-svg-measurement-harness.md
247
258
  - TODO.diagrams/01-xmi-extension-elements-parsing.md
@@ -609,6 +620,7 @@ files:
609
620
  - lib/ea/export/xsd/class_mapping.rb
610
621
  - lib/ea/export/xsd/generator.rb
611
622
  - lib/ea/export/xsd/namespace_registry.rb
623
+ - lib/ea/guid_format.rb
612
624
  - lib/ea/image.rb
613
625
  - lib/ea/image/emf_renderer.rb
614
626
  - lib/ea/lint.rb
@@ -757,6 +769,7 @@ files:
757
769
  - lib/ea/qea/models/ea_tagged_value.rb
758
770
  - lib/ea/qea/models/ea_version.rb
759
771
  - lib/ea/qea/models/ea_xref.rb
772
+ - lib/ea/qea/models/scope_predicate.rb
760
773
  - lib/ea/qea/repositories.rb
761
774
  - lib/ea/qea/repositories/base_repository.rb
762
775
  - lib/ea/qea/repositories/object_repository.rb
@@ -935,6 +948,7 @@ files:
935
948
  - lib/ea/svg/ea_emitter/render_context.rb
936
949
  - lib/ea/svg/ea_emitter/style.rb
937
950
  - lib/ea/svg/ea_emitter/text_renderer.rb
951
+ - lib/ea/svg/ea_emitter/visibility_symbol.rb
938
952
  - lib/ea/svg/parity.rb
939
953
  - lib/ea/svg/parity/checker.rb
940
954
  - lib/ea/svg/parity/source.rb
@@ -950,8 +964,11 @@ files:
950
964
  - lib/ea/transformers/qea_to_xmi/association_end.rb
951
965
  - lib/ea/transformers/qea_to_xmi/cardinality.rb
952
966
  - lib/ea/transformers/qea_to_xmi/context.rb
967
+ - lib/ea/transformers/qea_to_xmi/extension_serializer.rb
953
968
  - lib/ea/transformers/qea_to_xmi/guid_format.rb
954
969
  - lib/ea/transformers/qea_to_xmi/id_allocator.rb
970
+ - lib/ea/transformers/qea_to_xmi/primitive_types.rb
971
+ - lib/ea/transformers/qea_to_xmi/profile_serializer.rb
955
972
  - lib/ea/transformers/qea_to_xmi/run_state.rb
956
973
  - lib/ea/transformers/qea_to_xmi/transformer.rb
957
974
  - lib/ea/transformers/qea_to_xmi/visibility.rb
@@ -982,8 +999,8 @@ files:
982
999
  - lib/ea/xmi/liquid_drops/source_target_drop.rb
983
1000
  - lib/ea/xmi/lookup_service.rb
984
1001
  - lib/ea/xmi/parser.rb
1002
+ - lib/ea/xml_escape.rb
985
1003
  - lib/tasks/svg_bench.rake
986
- - lutaml-uml-0.5.1.gem
987
1004
  - reference-docs/enterprise-architect-appearance-dialogs/appearance-1-diagram-1-themes-list.png
988
1005
  - reference-docs/enterprise-architect-appearance-dialogs/appearance-1-diagram-1-themes.png
989
1006
  - reference-docs/enterprise-architect-appearance-dialogs/appearance-1-diagram-2-gradients.png
data/lutaml-uml-0.5.1.gem DELETED
Binary file