Class: Mxrb::Compiler::CodeActionMaterializer

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

Overview

Materializes server and client action signatures into model.mdp.

Instance Method Summary collapse

Constructor Details

#initialize(mpr_path, deployment:) ⇒ CodeActionMaterializer

Returns a new instance of CodeActionMaterializer.



9
10
11
12
# File 'lib/mxrb/compiler/code_action_materializer.rb', line 9

def initialize(mpr_path, deployment:)
  @mpr_path = File.expand_path(mpr_path)
  @deployment = File.expand_path(deployment)
end

Instance Method Details

#materializeObject



14
15
16
17
18
19
20
21
22
23
24
# File 'lib/mxrb/compiler/code_action_materializer.rb', line 14

def materialize
  source = SourceModel.read(@mpr_path)
  path = File.join(@deployment, 'model', 'model.mdp')
  documents = compile_documents(source)
  documents.reduce(ModelPackage.read(path)) { |package, document| package.upsert(document) }.write(path)
  counts = documents.map { _1['$Type'] }.tally
  CodeActionMaterialization.new(
    model_path: path, java_actions: counts.fetch('JavaActions$JavaAction', 0),
    javascript_actions: counts.fetch('JavaScriptActions$JavaScriptAction', 0)
  )
end