class Kubes::Compiler::Dsl::Core::Blocks

Attributes

results[R]

Public Class Methods

block_method(meth) click to toggle source
# File lib/kubes/compiler/dsl/core/blocks.rb, line 39
def block_method(meth)
  meth = meth.to_s
  define_method meth do |name, &block|
    syntax = syntax_instance(meth, name)
    syntax.instance_eval(&block) if block
    lookup = lookup_key(meth, name)
    @results[lookup] = syntax.result
  end
end
discovered_methods() click to toggle source
# File lib/kubes/compiler/dsl/core/blocks.rb, line 31
def discovered_methods
  syntax = File.expand_path("../syntax", __dir__)
  expr = "#{syntax}/*.rb"
  Dir.glob(expr).map do |path|
    File.basename(path).sub('.rb','')
  end
end
syntax_instances() click to toggle source
# File lib/kubes/compiler/dsl/core/blocks.rb, line 50
def syntax_instances
  @@syntax_instances
end

Public Instance Methods

lookup_key(meth, name) click to toggle source
# File lib/kubes/compiler/dsl/core/blocks.rb, line 26
def lookup_key(meth, name)
  [meth, name].join('-')
end
result() click to toggle source
# File lib/kubes/compiler/dsl/core/blocks.rb, line 11
def result
  @results.values # Array
end
run() click to toggle source
Calls superclass method Kubes::Compiler::Dsl::Core::Base#run
# File lib/kubes/compiler/dsl/core/blocks.rb, line 4
def run
  @results = {} # Hash key is the name of resource, using it so we can keep a map to handle layering
  @block_form = true # pluralizes the layer names
  super # handles layering and evaluating the main DSL file
  result # Array
end
syntax_instance(meth, name) click to toggle source
# File lib/kubes/compiler/dsl/core/blocks.rb, line 15
def syntax_instance(meth, name)
  lookup = lookup_key(meth, name)
  klass = "Kubes::Compiler::Dsl::Syntax::#{meth.camelize}".constantize
  syntax = self.class.syntax_instances[lookup]
  return syntax if syntax

  syntax = klass.new(@options.merge(name: name))
  syntax.kind_from_block = meth.camelize
  self.class.syntax_instances[lookup] = syntax
end