Skip to content

Commit 43fa456

Browse files
committed
Preserve multiline semantics on Rails/Presence
Similar issue: rubocop/rubocop#10784 Before ```diff if a.present? +^^^^^^^^^^^^^ Use `a.presence || b.to_f * 12.0` instead of `if a.present? + a +else + b +end`. a else b end ``` After ```diff if a.present? +^^^^^^^^^^^^^ Use `a.presence || b` instead of `if a.present? ... end`. a else b end ```
1 parent 7220b5c commit 43fa456

File tree

2 files changed

+287
-104
lines changed

2 files changed

+287
-104
lines changed

lib/rubocop/cop/rails/presence.rb

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,17 @@ def ignore_other_node?(node)
106106
end
107107

108108
def message(node, receiver, other)
109-
format(MSG, prefer: replacement(receiver, other), current: node.source)
109+
prefer = replacement(receiver, other).gsub(/^\s*|\n/, '')
110+
current = current(node).gsub(/^\s*|\n/, '')
111+
format(MSG, prefer: prefer, current: current)
112+
end
113+
114+
def current(node)
115+
if node.source.include?("\n")
116+
"#{node.loc.keyword.with(end_pos: node.condition.loc.selector.end_pos).source} ... end"
117+
else
118+
node.source
119+
end
110120
end
111121

112122
def replacement(receiver, other)

0 commit comments

Comments
 (0)