module Dockly::Util::DSL

Public Class Methods

included(base) click to toggle source
# File lib/dockly/util/dsl.rb, line 2
def self.included(base)
  base.instance_eval do
    extend ClassMethods
    dsl_attribute :name
  end
end
new(options = {}, &block) click to toggle source
# File lib/dockly/util/dsl.rb, line 145
def initialize(options = {}, &block)
  self.class.default_values.merge(options).each do |k, v|
    v = v.dup rescue v unless v.class.ancestors.include?(Dockly::Util::DSL)
    public_send(k, v)
  end
  instance_eval(&block) unless block.nil?
  name(self.class.generate_unique_name) if name.nil?
  self.instance_variable_get(:@name).freeze
end

Public Instance Methods

==(other_dsl) click to toggle source
# File lib/dockly/util/dsl.rb, line 142
def ==(other_dsl)
  (other_dsl.class == self.class) && (other_dsl.name == self.name)
end
[](var) click to toggle source
# File lib/dockly/util/dsl.rb, line 134
def [](var)
  instance_variable_get(:"@#{var}")
end
[]=(var, val) click to toggle source
# File lib/dockly/util/dsl.rb, line 138
def []=(var, val)
  instance_variable_set(:"@#{var}", val)
end
to_hash() click to toggle source
# File lib/dockly/util/dsl.rb, line 155
def to_hash
  Hash[instance_variables.map { |ivar| [ivar.to_s[1..-1].to_sym, instance_variable_get(ivar)] }]
end
to_s() click to toggle source
# File lib/dockly/util/dsl.rb, line 126
def to_s
  "#{self.class.name} (#{
    instance_variables.map { |var|
      "#{var} = #{instance_variable_get(var)}"
    }.join(', ')
  })"
end

Private Instance Methods

ensure_present!(*syms) click to toggle source
# File lib/dockly/util/dsl.rb, line 159
def ensure_present!(*syms)
  syms.each do |sym|
    if instance_variable_get(:"@#{sym}").nil?
      method_name = /.*`(?<method_name>.+)'$/.match(caller[2])[:method_name]
      raise "The following must be present to use #{self.class}##{method_name}: #{sym}"
    end
  end
end