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