Class: GemfileArranger::Traverse::SortGemsInGroup
- Inherits:
-
Parser::AST::Processor
- Object
- Parser::AST::Processor
- GemfileArranger::Traverse::SortGemsInGroup
- Defined in:
- lib/gemfile_arranger/traverse/sort_gems_in_group.rb
Instance Method Summary collapse
Instance Method Details
#on_block(node) ⇒ Object
4 5 6 7 |
# File 'lib/gemfile_arranger/traverse/sort_gems_in_group.rb', line 4 def on_block(node) sorted_block = sort_gems_in_group(node) node.updated(:block, sorted_block) if node != sorted_block end |
#sort_gems_in_group(node) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/gemfile_arranger/traverse/sort_gems_in_group.rb', line 9 def sort_gems_in_group(node) send_node, args_node, body_node = node.children return node if send_node.children[1] != :group return node if body_node.type != :begin gems = body_node.children.sort_by.with_index do |child, i| gem_name = child.children[2].children[0] [gem_name, i] end return node if body_node.children == gems sorted_body_node = body_node.updated(:begin, gems) [send_node, args_node, sorted_body_node] end |