Module: RuboCop::Cop::StatementModifier
Overview
Common functionality for modifier cops.
Instance Method Summary
collapse
Methods included from IfNode
#elsif?, #if_else?, #if_node_parts, #modifier_if?
Instance Method Details
#body_has_comment?(body) ⇒ Boolean
50
51
52
|
# File 'lib/rubocop/cop/mixin/statement_modifier.rb', line 50
def body_has_comment?(body)
.include?(body.source_range.line)
end
|
#body_length(body) ⇒ Object
42
43
44
45
46
47
48
|
# File 'lib/rubocop/cop/mixin/statement_modifier.rb', line 42
def body_length(body)
if body && body.source_range
body.source_range.size
else
0
end
end
|
58
59
60
|
# File 'lib/rubocop/cop/mixin/statement_modifier.rb', line 58
def
@comment_lines ||= processed_source..map { |c| c.location.line }
end
|
54
55
56
|
# File 'lib/rubocop/cop/mixin/statement_modifier.rb', line 54
def (node)
.include?(node.loc.end.line)
end
|
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/rubocop/cop/mixin/statement_modifier.rb', line 10
def fit_within_line_as_modifier_form?(node)
cond, body, _else = if_node_parts(node)
return false if length(node) > 3
return false if body && body.begin_type?
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.source_range.size
space = 1
total = indentation + body_length + space + kw_length + space +
cond_length
total <= max_line_length
end
|
#length(node) ⇒ Object
38
39
40
|
# File 'lib/rubocop/cop/mixin/statement_modifier.rb', line 38
def length(node)
node.source.lines.grep(/\S/).size
end
|
#max_line_length ⇒ Object
33
34
35
36
|
# File 'lib/rubocop/cop/mixin/statement_modifier.rb', line 33
def max_line_length
cop_config['MaxLineLength'] ||
config.for_cop('Metrics/LineLength')['Max']
end
|