Project

ea

0.0
The project is in a healthy, maintained state
ea is a standalone Ruby gem for parsing Enterprise Architect data files (QEA format, Sparx XMI). It provides QEA database parsing, EA diagram rendering, and EA data validation. The UML bridge (Ea::Qea.to_uml) optionally requires the lutaml-uml gem.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

Runtime

>= 0
~> 1.18
~> 1.4
~> 0.5, >= 0.5.2
 Project Readme

ea

Table of Contents
  • Installation
  • Quick start
    • Parse a QEA file (pure — no lutaml-uml needed)
    • Generate a SPA from QEA (requires lutaml-uml)
    • Generate Sparx XMI from QEA (pure — no lutaml-uml)
    • Extract a diagram as SVG (requires lutaml-uml)
  • Architecture
    • Pure layer (no lutaml-uml dependency)
    • Bridge layer (optional — lazy-requires lutaml-uml)
    • Data flow
  • CLI commands
  • Limitations
  • Development
  • License

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.