Class: GemfileArranger::Traverse::SortBlock
- Inherits:
-
Parser::AST::Processor
- Object
- Parser::AST::Processor
- GemfileArranger::Traverse::SortBlock
- Defined in:
- lib/gemfile_arranger/traverse/sort_block.rb
Instance Method Summary collapse
-
#initialize(keys) ⇒ SortBlock
constructor
A new instance of SortBlock.
- #on_begin(node) ⇒ Object
- #sort_block_with_keys(node, keys) ⇒ Object
Constructor Details
#initialize(keys) ⇒ SortBlock
Returns a new instance of SortBlock.
4 5 6 |
# File 'lib/gemfile_arranger/traverse/sort_block.rb', line 4 def initialize(keys) @keys = Array(keys).dup.map(&:to_sym) end |
Instance Method Details
#on_begin(node) ⇒ Object
8 9 10 11 |
# 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) ⇒ Object
13 14 15 16 17 18 19 |
# 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 |