Class: Mxrb::Compiler::ProjectModelOrderer

Inherits:
Object
  • Object
show all
Defined in:
lib/mxrb/compiler/project_model_orderer.rb

Overview

Orders model documents so containers precede children during Runtime resolution.

Instance Method Summary collapse

Constructor Details

#initialize(package, project) ⇒ ProjectModelOrderer

Returns a new instance of ProjectModelOrderer.



7
8
9
10
# File 'lib/mxrb/compiler/project_model_orderer.rb', line 7

def initialize(package, project)
  @package = package
  @project = project
end

Instance Method Details

#orderObject



12
13
14
15
16
17
18
19
# File 'lib/mxrb/compiler/project_model_orderer.rb', line 12

def order
  ordered = [@project, deployment_header]
  ordered.concat(resolve(@project.fetch('ProjectDocuments')))
  @project.fetch('Modules').each { append_module(ordered, _1) }
  ordered.compact!
  ordered.concat(remaining(ordered))
  ModelPackage.from_documents(ordered)
end