Class: Tengine::Support::Config::Definition::Field

Inherits:
Object
  • Object
show all
Defined in:
lib/tengine/support/config/definition/field.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attrs = {}) ⇒ Field

Returns a new instance of Field.



10
11
12
# File 'lib/tengine/support/config/definition/field.rb', line 10

def initialize(attrs = {})
  attrs.each{|k, v| send("#{k}=", v)}
end

Instance Attribute Details

#__block__Object

__block__ はactionの具体的な動作を保持します



6
7
8
# File 'lib/tengine/support/config/definition/field.rb', line 6

def __block__
  @__block__
end

#__name__Object

Returns the value of attribute __name__.



5
6
7
# File 'lib/tengine/support/config/definition/field.rb', line 5

def __name__
  @__name__
end

#__parent__Object

Returns the value of attribute __parent__.



5
6
7
# File 'lib/tengine/support/config/definition/field.rb', line 5

def __parent__
  @__parent__
end

#__type__Object

Returns the value of attribute __type__.



5
6
7
# File 'lib/tengine/support/config/definition/field.rb', line 5

def __type__
  @__type__
end

#convertorObject

convertor はfieldの変換ロジックを保持します



7
8
9
# File 'lib/tengine/support/config/definition/field.rb', line 7

def convertor
  @convertor
end

#defaultObject

Returns the value of attribute default.



8
9
10
# File 'lib/tengine/support/config/definition/field.rb', line 8

def default
  @default
end

#default_descriptionObject

Returns the value of attribute default_description.



8
9
10
# File 'lib/tengine/support/config/definition/field.rb', line 8

def default_description
  @default_description
end

#descriptionObject

Returns the value of attribute description.



8
9
10
# File 'lib/tengine/support/config/definition/field.rb', line 8

def description
  @description
end

#enumObject

Returns the value of attribute enum.



8
9
10
# File 'lib/tengine/support/config/definition/field.rb', line 8

def enum
  @enum
end

#hiddenObject

Returns the value of attribute hidden.



8
9
10
# File 'lib/tengine/support/config/definition/field.rb', line 8

def hidden
  @hidden
end

#typeObject

Returns the value of attribute type.



8
9
10
# File 'lib/tengine/support/config/definition/field.rb', line 8

def type
  @type
end

Instance Method Details

#accept_visitor(visitor) ⇒ Object



39
40
41
# File 'lib/tengine/support/config/definition/field.rb', line 39

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

#action?Boolean

Returns:

  • (Boolean)


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

def action?; @__type__ == :action; end

#convert(value, context = self) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/tengine/support/config/definition/field.rb', line 60

def convert(value, context = self)
  return convertor.call(value) if convertor
  result = case self.type
  when :boolean then !!value
  when :integer then value.nil? ? nil : value.to_i
  when :string then value.nil? ? nil : value.to_s
  else value
  end
  result ||= default_value(context)
  if self.enum && !self.enum.include?(result)
    raise ArgumentError, "must be one of #{self.enum.inspect} but was #{result.inspect}"
  end
  result
end

#default_value(context = __parent__) ⇒ Object



31
32
33
# File 'lib/tengine/support/config/definition/field.rb', line 31

def default_value(context = __parent__)
  default.respond_to?(:to_proc) ? context.instance_eval(&default) : default
end

#description_valueObject



24
25
26
27
28
29
# File 'lib/tengine/support/config/definition/field.rb', line 24

def description_value
  [
    __parent__.get_value(description),
    __parent__.get_value(default_description)
  ].join(' ')
end

#field?Boolean

Returns:

  • (Boolean)


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

def field?; @__type__ == :field; end

#hidden?Boolean

Returns:

  • (Boolean)


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

def hidden?; !!self.hidden; end

#long_optObject



56
57
58
# File 'lib/tengine/support/config/definition/field.rb', line 56

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

#name_arrayObject



43
44
45
# File 'lib/tengine/support/config/definition/field.rb', line 43

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

#rootObject



47
48
49
# File 'lib/tengine/support/config/definition/field.rb', line 47

def root
  __parent__ ? __parent__.root : nil
end

#separator?Boolean

Returns:

  • (Boolean)


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

def separator?; @__type__ == :separator; end

#short_optObject



51
52
53
54
# File 'lib/tengine/support/config/definition/field.rb', line 51

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

#to_hashObject



35
36
37
# File 'lib/tengine/support/config/definition/field.rb', line 35

def to_hash
  __parent__.send(__name__) || default_value
end

#update(attrs) ⇒ Object



20
21
22
# File 'lib/tengine/support/config/definition/field.rb', line 20

def update(attrs)
  attrs.each{|k, v| send("#{k}=", v)}
end