Class: Mxrb::Compiler::DomainDocumentCompiler
- Inherits:
-
Object
- Object
- Mxrb::Compiler::DomainDocumentCompiler
- Includes:
- ModelValues
- Defined in:
- lib/mxrb/compiler/domain_document_compiler.rb
Overview
Converts domain-model documents from editor shape to Runtime shape.
Instance Method Summary collapse
-
#compile(unit) ⇒ Object
rubocop:disable Metrics/AbcSize.
-
#initialize(source) ⇒ DomainDocumentCompiler
constructor
A new instance of DomainDocumentCompiler.
Constructor Details
#initialize(source) ⇒ DomainDocumentCompiler
Returns a new instance of DomainDocumentCompiler.
9 10 11 12 13 14 15 16 17 18 |
# File 'lib/mxrb/compiler/domain_document_compiler.rb', line 9 def initialize(source) @source = source domain_units = source.respond_to?(:units_of) ? source.units_of('DomainModels$DomainModel') : [] @entities = domain_units.each_with_object({}) do |unit, result| array(unit.document['Entities']).each do |entity| result["#{unit.module_name}.#{entity['Name']}"] = entity end end @security = DomainSecurityCompiler.new(source) end |
Instance Method Details
#compile(unit) ⇒ Object
rubocop:disable Metrics/AbcSize
20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/mxrb/compiler/domain_document_compiler.rb', line 20 def compile(unit) # rubocop:disable Metrics/AbcSize source = unit.document { '$ID' => source['$ID'], '$Type' => source['$Type'], 'Entities' => array(source['Entities']).map { compile_entity(_1, unit.module_name) }, 'Associations' => array(source['Associations']).map { @security.association(_1, unit.module_name) }, 'CrossAssociations' => array(source['CrossAssociations']).map do |association| @security.association(association, unit.module_name) end } end |