ea 0.1.0 → 0.1.4

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 (227) hide show
  1. checksums.yaml +4 -4
  2. data/CLAUDE.md +125 -0
  3. data/Rakefile +12 -4
  4. data/TODO.next/00-publish-blocking-bugs.md +74 -0
  5. data/TODO.next/01-standalone-ea-gem-identity.md +76 -0
  6. data/TODO.next/02-optional-lutaml-uml-dependency.md +47 -0
  7. data/TODO.next/03-slim-lutaml-uml.md +79 -0
  8. data/TODO.next/04-loader-registry-for-uml-repository.md +49 -0
  9. data/TODO.next/05-extract-shared-transformer-methods.md +14 -0
  10. data/TODO.next/06-deduplicate-stereotype-loading.md +17 -0
  11. data/TODO.next/07-transformer-registry-in-factory.md +20 -0
  12. data/TODO.next/08-connector-type-registry.md +27 -0
  13. data/TODO.next/09-element-renderer-registry.md +29 -0
  14. data/TODO.next/10-connector-renderer-lsp.md +18 -0
  15. data/TODO.next/11-consolidate-style-knowledge.md +33 -0
  16. data/TODO.next/12-data-driven-from-db-row.md +24 -0
  17. data/TODO.next/13-extract-duplicated-methods.md +17 -0
  18. data/TODO.next/14-remove-dead-code.md +10 -0
  19. data/TODO.next/15-narrow-exception-handling.md +39 -0
  20. data/TODO.next/16-repository-indexes.md +28 -0
  21. data/TODO.next/17-fix-spec-quality-and-coverage.md +32 -0
  22. data/TODO.next/18-xmi-tool-specific-parser-architecture.md +172 -0
  23. data/TODO.next/19-fix-ea-gemspec-dependency-declarations.md +56 -0
  24. data/TODO.next/20-ci-requires-unreleased-lutaml-uml.md +63 -0
  25. data/TODO.next/21-qeatoxmi-via-xmi-gem.md +340 -0
  26. data/TODO.next/22-strip-respond-to-from-qeatoxmi-specs.md +32 -0
  27. data/TODO.next/23-cleanup-idallocator.md +41 -0
  28. data/TODO.next/24-tighten-parity-specs.md +42 -0
  29. data/TODO.next/25-sparx-eaid-format-for-synthesized-ids.md +62 -0
  30. data/TODO.next/26-fix-uppervalue-lowervalue-count-gap.md +51 -0
  31. data/TODO.next/27-extract-cardinality-module.md +68 -0
  32. data/TODO.next/28-extract-xml-sanitizer.md +51 -0
  33. data/TODO.next/29-ocp-registry-for-classifier-builders.md +58 -0
  34. data/TODO.next/30-struct-return-for-association-end.md +37 -0
  35. data/TODO.next/31-idallocator-specs.md +27 -0
  36. data/TODO.next/32-phase2-gap-sentinel-specs.md +53 -0
  37. data/TODO.next/33-normalize-lower-cleanup.md +30 -0
  38. data/TODO.next/34-document-member-end-order-rt-prefix.md +29 -0
  39. data/TODO.next/35-walk-runstate-for-instance-slots.md +76 -0
  40. data/TODO.next/36-wire-interface-realization.md +50 -0
  41. data/TODO.next/37-visibility-returns-real-booleans.md +36 -0
  42. data/config/diagram_styles.yml +200 -0
  43. data/config/model_transformations.yml +266 -0
  44. data/config/qea_schema.yml +1024 -0
  45. data/docs/ea_to_uml_type_mapping.md +89 -0
  46. data/docs/xmi_qea_conversion_capabilities.md +99 -0
  47. data/examples/lur/20251010_current_plateau_v5.1.lur +0 -0
  48. data/examples/lur/basic.lur +0 -0
  49. data/examples/lur/test-output.lur +0 -0
  50. data/examples/lur/test.lur +0 -0
  51. data/examples/lur_basic_usage.rb +221 -0
  52. data/examples/lur_cli_workflow.rb +263 -0
  53. data/examples/lur_statistics.rb +326 -0
  54. data/examples/qea/20251010_current_plateau_v5.1.qea +0 -0
  55. data/examples/qea/ArcGISWorkspace_template.qea +0 -0
  56. data/examples/qea/README_qea_parser.adoc +230 -0
  57. data/examples/qea/UmlModel_template.qea +0 -0
  58. data/examples/qea/basic.qea +0 -0
  59. data/examples/qea/simple.qea +0 -0
  60. data/examples/qea/simple_example.qea +0 -0
  61. data/examples/qea/test.qea +0 -0
  62. data/examples/qea_standalone_query.rb +73 -0
  63. data/examples/qea_to_repository.rb +51 -0
  64. data/examples/smoke_test_real_qea.rb +81 -0
  65. data/exe/ea +7 -0
  66. data/lib/ea/cli/app.rb +72 -0
  67. data/lib/ea/cli/command/base.rb +80 -0
  68. data/lib/ea/cli/command/convert.rb +62 -0
  69. data/lib/ea/cli/command/diagrams.rb +81 -0
  70. data/lib/ea/cli/command/list.rb +61 -0
  71. data/lib/ea/cli/command/parse.rb +29 -0
  72. data/lib/ea/cli/command/stats.rb +20 -0
  73. data/lib/ea/cli/command/validate.rb +41 -0
  74. data/lib/ea/cli/command.rb +15 -0
  75. data/lib/ea/cli/error.rb +34 -0
  76. data/lib/ea/cli/output/formatter.rb +34 -0
  77. data/lib/ea/cli/output/json_formatter.rb +20 -0
  78. data/lib/ea/cli/output/table_formatter.rb +42 -0
  79. data/lib/ea/cli/output/yaml_formatter.rb +20 -0
  80. data/lib/ea/cli/output.rb +56 -0
  81. data/lib/ea/cli.rb +17 -0
  82. data/lib/ea/diagram/configuration.rb +379 -0
  83. data/lib/ea/diagram/element_renderers/base_renderer.rb +77 -0
  84. data/lib/ea/diagram/element_renderers/class_renderer.rb +323 -0
  85. data/lib/ea/diagram/element_renderers/connector_renderer.rb +41 -0
  86. data/lib/ea/diagram/element_renderers/package_renderer.rb +61 -0
  87. data/lib/ea/diagram/element_renderers.rb +43 -0
  88. data/lib/ea/diagram/extractor.rb +560 -0
  89. data/lib/ea/diagram/layout_engine.rb +170 -0
  90. data/lib/ea/diagram/path_builder.rb +202 -0
  91. data/lib/ea/diagram/style_parser.rb +42 -0
  92. data/lib/ea/diagram/style_resolver.rb +276 -0
  93. data/lib/ea/diagram/svg_renderer.rb +274 -0
  94. data/lib/ea/diagram/util.rb +73 -0
  95. data/lib/ea/diagram.rb +47 -0
  96. data/lib/ea/qea/benchmark.rb +210 -0
  97. data/lib/ea/qea/database.rb +308 -0
  98. data/lib/ea/qea/factory/association_builder.rb +203 -0
  99. data/lib/ea/qea/factory/association_transformer.rb +91 -0
  100. data/lib/ea/qea/factory/attribute_tag_transformer.rb +57 -0
  101. data/lib/ea/qea/factory/attribute_transformer.rb +93 -0
  102. data/lib/ea/qea/factory/base_transformer.rb +177 -0
  103. data/lib/ea/qea/factory/class_transformer.rb +116 -0
  104. data/lib/ea/qea/factory/constraint_transformer.rb +75 -0
  105. data/lib/ea/qea/factory/data_type_transformer.rb +77 -0
  106. data/lib/ea/qea/factory/diagram_transformer.rb +157 -0
  107. data/lib/ea/qea/factory/document_builder.rb +283 -0
  108. data/lib/ea/qea/factory/ea_to_uml_factory.rb +229 -0
  109. data/lib/ea/qea/factory/enum_transformer.rb +74 -0
  110. data/lib/ea/qea/factory/generalization_builder.rb +227 -0
  111. data/lib/ea/qea/factory/generalization_transformer.rb +98 -0
  112. data/lib/ea/qea/factory/instance_transformer.rb +68 -0
  113. data/lib/ea/qea/factory/object_property_transformer.rb +58 -0
  114. data/lib/ea/qea/factory/operation_transformer.rb +66 -0
  115. data/lib/ea/qea/factory/package_transformer.rb +145 -0
  116. data/lib/ea/qea/factory/reference_resolver.rb +99 -0
  117. data/lib/ea/qea/factory/stereotype_loader.rb +39 -0
  118. data/lib/ea/qea/factory/tagged_value_transformer.rb +38 -0
  119. data/lib/ea/qea/factory/transformer_registry.rb +80 -0
  120. data/lib/ea/qea/factory.rb +37 -0
  121. data/lib/ea/qea/file_detector.rb +178 -0
  122. data/lib/ea/qea/infrastructure/database_connection.rb +100 -0
  123. data/lib/ea/qea/infrastructure/schema_reader.rb +136 -0
  124. data/lib/ea/qea/infrastructure/table_reader.rb +224 -0
  125. data/lib/ea/qea/infrastructure.rb +12 -0
  126. data/lib/ea/qea/models/base_model.rb +59 -0
  127. data/lib/ea/qea/models/ea_attribute.rb +109 -0
  128. data/lib/ea/qea/models/ea_attribute_tag.rb +100 -0
  129. data/lib/ea/qea/models/ea_complexity_type.rb +79 -0
  130. data/lib/ea/qea/models/ea_connector.rb +160 -0
  131. data/lib/ea/qea/models/ea_connector_type.rb +60 -0
  132. data/lib/ea/qea/models/ea_constraint_type.rb +63 -0
  133. data/lib/ea/qea/models/ea_datatype.rb +104 -0
  134. data/lib/ea/qea/models/ea_diagram.rb +115 -0
  135. data/lib/ea/qea/models/ea_diagram_link.rb +78 -0
  136. data/lib/ea/qea/models/ea_diagram_object.rb +73 -0
  137. data/lib/ea/qea/models/ea_diagram_type.rb +56 -0
  138. data/lib/ea/qea/models/ea_document.rb +63 -0
  139. data/lib/ea/qea/models/ea_object.rb +223 -0
  140. data/lib/ea/qea/models/ea_object_constraint.rb +53 -0
  141. data/lib/ea/qea/models/ea_object_property.rb +87 -0
  142. data/lib/ea/qea/models/ea_object_type.rb +73 -0
  143. data/lib/ea/qea/models/ea_operation.rb +127 -0
  144. data/lib/ea/qea/models/ea_operation_param.rb +76 -0
  145. data/lib/ea/qea/models/ea_package.rb +78 -0
  146. data/lib/ea/qea/models/ea_script.rb +62 -0
  147. data/lib/ea/qea/models/ea_status_type.rb +66 -0
  148. data/lib/ea/qea/models/ea_stereotype.rb +57 -0
  149. data/lib/ea/qea/models/ea_tagged_value.rb +99 -0
  150. data/lib/ea/qea/models/ea_xref.rb +165 -0
  151. data/lib/ea/qea/models.rb +35 -0
  152. data/lib/ea/qea/repositories/base_repository.rb +225 -0
  153. data/lib/ea/qea/repositories/object_repository.rb +219 -0
  154. data/lib/ea/qea/repositories.rb +10 -0
  155. data/lib/ea/qea/services/configuration.rb +211 -0
  156. data/lib/ea/qea/services/database_loader.rb +191 -0
  157. data/lib/ea/qea/services.rb +10 -0
  158. data/lib/ea/qea/validation/association_validator.rb +73 -0
  159. data/lib/ea/qea/validation/attribute_validator.rb +91 -0
  160. data/lib/ea/qea/validation/base_validator.rb +331 -0
  161. data/lib/ea/qea/validation/class_validator.rb +121 -0
  162. data/lib/ea/qea/validation/database/circular_reference_validator.rb +109 -0
  163. data/lib/ea/qea/validation/database/orphan_validator.rb +153 -0
  164. data/lib/ea/qea/validation/database/referential_integrity_validator.rb +128 -0
  165. data/lib/ea/qea/validation/database.rb +16 -0
  166. data/lib/ea/qea/validation/diagram_validator.rb +112 -0
  167. data/lib/ea/qea/validation/formatters/json_formatter.rb +137 -0
  168. data/lib/ea/qea/validation/formatters/text_formatter.rb +235 -0
  169. data/lib/ea/qea/validation/formatters.rb +12 -0
  170. data/lib/ea/qea/validation/operation_validator.rb +71 -0
  171. data/lib/ea/qea/validation/package_validator.rb +111 -0
  172. data/lib/ea/qea/validation/validation_engine.rb +387 -0
  173. data/lib/ea/qea/validation/validation_message.rb +144 -0
  174. data/lib/ea/qea/validation/validation_result.rb +210 -0
  175. data/lib/ea/qea/validation/validator_registry.rb +134 -0
  176. data/lib/ea/qea/validation.rb +28 -0
  177. data/lib/ea/qea/verification/comparison_result.rb +264 -0
  178. data/lib/ea/qea/verification/document_normalizer.rb +169 -0
  179. data/lib/ea/qea/verification/document_verifier.rb +322 -0
  180. data/lib/ea/qea/verification/element_comparator.rb +277 -0
  181. data/lib/ea/qea/verification/structure_matcher.rb +287 -0
  182. data/lib/ea/qea/verification.rb +14 -0
  183. data/lib/ea/qea.rb +185 -0
  184. data/lib/ea/transformations/configuration.rb +333 -0
  185. data/lib/ea/transformations/format_registry.rb +366 -0
  186. data/lib/ea/transformations/parsers/base_parser.rb +482 -0
  187. data/lib/ea/transformations/parsers/qea_parser.rb +401 -0
  188. data/lib/ea/transformations/parsers/xmi_parser.rb +243 -0
  189. data/lib/ea/transformations/transformation_engine.rb +390 -0
  190. data/lib/ea/transformations.rb +85 -0
  191. data/lib/ea/transformers/qea_to_xmi/association_end.rb +19 -0
  192. data/lib/ea/transformers/qea_to_xmi/cardinality.rb +96 -0
  193. data/lib/ea/transformers/qea_to_xmi/context.rb +106 -0
  194. data/lib/ea/transformers/qea_to_xmi/guid_format.rb +56 -0
  195. data/lib/ea/transformers/qea_to_xmi/id_allocator.rb +92 -0
  196. data/lib/ea/transformers/qea_to_xmi/run_state.rb +107 -0
  197. data/lib/ea/transformers/qea_to_xmi/transformer.rb +607 -0
  198. data/lib/ea/transformers/qea_to_xmi/visibility.rb +73 -0
  199. data/lib/ea/transformers/qea_to_xmi.rb +29 -0
  200. data/lib/ea/transformers/uml_to_xmi/id_generator.rb +54 -0
  201. data/lib/ea/transformers/uml_to_xmi/transformer.rb +152 -0
  202. data/lib/ea/transformers/uml_to_xmi/writer.rb +96 -0
  203. data/lib/ea/transformers/uml_to_xmi.rb +16 -0
  204. data/lib/ea/transformers.rb +34 -0
  205. data/lib/ea/version.rb +1 -1
  206. data/lib/ea/xmi/liquid_drops/association_drop.rb +56 -0
  207. data/lib/ea/xmi/liquid_drops/attribute_drop.rb +72 -0
  208. data/lib/ea/xmi/liquid_drops/cardinality_drop.rb +35 -0
  209. data/lib/ea/xmi/liquid_drops/connector_drop.rb +54 -0
  210. data/lib/ea/xmi/liquid_drops/constraint_drop.rb +29 -0
  211. data/lib/ea/xmi/liquid_drops/data_type_drop.rb +63 -0
  212. data/lib/ea/xmi/liquid_drops/dependency_drop.rb +36 -0
  213. data/lib/ea/xmi/liquid_drops/diagram_drop.rb +34 -0
  214. data/lib/ea/xmi/liquid_drops/enum_drop.rb +49 -0
  215. data/lib/ea/xmi/liquid_drops/enum_owned_literal_drop.rb +25 -0
  216. data/lib/ea/xmi/liquid_drops/generalization_attribute_drop.rb +87 -0
  217. data/lib/ea/xmi/liquid_drops/generalization_drop.rb +127 -0
  218. data/lib/ea/xmi/liquid_drops/klass_drop.rb +191 -0
  219. data/lib/ea/xmi/liquid_drops/operation_drop.rb +29 -0
  220. data/lib/ea/xmi/liquid_drops/package_drop.rb +108 -0
  221. data/lib/ea/xmi/liquid_drops/root_drop.rb +34 -0
  222. data/lib/ea/xmi/liquid_drops/source_target_drop.rb +43 -0
  223. data/lib/ea/xmi/lookup_service.rb +89 -0
  224. data/lib/ea/xmi/parser.rb +919 -0
  225. data/lib/ea/xmi.rb +35 -0
  226. data/lib/ea.rb +10 -1
  227. metadata +382 -9
