Purpose
LutaML aims to be a universal data model accessor that allows parsing data models in multiple languages, including:
-
EXPRESS (EXPRESS Language Foundation, ISO 10303-11)
-
XMI (from OMG)
-
UML in LutaML format
Install
With bundler, in Gemfile:
gem "lutaml"
Directly:
$ gem install lutaml
Usage
Parsing
The Lutaml::Parser.parse method provides a single point of entry for parsing
data model files.
The return object is always a Lutaml::LutamlPath::DocumentWrapper object,
where #original_document returns the native parsed models.
Selecting EXPRESS schemas
LutaML supports the ModelElement#to_hash(…, select_proc:) functionality
of Expressir, allowing Expressir to only call to_hash on schemas that
fit a dynamic criteria.
The criteria is set via a Ruby Proc object, as follows.
# Sets the filter
filtered_schemas = ["action_schema", "date_time_schema"]
# Sets the Proc
wrapper.select_proc = Proc.new do |value|
if value.is_a?(Expressir::Model::Declarations::Schema)
filtered_schemas.include?(value.id)
else
true
end
end
serialized = wrapper.to_liquid
# => returns the filtered to_hash method
CLI
There is a command-line interface available for parsing supported data model files.
-
EXPRESS
*.exp -
LutaML UML
*.lutaml -
LutaML YAML datastruct files
# Will generate `test.dot` file in the current directory
$ lutaml -o . test.lutaml
# Will generate `test.png` file in the `assets` directory
$ lutaml -o assets -t png test.lutaml
For additional info refer to lutaml --help output.
Copyright and license
Copyright Ribose. BSD-3 License.