class RuboCop::GitlabSecurity::Wording
RSpec example wording rewriter
Constants
- ES_SUFFIX_PATTERN
- IES_SUFFIX_PATTERN
- SHOULDNT_BE_PREFIX
- SHOULDNT_PREFIX
Attributes
ignores[R]
replacements[R]
text[R]
Public Class Methods
new(text, ignore:, replace:)
click to toggle source
# File lib/rubocop/gitlab-security/wording.rb, line 12 def initialize(text, ignore:, replace:) @text = text @ignores = ignore @replacements = replace end
Public Instance Methods
rewrite()
click to toggle source
# File lib/rubocop/gitlab-security/wording.rb, line 18 def rewrite case text when SHOULDNT_BE_PREFIX replace_prefix(SHOULDNT_BE_PREFIX, 'is not') when SHOULDNT_PREFIX replace_prefix(SHOULDNT_PREFIX, 'does not') else remove_should_and_pluralize end end
Private Instance Methods
append_suffix(word, suffix)
click to toggle source
# File lib/rubocop/gitlab-security/wording.rb, line 72 def append_suffix(word, suffix) suffix = suffix.upcase if uppercase?(word) "#{word}#{suffix}" end
ignored_word?(word)
click to toggle source
# File lib/rubocop/gitlab-security/wording.rb, line 57 def ignored_word?(word) ignores.any? { |ignore| ignore.casecmp(word).zero? } end
remove_should_and_pluralize()
click to toggle source
# File lib/rubocop/gitlab-security/wording.rb, line 43 def remove_should_and_pluralize _should, *words = text.split words.each_with_index do |word, index| next if ignored_word?(word) words[index] = substitute(word) break end words.join(' ') end
replace_prefix(pattern, replacement)
click to toggle source
# File lib/rubocop/gitlab-security/wording.rb, line 33 def replace_prefix(pattern, replacement) text.sub(pattern) do |shouldnt| uppercase?(shouldnt) ? replacement.upcase : replacement end end
substitute(word)
click to toggle source
# File lib/rubocop/gitlab-security/wording.rb, line 61 def substitute(word) # NOTE: Custom replacements are case sensitive. return replacements.fetch(word) if replacements.key?(word) case word when ES_SUFFIX_PATTERN then append_suffix(word, 'es') when IES_SUFFIX_PATTERN then append_suffix(word[0..-2], 'ies') else append_suffix(word, 's') end end
uppercase?(word)
click to toggle source
# File lib/rubocop/gitlab-security/wording.rb, line 39 def uppercase?(word) word.upcase.eql?(word) end