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