class HomeAssistant::Generator::DSL
dsl class to read config file and evaluate it
Attributes
component_list[R]
Public Class Methods
new()
click to toggle source
# File lib/home_assistant/generator/dsl.rb, line 12 def initialize @component_list = [] end
Public Instance Methods
debug(message)
click to toggle source
# File lib/home_assistant/generator/dsl.rb, line 36 def debug(message) $stderr.puts message if ENV['DEBUG'] end
eval(file_path)
click to toggle source
# File lib/home_assistant/generator/dsl.rb, line 16 def eval(file_path) instance_eval(File.read(file_path), file_path) end
method_missing(name, *args, &block)
click to toggle source
Calls superclass method
# File lib/home_assistant/generator/dsl.rb, line 20 def method_missing(name, *args, &block) super unless args.one? klass_name = name.to_s.split('_').collect(&:capitalize).join element = if DSL.const_defined?(klass_name) && DSL.const_get(klass_name) debug("Defining #{klass_name} instance") DSL.const_get(klass_name).new(*args) else debug("No #{klass_name} class, fallback on basic component") Component.new(*args).tap { |c| c.component_class = name } end component_list << element element.instance_eval(&block) if block_given? element end
to_s()
click to toggle source
# File lib/home_assistant/generator/dsl.rb, line 40 def to_s component_list.inject(Mash.new) do |mem, component| mem[component.component_class] ||= [] mem[component.component_class] << component.to_h mem end.to_hash.to_yaml end