class Yalphabetize::Alphabetizer
Attributes
Public Class Methods
Source
# File lib/yalphabetize/alphabetizer.rb, line 5 def initialize(stream_node, order_checker_class:) @stream_node = stream_node @order_checker_class = order_checker_class end
Public Instance Methods
Source
# File lib/yalphabetize/alphabetizer.rb, line 10 def call stream_node.select(&:mapping?).each do |node| order_checker = order_checker_class.new_for(node) pair_up_children(node) alphabetize_children(node, order_checker) unpair_children(node) end end
Private Instance Methods
Source
# File lib/yalphabetize/alphabetizer.rb, line 23 def alphabetize_children(node, order_checker) node.children.sort! do |a, b| order_checker.compare(a.first.value, b.first.value) end end
Source
# File lib/yalphabetize/alphabetizer.rb, line 33 def pair_up_children(node) children_clone = node.children.dup children_clone.each_slice(2) do |slice| node.children.push(slice) 2.times { node.children.shift } end end
Source
# File lib/yalphabetize/alphabetizer.rb, line 29 def unpair_children(node) node.children.flatten! end