Class: RuboCop::Cop::Cask::StanzaOrder
- Extended by:
- AutoCorrector, Forwardable
- Includes:
- IgnoredNode, CaskHelp
- Defined in:
- rubocops/cask/stanza_order.rb
Overview
This cop checks that a cask’s stanzas are ordered correctly, including nested within on_*
blocks.
Constant Summary collapse
- MESSAGE =
"`%<stanza>s` stanza out of order"
Instance Method Summary collapse
Methods included from CaskHelp
#find_end_line, #inner_stanzas, #on_block, #on_cask, #on_system_methods
Instance Method Details
#on_cask_stanza_block(stanza_block) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'rubocops/cask/stanza_order.rb', line 19 def on_cask_stanza_block(stanza_block) stanzas = stanza_block.stanzas ordered_stanzas = sort_stanzas(stanzas) return if stanzas == ordered_stanzas stanzas.zip(ordered_stanzas).each do |stanza_before, stanza_after| next if stanza_before == stanza_after add_offense( stanza_before.method_node, message: format(MESSAGE, stanza: stanza_before.stanza_name), ) do |corrector| next if part_of_ignored_node?(stanza_before.method_node) corrector.replace( stanza_before.source_range_with_comments, stanza_after.source_with_comments, ) # Ignore node so that nested content is not auto-corrected and clobbered. ignore_node(stanza_before.method_node) end end end |
#on_new_investigation ⇒ Object
45 46 47 48 49 |
# File 'rubocops/cask/stanza_order.rb', line 45 def on_new_investigation super ignored_nodes.clear end |