Skip to content
代码片段 群组 项目
未验证 提交 8c56c779 编辑于 作者: Peter Leitzen's avatar Peter Leitzen
浏览文件

Cop/StaticTranslationDefinition: Allow constant assignments for Structs

Prior this commit, Cop/StaticTranslationDefinition would flag the
following code:

    SomeClass = Struct.new do
      def text
        _('Some translated text')
      end
    end

This commit allow such style again so workarounds are not longer needed
like:

    Struct.new('SomeClass') do
      def text
        _('Some translated text')
      end
    end
上级 d62e2dcd
No related branches found
No related tags found
无相关合并请求
......@@ -8,11 +8,15 @@ class StaticTranslationDefinition < RuboCop::Cop::Cop
TRANSLATION_METHODS = %i[_ s_ n_].freeze
def_node_matcher :translation_method?, <<~PATTERN
(send _ _ str*)
(send _ _ str*)
PATTERN
def_node_matcher :lambda_node?, <<~PATTERN
(send _ :lambda)
(send _ :lambda)
PATTERN
def_node_matcher :struct_constant_assignment?, <<~PATTERN
(casgn _ _ `(const _ :Struct))
PATTERN
def on_send(node)
......@@ -27,7 +31,7 @@ def on_send(node)
receiver, _ = *ancestor
break if lambda_node?(receiver) # translations defined in lambda nodes should be allowed
if constant_assignment?(ancestor)
if constant_assignment?(ancestor) && !struct_constant_assignment?(ancestor)
add_offense(node, location: :expression)
break
......
......@@ -112,7 +112,7 @@ class MyClass
}
end
CODE
<<~CODE
<<~CODE,
class MyClass
def hello
{
......@@ -121,6 +121,20 @@ def hello
end
end
CODE
<<~CODE,
SomeClass = Struct.new do
def text
_('Some translated text')
end
end
CODE
<<~CODE
Struct.new('SomeClass') do
def text
_('Some translated text')
end
end
CODE
]
end
......
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册