Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages