Module: RuboCop::Cop::StatementModifier
Overview
Common functionality for modifier cops.
Instance Method Summary
collapse
Methods included from IfNode
#elsif?, #if_else?, #modifier_if?, #ternary_op?
Instance Method Details
#body_has_comment?(body) ⇒ Boolean
52
53
54
|
# File 'lib/rubocop/cop/mixin/statement_modifier.rb', line 52
def body_has_comment?(body)
.include?(body.loc.expression.line)
end
|
#body_length(body) ⇒ Object
44
45
46
47
48
49
50
|
# File 'lib/rubocop/cop/mixin/statement_modifier.rb', line 44
def body_length(body)
if body && body.loc.expression
body.loc.expression.size
else
0
end
end
|
60
61
62
|
# File 'lib/rubocop/cop/mixin/statement_modifier.rb', line 60
def
@comment_lines ||= processed_source..map(&:location).map(&:line)
end
|
56
57
58
|
# File 'lib/rubocop/cop/mixin/statement_modifier.rb', line 56
def (node)
.include?(node.loc.end.line)
end
|
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/rubocop/cop/mixin/statement_modifier.rb', line 9
def fit_within_line_as_modifier_form?(node)
case node.loc.keyword.source
when 'if' then cond, body, _else = *node
when 'unless' then cond, _else, body = *node
else cond, body = *node
end
return false if length(node) > 3
body_length = body_length(body)
return false if body_length == 0
return false if cond.each_node.any?(&:lvasgn_type?)
return false if body_has_comment?(body)
return false if (node)
indentation = node.loc.keyword.column
kw_length = node.loc.keyword.size
cond_length = cond.loc.expression.size
space = 1
total = indentation + body_length + space + kw_length + space +
cond_length
total <= max_line_length
end
|
#length(node) ⇒ Object
40
41
42
|
# File 'lib/rubocop/cop/mixin/statement_modifier.rb', line 40
def length(node)
node.loc.expression.source.lines.grep(/\S/).size
end
|
#max_line_length ⇒ Object
35
36
37
38
|
# File 'lib/rubocop/cop/mixin/statement_modifier.rb', line 35
def max_line_length
cop_config && cop_config['MaxLineLength'] ||
config.for_cop('Metrics/LineLength')['Max']
end
|