data/lib/ea/xmi.rb ADDED
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "nokogiri"
4
+ require "xmi"
5
+ require "liquid"
6
+ require "cgi"
7
+
8
+ module Ea
9
+ module Xmi
10
+ autoload :Parser, "ea/xmi/parser"
11
+ autoload :LookupService, "ea/xmi/lookup_service"
12
+
13
+ module LiquidDrops
14
+ autoload :RootDrop, "ea/xmi/liquid_drops/root_drop"
15
+ autoload :PackageDrop, "ea/xmi/liquid_drops/package_drop"
16
+ autoload :KlassDrop, "ea/xmi/liquid_drops/klass_drop"
17
+ autoload :AttributeDrop, "ea/xmi/liquid_drops/attribute_drop"
18
+ autoload :OperationDrop, "ea/xmi/liquid_drops/operation_drop"
19
+ autoload :AssociationDrop, "ea/xmi/liquid_drops/association_drop"
20
+ autoload :GeneralizationDrop, "ea/xmi/liquid_drops/generalization_drop"
21
+ autoload :GeneralizationAttributeDrop,
22
+ "ea/xmi/liquid_drops/generalization_attribute_drop"
23
+ autoload :DependencyDrop, "ea/xmi/liquid_drops/dependency_drop"
24
+ autoload :ConstraintDrop, "ea/xmi/liquid_drops/constraint_drop"
25
+ autoload :DiagramDrop, "ea/xmi/liquid_drops/diagram_drop"
26
+ autoload :EnumDrop, "ea/xmi/liquid_drops/enum_drop"
27
+ autoload :EnumOwnedLiteralDrop,
28
+ "ea/xmi/liquid_drops/enum_owned_literal_drop"
29
+ autoload :DataTypeDrop, "ea/xmi/liquid_drops/data_type_drop"
30
+ autoload :CardinalityDrop, "ea/xmi/liquid_drops/cardinality_drop"
31
+ autoload :ConnectorDrop, "ea/xmi/liquid_drops/connector_drop"
32
+ autoload :SourceTargetDrop, "ea/xmi/liquid_drops/source_target_drop"
33
+ end
34
+ end
35
+ end
data/lib/ea.rb CHANGED
@@ -1,8 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Load VERSION constant (defined in ea/version.rb per gemspec/gem-release
4
+ # convention). Use require_relative to avoid load-path dependencies during
5
+ # gemspec evaluation.
3
6
  require_relative "ea/version"
4
7
 
5
8
  module Ea
6
9
  class Error < StandardError; end
7
- # Your code goes here...
10
+
11
+ autoload :Qea, "ea/qea"
12
+ autoload :Diagram, "ea/diagram"
13
+ autoload :Transformations, "ea/transformations"
14
+ autoload :Xmi, "ea/xmi"
15
+ autoload :Transformers, "ea/transformers"
16
+ autoload :Cli, "ea/cli"
8
17
  end
metadata CHANGED
@@ -1,29 +1,400 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ea
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
+ autorequire:
8
9
  bindir: exe
9
10
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
11
- dependencies: []
12
- description: EA is a Ruby library for parsing Enterprise Architect data files, including
13
- QEA. It provides an easy-to-use interface for extracting information from EA models,
14
- making it easier to work with EA data in Ruby applications.
11
+ date: 2026-07-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: lutaml-model
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: lutaml-path
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: sqlite3
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubyzip
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: xmi
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.5'
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: 0.5.2
79
+ type: :runtime
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - "~>"
84
+ - !ruby/object:Gem::Version
85
+ version: '0.5'
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: 0.5.2
89
+ - !ruby/object:Gem::Dependency
90
+ name: nokogiri
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '1.18'
96
+ type: :runtime
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '1.18'
103
+ - !ruby/object:Gem::Dependency
104
+ name: liquid
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: thor
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '1.4'
124
+ type: :runtime
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '1.4'
131
+ - !ruby/object:Gem::Dependency
132
+ name: lutaml-uml
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: 0.2.0
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: 0.2.0
145
+ - !ruby/object:Gem::Dependency
146
+ name: rubocop
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ description: ea is a standalone Ruby gem for parsing Enterprise Architect data files
160
+ (QEA format, Sparx XMI). It provides QEA database parsing, EA diagram rendering,
161
+ and EA data validation. The UML bridge (Ea::Qea.to_uml) optionally requires the
162
+ lutaml-uml gem.
15
163
  email:
16
164
  - open.source@ribose.com
17
- executables: []
165
+ executables:
166
+ - ea
18
167
  extensions: []
19
168
  extra_rdoc_files: []
20
169
  files:
21
170
  - CHANGELOG.md
171
+ - CLAUDE.md
22
172
  - CODE_OF_CONDUCT.md
23
173
  - README.md
24
174
  - Rakefile
175
+ - TODO.next/00-publish-blocking-bugs.md
176
+ - TODO.next/01-standalone-ea-gem-identity.md
177
+ - TODO.next/02-optional-lutaml-uml-dependency.md
178
+ - TODO.next/03-slim-lutaml-uml.md
179
+ - TODO.next/04-loader-registry-for-uml-repository.md
180
+ - TODO.next/05-extract-shared-transformer-methods.md
181
+ - TODO.next/06-deduplicate-stereotype-loading.md
182
+ - TODO.next/07-transformer-registry-in-factory.md
183
+ - TODO.next/08-connector-type-registry.md
184
+ - TODO.next/09-element-renderer-registry.md
185
+ - TODO.next/10-connector-renderer-lsp.md
186
+ - TODO.next/11-consolidate-style-knowledge.md
187
+ - TODO.next/12-data-driven-from-db-row.md
188
+ - TODO.next/13-extract-duplicated-methods.md
189
+ - TODO.next/14-remove-dead-code.md
190
+ - TODO.next/15-narrow-exception-handling.md
191
+ - TODO.next/16-repository-indexes.md
192
+ - TODO.next/17-fix-spec-quality-and-coverage.md
193
+ - TODO.next/18-xmi-tool-specific-parser-architecture.md
194
+ - TODO.next/19-fix-ea-gemspec-dependency-declarations.md
195
+ - TODO.next/20-ci-requires-unreleased-lutaml-uml.md
196
+ - TODO.next/21-qeatoxmi-via-xmi-gem.md
197
+ - TODO.next/22-strip-respond-to-from-qeatoxmi-specs.md
198
+ - TODO.next/23-cleanup-idallocator.md
199
+ - TODO.next/24-tighten-parity-specs.md
200
+ - TODO.next/25-sparx-eaid-format-for-synthesized-ids.md
201
+ - TODO.next/26-fix-uppervalue-lowervalue-count-gap.md
202
+ - TODO.next/27-extract-cardinality-module.md
203
+ - TODO.next/28-extract-xml-sanitizer.md
204
+ - TODO.next/29-ocp-registry-for-classifier-builders.md
205
+ - TODO.next/30-struct-return-for-association-end.md
206
+ - TODO.next/31-idallocator-specs.md
207
+ - TODO.next/32-phase2-gap-sentinel-specs.md
208
+ - TODO.next/33-normalize-lower-cleanup.md
209
+ - TODO.next/34-document-member-end-order-rt-prefix.md
210
+ - TODO.next/35-walk-runstate-for-instance-slots.md
211
+ - TODO.next/36-wire-interface-realization.md
212
+ - TODO.next/37-visibility-returns-real-booleans.md
213
+ - config/diagram_styles.yml
214
+ - config/model_transformations.yml
215
+ - config/qea_schema.yml
216
+ - docs/ea_to_uml_type_mapping.md
217
+ - docs/xmi_qea_conversion_capabilities.md
218
+ - examples/lur/20251010_current_plateau_v5.1.lur
219
+ - examples/lur/basic.lur
220
+ - examples/lur/test-output.lur
221
+ - examples/lur/test.lur
222
+ - examples/lur_basic_usage.rb
223
+ - examples/lur_cli_workflow.rb
224
+ - examples/lur_statistics.rb
225
+ - examples/qea/20251010_current_plateau_v5.1.qea
226
+ - examples/qea/ArcGISWorkspace_template.qea
227
+ - examples/qea/README_qea_parser.adoc
228
+ - examples/qea/UmlModel_template.qea
229
+ - examples/qea/basic.qea
230
+ - examples/qea/simple.qea
231
+ - examples/qea/simple_example.qea
232
+ - examples/qea/test.qea
233
+ - examples/qea_standalone_query.rb
234
+ - examples/qea_to_repository.rb
235
+ - examples/smoke_test_real_qea.rb
236
+ - exe/ea
25
237
  - lib/ea.rb
238
+ - lib/ea/cli.rb
239
+ - lib/ea/cli/app.rb
240
+ - lib/ea/cli/command.rb
241
+ - lib/ea/cli/command/base.rb
242
+ - lib/ea/cli/command/convert.rb
243
+ - lib/ea/cli/command/diagrams.rb
244
+ - lib/ea/cli/command/list.rb
245
+ - lib/ea/cli/command/parse.rb
246
+ - lib/ea/cli/command/stats.rb
247
+ - lib/ea/cli/command/validate.rb
248
+ - lib/ea/cli/error.rb
249
+ - lib/ea/cli/output.rb
250
+ - lib/ea/cli/output/formatter.rb
251
+ - lib/ea/cli/output/json_formatter.rb
252
+ - lib/ea/cli/output/table_formatter.rb
253
+ - lib/ea/cli/output/yaml_formatter.rb
254
+ - lib/ea/diagram.rb
255
+ - lib/ea/diagram/configuration.rb
256
+ - lib/ea/diagram/element_renderers.rb
257
+ - lib/ea/diagram/element_renderers/base_renderer.rb
258
+ - lib/ea/diagram/element_renderers/class_renderer.rb
259
+ - lib/ea/diagram/element_renderers/connector_renderer.rb
260
+ - lib/ea/diagram/element_renderers/package_renderer.rb
261
+ - lib/ea/diagram/extractor.rb
262
+ - lib/ea/diagram/layout_engine.rb
263
+ - lib/ea/diagram/path_builder.rb
264
+ - lib/ea/diagram/style_parser.rb
265
+ - lib/ea/diagram/style_resolver.rb
266
+ - lib/ea/diagram/svg_renderer.rb
267
+ - lib/ea/diagram/util.rb
268
+ - lib/ea/qea.rb
269
+ - lib/ea/qea/benchmark.rb
270
+ - lib/ea/qea/database.rb
271
+ - lib/ea/qea/factory.rb
272
+ - lib/ea/qea/factory/association_builder.rb
273
+ - lib/ea/qea/factory/association_transformer.rb
274
+ - lib/ea/qea/factory/attribute_tag_transformer.rb
275
+ - lib/ea/qea/factory/attribute_transformer.rb
276
+ - lib/ea/qea/factory/base_transformer.rb
277
+ - lib/ea/qea/factory/class_transformer.rb
278
+ - lib/ea/qea/factory/constraint_transformer.rb
279
+ - lib/ea/qea/factory/data_type_transformer.rb
280
+ - lib/ea/qea/factory/diagram_transformer.rb
281
+ - lib/ea/qea/factory/document_builder.rb
282
+ - lib/ea/qea/factory/ea_to_uml_factory.rb
283
+ - lib/ea/qea/factory/enum_transformer.rb
284
+ - lib/ea/qea/factory/generalization_builder.rb
285
+ - lib/ea/qea/factory/generalization_transformer.rb
286
+ - lib/ea/qea/factory/instance_transformer.rb
287
+ - lib/ea/qea/factory/object_property_transformer.rb
288
+ - lib/ea/qea/factory/operation_transformer.rb
289
+ - lib/ea/qea/factory/package_transformer.rb
290
+ - lib/ea/qea/factory/reference_resolver.rb
291
+ - lib/ea/qea/factory/stereotype_loader.rb
292
+ - lib/ea/qea/factory/tagged_value_transformer.rb
293
+ - lib/ea/qea/factory/transformer_registry.rb
294
+ - lib/ea/qea/file_detector.rb
295
+ - lib/ea/qea/infrastructure.rb
296
+ - lib/ea/qea/infrastructure/database_connection.rb
297
+ - lib/ea/qea/infrastructure/schema_reader.rb
298
+ - lib/ea/qea/infrastructure/table_reader.rb
299
+ - lib/ea/qea/models.rb
300
+ - lib/ea/qea/models/base_model.rb
301
+ - lib/ea/qea/models/ea_attribute.rb
302
+ - lib/ea/qea/models/ea_attribute_tag.rb
303
+ - lib/ea/qea/models/ea_complexity_type.rb
304
+ - lib/ea/qea/models/ea_connector.rb
305
+ - lib/ea/qea/models/ea_connector_type.rb
306
+ - lib/ea/qea/models/ea_constraint_type.rb
307
+ - lib/ea/qea/models/ea_datatype.rb
308
+ - lib/ea/qea/models/ea_diagram.rb
309
+ - lib/ea/qea/models/ea_diagram_link.rb
310
+ - lib/ea/qea/models/ea_diagram_object.rb
311
+ - lib/ea/qea/models/ea_diagram_type.rb
312
+ - lib/ea/qea/models/ea_document.rb
313
+ - lib/ea/qea/models/ea_object.rb
314
+ - lib/ea/qea/models/ea_object_constraint.rb
315
+ - lib/ea/qea/models/ea_object_property.rb
316
+ - lib/ea/qea/models/ea_object_type.rb
317
+ - lib/ea/qea/models/ea_operation.rb
318
+ - lib/ea/qea/models/ea_operation_param.rb
319
+ - lib/ea/qea/models/ea_package.rb
320
+ - lib/ea/qea/models/ea_script.rb
321
+ - lib/ea/qea/models/ea_status_type.rb
322
+ - lib/ea/qea/models/ea_stereotype.rb
323
+ - lib/ea/qea/models/ea_tagged_value.rb
324
+ - lib/ea/qea/models/ea_xref.rb
325
+ - lib/ea/qea/repositories.rb
326
+ - lib/ea/qea/repositories/base_repository.rb
327
+ - lib/ea/qea/repositories/object_repository.rb
328
+ - lib/ea/qea/services.rb
329
+ - lib/ea/qea/services/configuration.rb
330
+ - lib/ea/qea/services/database_loader.rb
331
+ - lib/ea/qea/validation.rb
332
+ - lib/ea/qea/validation/association_validator.rb
333
+ - lib/ea/qea/validation/attribute_validator.rb
334
+ - lib/ea/qea/validation/base_validator.rb
335
+ - lib/ea/qea/validation/class_validator.rb
336
+ - lib/ea/qea/validation/database.rb
337
+ - lib/ea/qea/validation/database/circular_reference_validator.rb
338
+ - lib/ea/qea/validation/database/orphan_validator.rb
339
+ - lib/ea/qea/validation/database/referential_integrity_validator.rb
340
+ - lib/ea/qea/validation/diagram_validator.rb
341
+ - lib/ea/qea/validation/formatters.rb
342
+ - lib/ea/qea/validation/formatters/json_formatter.rb
343
+ - lib/ea/qea/validation/formatters/text_formatter.rb
344
+ - lib/ea/qea/validation/operation_validator.rb
345
+ - lib/ea/qea/validation/package_validator.rb
346
+ - lib/ea/qea/validation/validation_engine.rb
347
+ - lib/ea/qea/validation/validation_message.rb
348
+ - lib/ea/qea/validation/validation_result.rb
349
+ - lib/ea/qea/validation/validator_registry.rb
350
+ - lib/ea/qea/verification.rb
351
+ - lib/ea/qea/verification/comparison_result.rb
352
+ - lib/ea/qea/verification/document_normalizer.rb
353
+ - lib/ea/qea/verification/document_verifier.rb
354
+ - lib/ea/qea/verification/element_comparator.rb
355
+ - lib/ea/qea/verification/structure_matcher.rb
356
+ - lib/ea/transformations.rb
357
+ - lib/ea/transformations/configuration.rb
358
+ - lib/ea/transformations/format_registry.rb
359
+ - lib/ea/transformations/parsers/base_parser.rb
360
+ - lib/ea/transformations/parsers/qea_parser.rb
361
+ - lib/ea/transformations/parsers/xmi_parser.rb
362
+ - lib/ea/transformations/transformation_engine.rb
363
+ - lib/ea/transformers.rb
364
+ - lib/ea/transformers/qea_to_xmi.rb
365
+ - lib/ea/transformers/qea_to_xmi/association_end.rb
366
+ - lib/ea/transformers/qea_to_xmi/cardinality.rb
367
+ - lib/ea/transformers/qea_to_xmi/context.rb
368
+ - lib/ea/transformers/qea_to_xmi/guid_format.rb
369
+ - lib/ea/transformers/qea_to_xmi/id_allocator.rb
370
+ - lib/ea/transformers/qea_to_xmi/run_state.rb
371
+ - lib/ea/transformers/qea_to_xmi/transformer.rb
372
+ - lib/ea/transformers/qea_to_xmi/visibility.rb
373
+ - lib/ea/transformers/uml_to_xmi.rb
374
+ - lib/ea/transformers/uml_to_xmi/id_generator.rb
375
+ - lib/ea/transformers/uml_to_xmi/transformer.rb
376
+ - lib/ea/transformers/uml_to_xmi/writer.rb
26
377
  - lib/ea/version.rb
378
+ - lib/ea/xmi.rb
379
+ - lib/ea/xmi/liquid_drops/association_drop.rb
380
+ - lib/ea/xmi/liquid_drops/attribute_drop.rb
381
+ - lib/ea/xmi/liquid_drops/cardinality_drop.rb
382
+ - lib/ea/xmi/liquid_drops/connector_drop.rb
383
+ - lib/ea/xmi/liquid_drops/constraint_drop.rb
384
+ - lib/ea/xmi/liquid_drops/data_type_drop.rb
385
+ - lib/ea/xmi/liquid_drops/dependency_drop.rb
386
+ - lib/ea/xmi/liquid_drops/diagram_drop.rb
387
+ - lib/ea/xmi/liquid_drops/enum_drop.rb
388
+ - lib/ea/xmi/liquid_drops/enum_owned_literal_drop.rb
389
+ - lib/ea/xmi/liquid_drops/generalization_attribute_drop.rb
390
+ - lib/ea/xmi/liquid_drops/generalization_drop.rb
391
+ - lib/ea/xmi/liquid_drops/klass_drop.rb
392
+ - lib/ea/xmi/liquid_drops/operation_drop.rb
393
+ - lib/ea/xmi/liquid_drops/package_drop.rb
394
+ - lib/ea/xmi/liquid_drops/root_drop.rb
395
+ - lib/ea/xmi/liquid_drops/source_target_drop.rb
396
+ - lib/ea/xmi/lookup_service.rb
397
+ - lib/ea/xmi/parser.rb
27
398
  - sig/ea.rbs
28
399
  homepage: https://github.com/lutaml/ea
29
400
  licenses: []
@@ -31,6 +402,7 @@ metadata:
31
402
  homepage_uri: https://github.com/lutaml/ea
32
403
  source_code_uri: https://github.com/lutaml/ea
33
404
  changelog_uri: https://github.com/lutaml/ea/blob/main/CHANGELOG.md
405
+ post_install_message:
34
406
  rdoc_options: []
35
407
  require_paths:
36
408
  - lib
@@ -45,7 +417,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
45
417
  - !ruby/object:Gem::Version
46
418
  version: '0'
47
419
  requirements: []
48
- rubygems_version: 3.6.9
420
+ rubygems_version: 3.5.22
421
+ signing_key:
49
422
  specification_version: 4
50
- summary: Enterprise Architect data file parser
423
+ summary: Standalone Enterprise Architect data file parser
51
424
  test_files: []