Class: Kumi::Core::Analyzer::Passes::Codegen::Js::Emitter
- Inherits:
-
Object
- Object
- Kumi::Core::Analyzer::Passes::Codegen::Js::Emitter
- Defined in:
- lib/kumi/core/analyzer/passes/codegen/js/emitter.rb
Defined Under Namespace
Classes: BindsInfo, KernelInfo
Instance Method Summary collapse
- #emit(declarations, schema_digest:) ⇒ Object
-
#initialize(kernels_data, binds_data) ⇒ Emitter
constructor
A new instance of Emitter.
Constructor Details
#initialize(kernels_data, binds_data) ⇒ Emitter
Returns a new instance of Emitter.
13 14 15 16 17 18 19 20 |
# File 'lib/kumi/core/analyzer/passes/codegen/js/emitter.rb', line 13 def initialize(kernels_data, binds_data) @kernels = kernels_data.map { |k| KernelInfo.new(**k.slice("id", "fn_id", "impl", "attrs").transform_keys(&:to_sym)) } .to_h { |k| [k.fn_id, k] } @binds = binds_data.map { |b| BindsInfo.new(**b.slice("op_result_reg", "fn_id").transform_keys(&:to_sym)) } .to_h { |b| [b.op_result_reg, b] } @buffer = OutputBuffer.new end |
Instance Method Details
#emit(declarations, schema_digest:) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/kumi/core/analyzer/passes/codegen/js/emitter.rb', line 22 def emit(declarations, schema_digest:) @buffer.reset! # @buffer.emit_header(schema_digest) # @buffer.emit_class_methods(declarations.keys) emit_private_helpers # @buffer.emit_footer declarations.each do |name, payload| emit_declaration(name, Array(payload[:operations])) end @buffer.to_s end |