class TwoWayMapper::Mapping
Constants
- DIRECTIONS
Attributes
left_class[R]
left_options[R]
right_class[R]
right_options[R]
rules_list[R]
Public Class Methods
new()
click to toggle source
# File lib/two_way_mapper/mapping.rb, line 9 def initialize @rules_list = [] end
Public Instance Methods
rule(left_selectors, right_selectors = {}, options = {})
click to toggle source
# File lib/two_way_mapper/mapping.rb, line 37 def rule(left_selectors, right_selectors = {}, options = {}) raise 'left is not defined' unless left_class raise 'right is not defined' unless right_class opt = options.dup left_opt = opt.delete(:left) || {} right_opt = opt.delete(:right) || {} if left_selectors.is_a?(Hash) raise ArgumentError if left_selectors.count < 2 opt = left_selectors left_selectors = opt.keys.first left_opt.merge! opt.delete(left_selectors) right_selectors = opt.keys.first right_opt.merge!(opt.delete(right_selectors)) end @rules_list << Rule.new( build_nodes(left_selectors, left_class, left_options.merge(left_opt)), build_nodes(right_selectors, right_class, right_options.merge(right_opt)), opt ) end
rules(hash)
click to toggle source
# File lib/two_way_mapper/mapping.rb, line 62 def rules(hash) hash.each do |left_selector, right_selector| rule(left_selector, right_selector) end end
Private Instance Methods
build_nodes(selectors, klass, opt)
click to toggle source
# File lib/two_way_mapper/mapping.rb, line 76 def build_nodes(selectors, klass, opt) Array(selectors).map do |selector| klass.new(selector, opt) end end
node_class(plugin)
click to toggle source
# File lib/two_way_mapper/mapping.rb, line 70 def node_class(plugin) TwoWayMapper::Node.const_get(plugin.to_s.camelize) rescue NameError raise NameError, 'Cannot find node' end