Module: Tengine::Support::Config::Definition

Included in:
Amqp::Connection, Amqp::Exchange, Amqp::Queue, Logger, Mongoid::Connection
Defined in:
lib/tengine/support/config/definition.rb

Defined Under Namespace

Modules: ClassMethods, HasManyChildren Classes: Field, Group, OptparseVisitor, Suite

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#__name__Object

Returns the value of attribute __name__.



96
97
98
# File 'lib/tengine/support/config/definition.rb', line 96

def __name__
  @__name__
end

#__parent__Object

Returns the value of attribute __parent__.



96
97
98
# File 'lib/tengine/support/config/definition.rb', line 96

def __parent__
  @__parent__
end

#childrenObject

Returns the value of attribute children.



96
97
98
# File 'lib/tengine/support/config/definition.rb', line 96

def children
  @children
end

Class Method Details

.included(klass) ⇒ Object



13
14
15
16
17
18
19
20
21
# File 'lib/tengine/support/config/definition.rb', line 13

def included(klass)
  klass.extend(ClassMethods)
  klass.class_eval do
    self.class_attribute :children, :instance_writer => false, :instance_reader => false
    self.children = []
    self.class_attribute :definition_reference_names, :instance_writer => false
    self.definition_reference_names = []
  end
end

Instance Method Details

#[](child_name) ⇒ Object



160
161
162
# File 'lib/tengine/support/config/definition.rb', line 160

def [](child_name)
  self.send(child_name)
end

#[]=(child_name, value) ⇒ Object



164
165
166
# File 'lib/tengine/support/config/definition.rb', line 164

def []=(child_name, value)
  self.send("#{child_name}=", value)
end

#accept_visitor(visitor) ⇒ Object



132
133
134
# File 'lib/tengine/support/config/definition.rb', line 132

def accept_visitor(visitor)
  visitor.visit(self)
end

#action?Boolean

Returns:

  • (Boolean)


157
# File 'lib/tengine/support/config/definition.rb', line 157

def action?; false; end

#child_by_name(__name__) ⇒ Object



107
108
109
# File 'lib/tengine/support/config/definition.rb', line 107

def child_by_name(__name__)
  (children || []).detect{|child| child.__name__ == __name__}
end

#find(name_array) ⇒ Object



111
112
113
114
115
116
117
118
119
# File 'lib/tengine/support/config/definition.rb', line 111

def find(name_array)
  name_array = Array(name_array)
  head = name_array.shift
  if child = child_by_name(head)
    name_array.empty? ? child : child.find(name_array)
  else
    nil
  end
end

#get_value(obj) ⇒ Object



144
145
146
# File 'lib/tengine/support/config/definition.rb', line 144

def get_value(obj)
  obj.is_a?(Proc) ? self.instance_eval(&obj) : obj
end

#instantiate_childrenObject



98
99
100
101
102
103
104
105
# File 'lib/tengine/support/config/definition.rb', line 98

def instantiate_children
  @children = self.class.children.map do |class_child|
    child = class_child.dup
    child.__parent__ = self
    child
  end
  self
end

#load(hash) ⇒ Object



128
129
130
# File 'lib/tengine/support/config/definition.rb', line 128

def load(hash)
  hash.each{|__name__, value| send("#{__name__}=", value)}
end

#long_optObject



153
154
155
# File 'lib/tengine/support/config/definition.rb', line 153

def long_opt
  '--' << name_array.join('-').gsub(%r{_}, '-')
end

#name_arrayObject



140
141
142
# File 'lib/tengine/support/config/definition.rb', line 140

def name_array
  (__parent__ ? __parent__.name_array : []) + [__name__]
end

#rootObject



136
137
138
# File 'lib/tengine/support/config/definition.rb', line 136

def root
  __parent__ ? __parent__.root : nil
end

#separator?Boolean

Returns:

  • (Boolean)


158
# File 'lib/tengine/support/config/definition.rb', line 158

def separator?; false; end

#short_optObject



148
149
150
151
# File 'lib/tengine/support/config/definition.rb', line 148

def short_opt
  r = root.mapping[ name_array ]
  r ? "-#{r}" : nil
end

#to_hashObject



121
122
123
124
125
126
# File 'lib/tengine/support/config/definition.rb', line 121

def to_hash
  children.inject({}) do |dest, child|
    dest[child.__name__] = child.to_hash
    dest
  end
end