Class: Xmi::Sparx::SparxRoot
- Inherits:
-
Root
- Object
- Lutaml::Model::Serializable
- Root
- Xmi::Sparx::SparxRoot
- Defined in:
- lib/xmi/sparx/root.rb
Class Method Summary collapse
-
.fix_encoding(xml_content) ⇒ String
Fix invalid UTF-8 encoding in the XML content.
-
.parse_xml(xml_content) ⇒ SparxRoot
Parse XMI content into Ruby objects.
Instance Method Summary collapse
-
#build_index ⇒ Sparx::Index
Build index for fast lookups.
-
#index ⇒ Sparx::Index
Access the index (builds on first access if needed).
Methods included from XmiIdentity::Attributes
Methods inherited from Lutaml::Model::Serializable
Class Method Details
.fix_encoding(xml_content) ⇒ String
Fix invalid UTF-8 encoding in the XML content.
Some EA-generated XMI files contain invalid UTF-8 byte sequences that would cause parsing failures. This method replaces invalid bytes with placeholder characters.
48 49 50 51 52 53 54 |
# File 'lib/xmi/sparx/root.rb', line 48 def fix_encoding(xml_content) return xml_content if xml_content.valid_encoding? xml_content .encode("UTF-16be", invalid: :replace, replace: "?") .encode("UTF-8") end |
.parse_xml(xml_content) ⇒ SparxRoot
Parse XMI content into Ruby objects.
Uses the ParserPipeline for composable parsing steps: encoding fix → version detection → XML parsing → index building.
33 34 35 36 37 38 |
# File 'lib/xmi/sparx/root.rb', line 33 def parse_xml(xml_content) ctx = ParserPipeline.run( { xml: xml_content, root_class: self }, ) ctx[:root] end |
Instance Method Details
#build_index ⇒ Sparx::Index
Build index for fast lookups
62 63 64 |
# File 'lib/xmi/sparx/root.rb', line 62 def build_index @index = Index.new(self) end |
#index ⇒ Sparx::Index
Access the index (builds on first access if needed)
68 69 70 |
# File 'lib/xmi/sparx/root.rb', line 68 def index @index || build_index end |