Class: Shirobai::Cop::Style::StabbyLambdaParentheses
- Inherits:
-
RuboCop::Cop::Base
- Object
- RuboCop::Cop::Base
- Shirobai::Cop::Style::StabbyLambdaParentheses
- Extended by:
- RuboCop::Cop::AutoCorrector
- Includes:
- RuboCop::Cop::ConfigurableEnforcedStyle
- Defined in:
- lib/shirobai/cop/style/stabby_lambda_parentheses.rb
Overview
Drop-in Rust reimplementation of Style/StabbyLambdaParentheses.
Rust walks the AST once and emits one record per stabby-lambda
LambdaNode whose parameters is a BlockParametersNode with
a non-nil inner parameters AND whose () presence disagrees
with the configured EnforcedStyle. This mirrors stock's
on_send guard (lambda_literal? && block_node.arguments?) plus
the redundant_parentheses? / missing_parentheses? style
comparison.
For each emitted offense the wrapper reproduces stock's add_offense
on the arguments source range (args.loc.expression) and, depending
on the style, wraps with ( ) (require_parentheses, missing) or
replaces ( with '' + removes ) (require_no_parentheses,
redundant). The behaviour is purely config-driven, so this cop is
always bundle-eligible.
Constant Summary collapse
- STYLE_TO_U8 =
{ require_parentheses: 0, require_no_parentheses: 1 }.freeze
Class Method Summary collapse
- .badge ⇒ Object
-
.bundle_args(config) ⇒ Object
Packed args for the bundled run:
[style]. - .cop_name ⇒ Object
Instance Method Summary collapse
Class Method Details
.badge ⇒ Object
32 |
# File 'lib/shirobai/cop/style/stabby_lambda_parentheses.rb', line 32 def self.badge = RuboCop::Cop::Badge.parse(cop_name) |
.bundle_args(config) ⇒ Object
Packed args for the bundled run: [style].
35 36 37 38 39 40 41 |
# File 'lib/shirobai/cop/style/stabby_lambda_parentheses.rb', line 35 def self.bundle_args(config) own = config.for_badge(badge) style = STYLE_TO_U8.fetch( (own["EnforcedStyle"] || "require_parentheses").to_sym, 0 ) [style] end |
.cop_name ⇒ Object
31 |
# File 'lib/shirobai/cop/style/stabby_lambda_parentheses.rb', line 31 def self.cop_name = "Style/StabbyLambdaParentheses" |
Instance Method Details
#on_new_investigation ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/shirobai/cop/style/stabby_lambda_parentheses.rb', line 43 def on_new_investigation buffer = processed_source.buffer off = SourceOffsets.for(processed_source.raw_source) records_for_source.each do |start, fin, paren_open_start, paren_open_end, paren_close_start, paren_close_end, | args_range = Parser::Source::Range.new(buffer, off[start], off[fin]) add_offense(args_range, message: ) do |corrector| if style == :require_parentheses corrector.wrap(args_range, "(", ")") else open_range = Parser::Source::Range.new( buffer, off[paren_open_start], off[paren_open_end] ) close_range = Parser::Source::Range.new( buffer, off[paren_close_start], off[paren_close_end] ) corrector.replace(open_range, "") corrector.remove(close_range) end end end end |