Skip to content

lutaml/ea

Repository files navigation

ea

Standalone Ruby gem for parsing Sparx Enterprise Architect data files (QEA SQLite database and Sparx XMI). Pure parse, optional bridge to lutaml-uml for cross-vendor UML output and SPA generation.

Installation

gem install ea

For SPA generation (optional):

gem install ea lutaml-uml

Or in your Gemfile:

source "https://rubygems.org"
gem "ea", "~> 0.2"
gem "lutaml-uml", "~> 0.5"   # optional: SPA + SVG diagram rendering

Quick start

Parse a QEA file (pure — no lutaml-uml needed)

require "ea"

db = Ea.parse("model.qea")   #=> Ea::Qea::Database
puts "#{db.packages.size} packages, #{db.objects.size} objects"

Generate a SPA from QEA (requires lutaml-uml)

ea spa model.qea --output browser.html

Produces a single-file Vue IIFE HTML (~300KB for a typical model) with package hierarchy, class details, and diagram navigation.

Generate Sparx XMI from QEA (pure — no lutaml-uml)

ea convert model.qea --to xmi --output model.xmi

Extract a diagram as SVG (requires lutaml-uml)

ea diagrams extract model.qea "Diagram Name" --output diagram.svg

Architecture

The ea gem has two layers:

Pure layer (no lutaml-uml dependency)

Ea.parse(path)

Returns Ea::Qea::Database (.qea) or Xmi::Sparx::Root (.xmi)

Ea::Transformers::QeaToXmi

Converts Ea::Qea::Database → Sparx XMI string

Ea::Qea.load(path)

Low-level QEA loader → Ea::Qea::Database

Ea::Xmi.load(path)

Low-level XMI loader → Xmi::Sparx::Root

Bridge layer (optional — lazy-requires lutaml-uml)

Ea.to_uml(path_or_model)

Returns Lutaml::Uml::Document (tool-agnostic)

Ea::Bridge::QeaToUml

Ea::Qea::DatabaseLutaml::Uml::Document

Ea::Bridge::XmiToUml

Xmi::Sparx::RootLutaml::Uml::Document

Data flow

QEA file ──→ Ea::Qea::Database  ──┐
                                   ├──→ Ea::Bridge ──→ Lutaml::Uml::Document
XMI file ──→ Xmi::Sparx::Root    ──┘                        │
                                                           ├──→ SPA (HTML)
                                                           ├──→ SVG diagram
                                                           └──→ cross-vendor output

QEA file ──→ Ea::Qea::Database  ──→ Ea::Transformers::QeaToXmi ──→ Sparx XMI
                                    (pure, no lutaml-uml)

CLI commands

ea spa FILE

Generate single-page app from QEA/XMI/LUR

ea list FILE

List model elements (auto-detects QEA or XMI)

ea diagrams list FILE

List diagrams in a QEA/XMI file

ea diagrams extract FILE NAME

Render a diagram to SVG

ea validate FILE

Validate EA model

ea stats FILE

Show collection counts

ea parse FILE

Parse to internal model representation

ea convert FILE --to xmi

Convert QEA → Sparx XMI

ea version

Show gem version

Limitations

  • Sparx only: QEA format and Sparx-flavored XMI only. Does not parse MagicDraw or Papyrus XMI.

  • XMI parser: Parses <xmi:Extension> blocks for Sparx-specific diagram metadata. Generic OMG XMI is handled by the xmi gem.

Development

git clone https://github.com/lutaml/ea
cd ea
bundle install
bundle exec rspec        # run specs (2036 examples)
bundle exec ea help      # see CLI commands

License

MIT — see LICENSE file.

About

No description, website, or topics provided.

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages