Class: Mabmapper::Engine::Field

Inherits:
Object
  • Object
show all
Defined in:
lib/mabmapper/engine.rb

Overview

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, &block) ⇒ Field

Returns a new instance of Field.



81
82
83
84
85
# File 'lib/mabmapper/engine.rb', line 81

def initialize(name, &block)
  @name   = name.to_s
  @proc   = block
  @engine = eval("self", block.binding)
end

Instance Attribute Details

#docObject (readonly)

Returns the value of attribute doc.



87
88
89
# File 'lib/mabmapper/engine.rb', line 87

def doc
  @doc
end

#engineObject

Returns the value of attribute engine.



79
80
81
# File 'lib/mabmapper/engine.rb', line 79

def engine
  @engine
end

#nameObject (readonly)

Returns the value of attribute name.



87
88
89
# File 'lib/mabmapper/engine.rb', line 87

def name
  @name
end

#resultObject (readonly)

Returns the value of attribute result.



87
88
89
# File 'lib/mabmapper/engine.rb', line 87

def result
  @result
end

#sourceObject (readonly)

Returns the value of attribute source.



87
88
89
# File 'lib/mabmapper/engine.rb', line 87

def source
  @source
end

Instance Method Details

#merge(value1, value2, options = {delimiter: ' ', wrap: nil}) ⇒ Object



95
96
97
98
99
100
# File 'lib/mabmapper/engine.rb', line 95

def merge(value1, value2, options = {delimiter: ' ', wrap: nil})
  v1 = [value1].map(&:presence).compact.join(options[:delimiter])
  v2 = [value2].map(&:presence).compact.join(options[:delimiter])
  v2 = wrap(v2, options[:wrap]) if v2.present? and options[:wrap].present?
  [v1, v2].map(&:presence).compact.join(options[:delimiter])
end

#ref(field_name) ⇒ Object



89
90
91
92
93
# File 'lib/mabmapper/engine.rb', line 89

def ref(field_name)
  field = @engine.fields.find{ |f| f.name == field_name.to_s }
  raise "No such field #{field_name} in section #{section_name}" if field.blank?
  field.result
end

#wrap(value, pattern) ⇒ Object



102
103
104
# File 'lib/mabmapper/engine.rb', line 102

def wrap(value, pattern)
  pattern.gsub("@", value)
end