Module: RuboCop::AST::MethodIdentifierPredicates
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Included In:
| |
Defined in: | lib/rubocop/ast/node/mixin/method_identifier_predicates.rb |
Overview
this mixin expects #method_name
and #receiver
to be implemented
Common predicates for nodes that reference method identifiers:
send
, csend
, def
, defs
, super
, zsuper
Constant Summary
-
ENUMERABLE_METHODS =
private
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 16(Enumerable.instance_methods + [:each]).to_set.freeze
-
ENUMERATOR_METHODS =
private
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 10%i[collect collect_concat detect downto each find find_all find_index inject loop map! map reduce reject reject! reverse_each select select! times upto].to_set.freeze
-
NONMUTATING_ARRAY_METHODS =
private
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 32%i[ all? any? assoc at bsearch bsearch_index collect combination compact count cycle deconstruct difference dig drop drop_while each each_index empty? eql? fetch filter find_index first flatten hash include? index inspect intersection join last length map max min minmax none? one? pack permutation product rassoc reject repeated_combination repeated_permutation reverse reverse_each rindex rotate sample select shuffle size slice sort sum take take_while to_a to_ary to_h to_s transpose union uniq values_at zip | ].to_set.freeze
-
NONMUTATING_BINARY_OPERATOR_METHODS =
private
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 24%i[* / % + - == === != < > <= >= <=>].to_set.freeze
-
NONMUTATING_HASH_METHODS =
private
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 48%i[ any? assoc compact dig each each_key each_pair each_value empty? eql? fetch fetch_values filter flatten has_key? has_value? hash include? inspect invert key key? keys? length member? merge rassoc rehash reject select size slice to_a to_h to_hash to_proc to_s transform_keys transform_values value? values values_at ].to_set.freeze
-
NONMUTATING_OPERATOR_METHODS =
private
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 28(NONMUTATING_BINARY_OPERATOR_METHODS + NONMUTATING_UNARY_OPERATOR_METHODS).freeze
-
NONMUTATING_STRING_METHODS =
private
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 59%i[ ascii_only? b bytes bytesize byteslice capitalize casecmp casecmp? center chars chomp chop chr codepoints count crypt delete delete_prefix delete_suffix downcase dump each_byte each_char each_codepoint each_grapheme_cluster each_line empty? encode encoding end_with? eql? getbyte grapheme_clusters gsub hash hex include index inspect intern length lines ljust lstrip match match? next oct ord partition reverse rindex rjust rpartition rstrip scan scrub size slice squeeze start_with? strip sub succ sum swapcase to_a to_c to_f to_i to_r to_s to_str to_sym tr tr_s unicode_normalize unicode_normalized? unpack unpack1 upcase upto valid_encoding? ].to_set.freeze
-
NONMUTATING_UNARY_OPERATOR_METHODS =
private
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 26%i[+@ -@ ~ !].to_set.freeze
-
OPERATOR_METHODS =
private
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 20
%i[| ^ & <=> == === =~ > >= < <= << >> + - * / % ** ~ +@ -@ !@ ~@ [] []= ! != !~ `].to_set.freeze
Instance Attribute Summary
-
#assignment_method? ⇒ Boolean
readonly
Checks whether the method is an assignment method.
-
#bang_method? ⇒ Boolean
readonly
Checks whether the method is a bang method.
-
#camel_case_method? ⇒ Boolean
readonly
Checks whether the method is a camel case method, e.g.
-
#comparison_method? ⇒ Boolean
readonly
Checks whether the method is a comparison method.
-
#const_receiver? ⇒ Boolean
readonly
Checks whether the explicit receiver of node is a
const
node. -
#enumerable_method? ⇒ Boolean
readonly
Checks whether the method is an Enumerable method.
-
#enumerator_method? ⇒ Boolean
readonly
Checks whether the method is an enumerator method.
-
#negation_method? ⇒ Boolean
readonly
Checks whether this is a negation method, i.e.
-
#nonmutating_array_method? ⇒ Boolean
readonly
Checks whether the method is a nonmutating Array method.
-
#nonmutating_binary_operator_method? ⇒ Boolean
readonly
Checks whether the method is a nonmutating binary operator method.
-
#nonmutating_hash_method? ⇒ Boolean
readonly
Checks whether the method is a nonmutating Hash method.
-
#nonmutating_operator_method? ⇒ Boolean
readonly
Checks whether the method is a nonmutating operator method.
-
#nonmutating_string_method? ⇒ Boolean
readonly
Checks whether the method is a nonmutating String method.
-
#nonmutating_unary_operator_method? ⇒ Boolean
readonly
Checks whether the method is a nonmutating unary operator method.
-
#operator_method? ⇒ Boolean
readonly
Checks whether the method is an operator method.
-
#predicate_method? ⇒ Boolean
readonly
Checks whether the method is a predicate method.
-
#prefix_bang? ⇒ Boolean
readonly
Checks whether this is a prefix bang method, e.g.
-
#prefix_not? ⇒ Boolean
readonly
Checks whether this is a prefix not method, e.g.
-
#self_receiver? ⇒ Boolean
readonly
Checks whether the explicit receiver of this node is
self
.
Instance Method Summary
-
#method?(name) ⇒ Boolean
Checks whether the method name matches the argument.
Instance Attribute Details
#assignment_method? ⇒ Boolean
(readonly)
Checks whether the method is an assignment method.
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 142
def assignment_method? !comparison_method? && method_name.to_s.end_with?('=') end
#bang_method? ⇒ Boolean
(readonly)
Checks whether the method is a bang method.
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 171
def bang_method? method_name.to_s.end_with?('!') end
#camel_case_method? ⇒ Boolean
(readonly)
Checks whether the method is a camel case method,
e.g. Integer()
.
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 179
def camel_case_method? method_name.to_s =~ /\A[A-Z]/ end
#comparison_method? ⇒ Boolean
(readonly)
Checks whether the method is a comparison method.
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 135
def comparison_method? Node::COMPARISON_OPERATORS.include?(method_name) end
#const_receiver? ⇒ Boolean
(readonly)
Checks whether the explicit receiver of node is a const
node.
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 193
def const_receiver? receiver&.const_type? end
#enumerable_method? ⇒ Boolean
(readonly)
Checks whether the method is an Enumerable method.
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 157
def enumerable_method? ENUMERABLE_METHODS.include?(method_name) end
#enumerator_method? ⇒ Boolean
(readonly)
Checks whether the method is an enumerator method.
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 149
def enumerator_method? ENUMERATOR_METHODS.include?(method_name) || method_name.to_s.start_with?('each_') end
#negation_method? ⇒ Boolean
(readonly)
Checks whether this is a negation method, i.e. !
or keyword not
.
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 200
def negation_method? receiver && method_name == :! end
#nonmutating_array_method? ⇒ Boolean
(readonly)
Checks whether the method is a nonmutating Array method.
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 114
def nonmutating_array_method? NONMUTATING_ARRAY_METHODS.include?(method_name) end
#nonmutating_binary_operator_method? ⇒ Boolean
(readonly)
Checks whether the method is a nonmutating binary operator method.
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 93
def nonmutating_binary_operator_method? NONMUTATING_BINARY_OPERATOR_METHODS.include?(method_name) end
#nonmutating_hash_method? ⇒ Boolean
(readonly)
Checks whether the method is a nonmutating Hash method.
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 121
def nonmutating_hash_method? NONMUTATING_HASH_METHODS.include?(method_name) end
#nonmutating_operator_method? ⇒ Boolean
(readonly)
Checks whether the method is a nonmutating operator method.
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 107
def nonmutating_operator_method? NONMUTATING_OPERATOR_METHODS.include?(method_name) end
#nonmutating_string_method? ⇒ Boolean
(readonly)
Checks whether the method is a nonmutating String method.
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 128
def nonmutating_string_method? NONMUTATING_STRING_METHODS.include?(method_name) end
#nonmutating_unary_operator_method? ⇒ Boolean
(readonly)
Checks whether the method is a nonmutating unary operator method.
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 100
def nonmutating_unary_operator_method? NONMUTATING_UNARY_OPERATOR_METHODS.include?(method_name) end
#operator_method? ⇒ Boolean
(readonly)
Checks whether the method is an operator method.
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 86
def operator_method? OPERATOR_METHODS.include?(method_name) end
#predicate_method? ⇒ Boolean
(readonly)
Checks whether the method is a predicate method.
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 164
def predicate_method? method_name.to_s.end_with?('?') end
#prefix_bang? ⇒ Boolean
(readonly)
Checks whether this is a prefix bang method, e.g. !foo
.
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 214
def prefix_bang? negation_method? && loc.selector.is?('!') end
#prefix_not? ⇒ Boolean
(readonly)
Checks whether this is a prefix not method, e.g. not foo
.
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 207
def prefix_not? negation_method? && loc.selector.is?('not') end
#self_receiver? ⇒ Boolean
(readonly)
Checks whether the explicit receiver of this node is self
.
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 186
def self_receiver? receiver&.self_type? end
Instance Method Details
#method?(name) ⇒ Boolean
Checks whether the method name matches the argument.
# File 'lib/rubocop/ast/node/mixin/method_identifier_predicates.rb', line 79
def method?(name) method_name == name.to_sym end