Class: TwoWayMapper::Node::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/two_way_mapper/node/base.rb

Direct Known Subclasses

Hash, Object

Constant Summary collapse

DIVIDER =
'.'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(selector, options = {}) ⇒ Base

Returns a new instance of Base.



10
11
12
# File 'lib/two_way_mapper/node/base.rb', line 10

def initialize(selector, options = {})
  @selector, @options = selector, options
end

Instance Attribute Details

#optionsObject

Returns the value of attribute options.



8
9
10
# File 'lib/two_way_mapper/node/base.rb', line 8

def options
  @options
end

#selectorObject

Returns the value of attribute selector.



8
9
10
# File 'lib/two_way_mapper/node/base.rb', line 8

def selector
  @selector
end

Instance Method Details

#keys(&block) ⇒ Object



14
15
16
17
18
19
20
# File 'lib/two_way_mapper/node/base.rb', line 14

def keys(&block)
  unless block
    block = options[:stringify_keys] ? :to_s : :to_sym
    block = block.to_proc
  end
  selector.split(DIVIDER).map(&block)
end

#read(source) ⇒ Object



22
23
24
# File 'lib/two_way_mapper/node/base.rb', line 22

def read(source)
  rewind_forward(source) { |_obj, _key| return nil }
end

#writable?(current_value, new_value) ⇒ Boolean

Returns:

  • (Boolean)


30
31
32
33
34
# File 'lib/two_way_mapper/node/base.rb', line 30

def writable?(current_value, new_value)
  !options[:write_if] ||
    !options[:write_if].respond_to?(:call) ||
    options[:write_if].call(current_value, new_value)
end

#write(_obj, _value) ⇒ Object

Raises:

  • (NotImplementedError)


26
27
28
# File 'lib/two_way_mapper/node/base.rb', line 26

def write(_obj, _value)
  raise NotImplementedError
end