class GemfileArranger::Traverse::SortBlock
Public Class Methods
new(keys)
click to toggle source
# File lib/gemfile_arranger/traverse/sort_block.rb, line 4 def initialize(keys) @keys = Array(keys).dup.map(&:to_sym) end
Public Instance Methods
on_begin(node)
click to toggle source
# File lib/gemfile_arranger/traverse/sort_block.rb, line 8 def on_begin(node) sorted_block = sort_block_with_keys(node, @keys) node.updated(:begin, sorted_block) if node != sorted_block end
sort_block_with_keys(node, keys)
click to toggle source
# File lib/gemfile_arranger/traverse/sort_block.rb, line 13 def sort_block_with_keys(node, keys) node.children.sort_by.with_index do |child, i| _, gem_name, *_ = child.children key_index = keys.index(gem_name) || keys.length [key_index, i] end end