Class: Lutaml::Uml::Parsers::Dsl
- Inherits:
-
Parslet::Parser
- Object
- Parslet::Parser
- Lutaml::Uml::Parsers::Dsl
- Includes:
- Converter::DslToUml
- Defined in:
- lib/lutaml/uml/parsers/dsl.rb
Overview
Class for parsing LutaML dsl into Lutaml::Uml::Document
Constant Summary collapse
- KEYWORDS =
%w[ abstract aggregation association association attribute bidirectional class composition data_type dependency diagram directional enum fontname generalizes include interface member member_type method owner owner_type primitive private protected public realizes static title caption ].freeze
Class Method Summary collapse
Instance Method Summary collapse
Methods included from Converter::DslToUml
#create_uml_association, #create_uml_associations, #create_uml_attribute, #create_uml_attributes, #create_uml_cardinality, #create_uml_class, #create_uml_classes, #create_uml_constraint, #create_uml_constraints, #create_uml_data_type, #create_uml_data_types, #create_uml_diagram, #create_uml_diagrams, #create_uml_document, #create_uml_enum, #create_uml_enums, #create_uml_members, #create_uml_operation, #create_uml_operations, #create_uml_package, #create_uml_packages, #create_uml_value, #create_uml_values, #set_model_attribute, #set_uml_model
Class Method Details
.parse(io, options = {}) ⇒ Lutaml::Uml::Document
23 24 25 |
# File 'lib/lutaml/uml/parsers/dsl.rb', line 23 def self.parse(io, = {}) new.parse(io, ) end |
Instance Method Details
#parse(input_file, _options = {}) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/lutaml/uml/parsers/dsl.rb', line 27 def parse(input_file, = {}) data = Lutaml::Uml::Parsers::DslPreprocessor.call(input_file) # https://kschiess.github.io/parslet/tricks.html#Reporter engines # Parslet::ErrorReporter::Deepest allows more # detailed display of error reporter = Parslet::ErrorReporter::Deepest.new hash = DslTransform.new.apply(super(data, reporter: reporter)) create_uml_document(hash) rescue Parslet::ParseFailed => e raise(ParsingError, "#{e.}\ncause: #{e.parse_failure_cause.ascii_tree}") end |