Sha256: 1a1a93805fd5cd01f9956f4585a5f368046fea3ed579729e171cbc2cbb458798
Contents?: true
Size: 1.07 KB
Versions: 2
Compression:
Stored size: 1.07 KB
Contents
# frozen_string_literal: true require "rubocop" # :nocov: module RuboCop module Cop module Yattho # This cop ensures that tags are not set with ||= # # bad # @system_arguments[:tag] ||= :h1 # # good # @system_arguments[:tag] = fetch_or_fallback(TAG_OPTIONS, tag, DEFAULT_TAG) # # good # @system_arguments[:tag] = :h2 class NoTagMemoize < RuboCop::Cop::Cop INVALID_MESSAGE = <<~STR Avoid `[:tag] ||=`. Instead, try one of the following: - Don't allow consumers to update the tag by having a fixed tag (e.g. `system_arguments[:tag] = :div`) - Use the `fetch_or_fallback` helper to only allow a tag from a restricted list. STR def_node_search :tag_memoized?, <<~PATTERN (or-asgn (send _ _ (sym :tag) ) _ ) PATTERN def on_or_asgn(node) add_offense(node, message: INVALID_MESSAGE) if tag_memoized?(node) end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
yattho_view_components-0.1.1 | lib/rubocop/cop/yattho/no_tag_memoize.rb |
yattho_view_components-0.0.1 | lib/rubocop/cop/yattho/no_tag_memoize.rb |