Project

lutaml

0.01
There's a lot of open issues
LutaML: data models in textual form
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 0.12.2
~> 13.0
~> 3.11
~> 1.58

Runtime

 Project Readme

LutaML: Ruby library for accessing data models

Purpose

LutaML aims to be a universal data model accessor that allows parsing data models in multiple languages, including:

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.

# example.exp is an EXPRESS schema file
wrapper = Lutaml::Parser.parse([File.new("example.exp")])
# => returns a Lutaml::LutamlPath::DocumentWrapper object
wrapper.original_document
# => returns the original Expressir::Repository object
# example.exp.yaml is an EXPRESS cache file created with Expressir
wrapper = Lutaml::Parser.parse([File.new("example.exp.yaml")], ::Lutaml::Parser::EXPRESS_CACHE_PARSE_TYPE)
# => returns the DocumentWrapper but with the repository loaded from the Expressir cache file

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 Ribose. BSD-3 License.