rubocop 0.83.0 → 0.84.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/config/default.yml +20 -3
- data/lib/rubocop.rb +6 -59
- data/lib/rubocop/ast_aliases.rb +8 -0
- data/lib/rubocop/cli/command/show_cops.rb +2 -6
- data/lib/rubocop/config.rb +1 -3
- data/lib/rubocop/config_loader.rb +3 -9
- data/lib/rubocop/config_loader_resolver.rb +2 -6
- data/lib/rubocop/cop/autocorrect_logic.rb +1 -2
- data/lib/rubocop/cop/corrector.rb +1 -3
- data/lib/rubocop/cop/correctors/alignment_corrector.rb +2 -6
- data/lib/rubocop/cop/correctors/parentheses_corrector.rb +1 -3
- data/lib/rubocop/cop/correctors/space_corrector.rb +1 -3
- data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -3
- data/lib/rubocop/cop/generator.rb +1 -1
- data/lib/rubocop/cop/ignored_node.rb +1 -3
- data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +2 -6
- data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +62 -4
- data/lib/rubocop/cop/layout/first_argument_indentation.rb +0 -2
- data/lib/rubocop/cop/layout/first_array_element_indentation.rb +1 -3
- data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -3
- data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -6
- data/lib/rubocop/cop/layout/indentation_width.rb +1 -3
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +1 -3
- data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -3
- data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +2 -6
- data/lib/rubocop/cop/layout/space_before_comment.rb +1 -3
- data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +1 -3
- data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +2 -6
- data/lib/rubocop/cop/lint/ambiguous_operator.rb +4 -2
- data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +133 -0
- data/lib/rubocop/cop/lint/erb_new_arguments.rb +2 -6
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +11 -3
- data/lib/rubocop/cop/lint/percent_string_array.rb +1 -3
- data/lib/rubocop/cop/lint/suppressed_exception.rb +12 -1
- data/lib/rubocop/cop/lint/syntax.rb +1 -3
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +1 -3
- data/lib/rubocop/cop/migration/department_name.rb +5 -9
- data/lib/rubocop/cop/mixin/alignment.rb +1 -3
- data/lib/rubocop/cop/mixin/array_min_size.rb +2 -6
- data/lib/rubocop/cop/mixin/check_line_breakable.rb +4 -12
- data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +1 -3
- data/lib/rubocop/cop/mixin/configurable_formatting.rb +1 -3
- data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +1 -3
- data/lib/rubocop/cop/mixin/surrounding_space.rb +1 -3
- data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -3
- data/lib/rubocop/cop/naming/file_name.rb +1 -3
- data/lib/rubocop/cop/registry.rb +2 -6
- data/lib/rubocop/cop/severity.rb +1 -3
- data/lib/rubocop/cop/style/and_or.rb +2 -2
- data/lib/rubocop/cop/style/attr.rb +1 -3
- data/lib/rubocop/cop/style/block_delimiters.rb +2 -8
- data/lib/rubocop/cop/style/conditional_assignment.rb +1 -3
- data/lib/rubocop/cop/style/double_negation.rb +41 -4
- data/lib/rubocop/cop/style/empty_literal.rb +1 -3
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +2 -4
- data/lib/rubocop/cop/style/hash_syntax.rb +12 -5
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +1 -3
- data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -3
- data/lib/rubocop/cop/style/one_line_conditional.rb +2 -6
- data/lib/rubocop/cop/style/redundant_parentheses.rb +2 -6
- data/lib/rubocop/cop/style/safe_navigation.rb +2 -6
- data/lib/rubocop/cop/style/slicing_with_range.rb +1 -1
- data/lib/rubocop/cop/style/special_global_vars.rb +2 -6
- data/lib/rubocop/cop/style/ternary_parentheses.rb +1 -3
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +2 -6
- data/lib/rubocop/cop/variable_force.rb +3 -9
- data/lib/rubocop/cop/variable_force/branch.rb +2 -6
- data/lib/rubocop/cop/variable_force/variable.rb +2 -6
- data/lib/rubocop/ext/processed_source.rb +18 -0
- data/lib/rubocop/formatter/base_formatter.rb +0 -4
- data/lib/rubocop/formatter/disabled_config_formatter.rb +4 -12
- data/lib/rubocop/formatter/formatter_set.rb +1 -3
- data/lib/rubocop/options.rb +2 -8
- data/lib/rubocop/remote_config.rb +1 -3
- data/lib/rubocop/result_cache.rb +1 -3
- data/lib/rubocop/rspec/cop_helper.rb +1 -3
- data/lib/rubocop/rspec/expect_offense.rb +3 -9
- data/lib/rubocop/rspec/shared_contexts.rb +54 -16
- data/lib/rubocop/runner.rb +8 -10
- data/lib/rubocop/target_finder.rb +2 -6
- data/lib/rubocop/version.rb +5 -3
- metadata +19 -56
- data/lib/rubocop/ast/builder.rb +0 -85
- data/lib/rubocop/ast/node.rb +0 -637
- data/lib/rubocop/ast/node/alias_node.rb +0 -24
- data/lib/rubocop/ast/node/and_node.rb +0 -29
- data/lib/rubocop/ast/node/args_node.rb +0 -29
- data/lib/rubocop/ast/node/array_node.rb +0 -70
- data/lib/rubocop/ast/node/block_node.rb +0 -121
- data/lib/rubocop/ast/node/break_node.rb +0 -17
- data/lib/rubocop/ast/node/case_match_node.rb +0 -56
- data/lib/rubocop/ast/node/case_node.rb +0 -56
- data/lib/rubocop/ast/node/class_node.rb +0 -31
- data/lib/rubocop/ast/node/def_node.rb +0 -82
- data/lib/rubocop/ast/node/defined_node.rb +0 -17
- data/lib/rubocop/ast/node/ensure_node.rb +0 -17
- data/lib/rubocop/ast/node/float_node.rb +0 -12
- data/lib/rubocop/ast/node/for_node.rb +0 -53
- data/lib/rubocop/ast/node/forward_args_node.rb +0 -18
- data/lib/rubocop/ast/node/hash_node.rb +0 -109
- data/lib/rubocop/ast/node/if_node.rb +0 -175
- data/lib/rubocop/ast/node/int_node.rb +0 -12
- data/lib/rubocop/ast/node/keyword_splat_node.rb +0 -45
- data/lib/rubocop/ast/node/mixin/basic_literal_node.rb +0 -16
- data/lib/rubocop/ast/node/mixin/binary_operator_node.rb +0 -43
- data/lib/rubocop/ast/node/mixin/collection_node.rb +0 -15
- data/lib/rubocop/ast/node/mixin/conditional_node.rb +0 -45
- data/lib/rubocop/ast/node/mixin/hash_element_node.rb +0 -125
- data/lib/rubocop/ast/node/mixin/method_dispatch_node.rb +0 -269
- data/lib/rubocop/ast/node/mixin/method_identifier_predicates.rb +0 -114
- data/lib/rubocop/ast/node/mixin/modifier_node.rb +0 -17
- data/lib/rubocop/ast/node/mixin/numeric_node.rb +0 -21
- data/lib/rubocop/ast/node/mixin/parameterized_node.rb +0 -61
- data/lib/rubocop/ast/node/mixin/predicate_operator_node.rb +0 -35
- data/lib/rubocop/ast/node/module_node.rb +0 -24
- data/lib/rubocop/ast/node/or_node.rb +0 -29
- data/lib/rubocop/ast/node/pair_node.rb +0 -63
- data/lib/rubocop/ast/node/range_node.rb +0 -18
- data/lib/rubocop/ast/node/regexp_node.rb +0 -33
- data/lib/rubocop/ast/node/resbody_node.rb +0 -24
- data/lib/rubocop/ast/node/retry_node.rb +0 -17
- data/lib/rubocop/ast/node/return_node.rb +0 -24
- data/lib/rubocop/ast/node/self_class_node.rb +0 -24
- data/lib/rubocop/ast/node/send_node.rb +0 -17
- data/lib/rubocop/ast/node/str_node.rb +0 -16
- data/lib/rubocop/ast/node/super_node.rb +0 -21
- data/lib/rubocop/ast/node/symbol_node.rb +0 -12
- data/lib/rubocop/ast/node/until_node.rb +0 -35
- data/lib/rubocop/ast/node/when_node.rb +0 -53
- data/lib/rubocop/ast/node/while_node.rb +0 -35
- data/lib/rubocop/ast/node/yield_node.rb +0 -21
- data/lib/rubocop/ast/sexp.rb +0 -16
- data/lib/rubocop/ast/traversal.rb +0 -202
- data/lib/rubocop/node_pattern.rb +0 -887
- data/lib/rubocop/processed_source.rb +0 -213
- data/lib/rubocop/token.rb +0 -114
@@ -1,114 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module AST
|
5
|
-
# Common predicates for nodes that reference method identifiers:
|
6
|
-
# `send`, `csend`, `def`, `defs`, `super`, `zsuper`
|
7
|
-
#
|
8
|
-
# @note this mixin expects `#method_name` and `#receiver` to be implemented
|
9
|
-
module MethodIdentifierPredicates
|
10
|
-
ENUMERATOR_METHODS = %i[collect collect_concat detect downto each
|
11
|
-
find find_all find_index inject loop map!
|
12
|
-
map reduce reject reject! reverse_each select
|
13
|
-
select! times upto].freeze
|
14
|
-
|
15
|
-
# http://phrogz.net/programmingruby/language.html#table_18.4
|
16
|
-
OPERATOR_METHODS = %i[| ^ & <=> == === =~ > >= < <= << >> + - * /
|
17
|
-
% ** ~ +@ -@ !@ ~@ [] []= ! != !~ `].freeze
|
18
|
-
|
19
|
-
# Checks whether the method name matches the argument.
|
20
|
-
#
|
21
|
-
# @param [Symbol, String] name the method name to check for
|
22
|
-
# @return [Boolean] whether the method name matches the argument
|
23
|
-
def method?(name)
|
24
|
-
method_name == name.to_sym
|
25
|
-
end
|
26
|
-
|
27
|
-
# Checks whether the method is an operator method.
|
28
|
-
#
|
29
|
-
# @return [Boolean] whether the method is an operator
|
30
|
-
def operator_method?
|
31
|
-
OPERATOR_METHODS.include?(method_name)
|
32
|
-
end
|
33
|
-
|
34
|
-
# Checks whether the method is a comparison method.
|
35
|
-
#
|
36
|
-
# @return [Boolean] whether the method is a comparison
|
37
|
-
def comparison_method?
|
38
|
-
Node::COMPARISON_OPERATORS.include?(method_name)
|
39
|
-
end
|
40
|
-
|
41
|
-
# Checks whether the method is an assignment method.
|
42
|
-
#
|
43
|
-
# @return [Boolean] whether the method is an assignment
|
44
|
-
def assignment_method?
|
45
|
-
!comparison_method? && method_name.to_s.end_with?('=')
|
46
|
-
end
|
47
|
-
|
48
|
-
# Checks whether the method is an enumerator method.
|
49
|
-
#
|
50
|
-
# @return [Boolean] whether the method is an enumerator
|
51
|
-
def enumerator_method?
|
52
|
-
ENUMERATOR_METHODS.include?(method_name) ||
|
53
|
-
method_name.to_s.start_with?('each_')
|
54
|
-
end
|
55
|
-
|
56
|
-
# Checks whether the method is a predicate method.
|
57
|
-
#
|
58
|
-
# @return [Boolean] whether the method is a predicate method
|
59
|
-
def predicate_method?
|
60
|
-
method_name.to_s.end_with?('?')
|
61
|
-
end
|
62
|
-
|
63
|
-
# Checks whether the method is a bang method.
|
64
|
-
#
|
65
|
-
# @return [Boolean] whether the method is a bang method
|
66
|
-
def bang_method?
|
67
|
-
method_name.to_s.end_with?('!')
|
68
|
-
end
|
69
|
-
|
70
|
-
# Checks whether the method is a camel case method,
|
71
|
-
# e.g. `Integer()`.
|
72
|
-
#
|
73
|
-
# @return [Boolean] whether the method is a camel case method
|
74
|
-
def camel_case_method?
|
75
|
-
method_name.to_s =~ /\A[A-Z]/
|
76
|
-
end
|
77
|
-
|
78
|
-
# Checks whether the *explicit* receiver of this node is `self`.
|
79
|
-
#
|
80
|
-
# @return [Boolean] whether the receiver of this node is `self`
|
81
|
-
def self_receiver?
|
82
|
-
receiver&.self_type?
|
83
|
-
end
|
84
|
-
|
85
|
-
# Checks whether the *explicit* receiver of node is a `const` node.
|
86
|
-
#
|
87
|
-
# @return [Boolean] whether the receiver of this node is a `const` node
|
88
|
-
def const_receiver?
|
89
|
-
receiver&.const_type?
|
90
|
-
end
|
91
|
-
|
92
|
-
# Checks whether this is a negation method, i.e. `!` or keyword `not`.
|
93
|
-
#
|
94
|
-
# @return [Boolean] whether this method is a negation method
|
95
|
-
def negation_method?
|
96
|
-
receiver && method_name == :!
|
97
|
-
end
|
98
|
-
|
99
|
-
# Checks whether this is a prefix not method, e.g. `not foo`.
|
100
|
-
#
|
101
|
-
# @return [Boolean] whether this method is a prefix not
|
102
|
-
def prefix_not?
|
103
|
-
negation_method? && loc.selector.is?('not')
|
104
|
-
end
|
105
|
-
|
106
|
-
# Checks whether this is a prefix bang method, e.g. `!foo`.
|
107
|
-
#
|
108
|
-
# @return [Boolean] whether this method is a prefix bang
|
109
|
-
def prefix_bang?
|
110
|
-
negation_method? && loc.selector.is?('!')
|
111
|
-
end
|
112
|
-
end
|
113
|
-
end
|
114
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module AST
|
5
|
-
# Common functionality for nodes that can be used as modifiers:
|
6
|
-
# `if`, `while`, `until`
|
7
|
-
module ModifierNode
|
8
|
-
# Checks whether the node is in a modifier form, i.e. a condition
|
9
|
-
# trailing behind an expression.
|
10
|
-
#
|
11
|
-
# @return [Boolean] whether the node is a modifier
|
12
|
-
def modifier_form?
|
13
|
-
loc.end.nil?
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module AST
|
5
|
-
# Common functionality for primitive numeric nodes: `int`, `float`, ...
|
6
|
-
module NumericNode
|
7
|
-
SIGN_REGEX = /\A[+-]/.freeze
|
8
|
-
|
9
|
-
# Checks whether this is literal has a sign.
|
10
|
-
#
|
11
|
-
# @example
|
12
|
-
#
|
13
|
-
# +42
|
14
|
-
#
|
15
|
-
# @return [Boolean] whether this literal has a sign.
|
16
|
-
def sign?
|
17
|
-
source.match(SIGN_REGEX)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,61 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module AST
|
5
|
-
# Common functionality for nodes that are parameterized:
|
6
|
-
# `send`, `super`, `zsuper`, `def`, `defs`
|
7
|
-
module ParameterizedNode
|
8
|
-
# Checks whether this node's arguments are wrapped in parentheses.
|
9
|
-
#
|
10
|
-
# @return [Boolean] whether this node's arguments are
|
11
|
-
# wrapped in parentheses
|
12
|
-
def parenthesized?
|
13
|
-
loc.end&.is?(')')
|
14
|
-
end
|
15
|
-
|
16
|
-
# A shorthand for getting the first argument of the node.
|
17
|
-
# Equivalent to `arguments.first`.
|
18
|
-
#
|
19
|
-
# @return [Node, nil] the first argument of the node,
|
20
|
-
# or `nil` if there are no arguments
|
21
|
-
def first_argument
|
22
|
-
arguments[0]
|
23
|
-
end
|
24
|
-
|
25
|
-
# A shorthand for getting the last argument of the node.
|
26
|
-
# Equivalent to `arguments.last`.
|
27
|
-
#
|
28
|
-
# @return [Node, nil] the last argument of the node,
|
29
|
-
# or `nil` if there are no arguments
|
30
|
-
def last_argument
|
31
|
-
arguments[-1]
|
32
|
-
end
|
33
|
-
|
34
|
-
# Checks whether this node has any arguments.
|
35
|
-
#
|
36
|
-
# @return [Boolean] whether this node has any arguments
|
37
|
-
def arguments?
|
38
|
-
!arguments.empty?
|
39
|
-
end
|
40
|
-
|
41
|
-
# Checks whether any argument of the node is a splat
|
42
|
-
# argument, i.e. `*splat`.
|
43
|
-
#
|
44
|
-
# @return [Boolean] whether the node is a splat argument
|
45
|
-
def splat_argument?
|
46
|
-
arguments? &&
|
47
|
-
(arguments.any?(&:splat_type?) || arguments.any?(&:restarg_type?))
|
48
|
-
end
|
49
|
-
alias rest_argument? splat_argument?
|
50
|
-
|
51
|
-
# Whether the last argument of the node is a block pass,
|
52
|
-
# i.e. `&block`.
|
53
|
-
#
|
54
|
-
# @return [Boolean] whether the last argument of the node is a block pass
|
55
|
-
def block_argument?
|
56
|
-
arguments? &&
|
57
|
-
(last_argument.block_pass_type? || last_argument.blockarg_type?)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module AST
|
5
|
-
# Common functionality for nodes that are predicates:
|
6
|
-
# `or`, `and` ...
|
7
|
-
module PredicateOperatorNode
|
8
|
-
LOGICAL_AND = '&&'
|
9
|
-
SEMANTIC_AND = 'and'
|
10
|
-
LOGICAL_OR = '||'
|
11
|
-
SEMANTIC_OR = 'or'
|
12
|
-
|
13
|
-
# Returns the operator as a string.
|
14
|
-
#
|
15
|
-
# @return [String] the operator
|
16
|
-
def operator
|
17
|
-
loc.operator.source
|
18
|
-
end
|
19
|
-
|
20
|
-
# Checks whether this is a logical operator.
|
21
|
-
#
|
22
|
-
# @return [Boolean] whether this is a logical operator
|
23
|
-
def logical_operator?
|
24
|
-
operator == LOGICAL_AND || operator == LOGICAL_OR
|
25
|
-
end
|
26
|
-
|
27
|
-
# Checks whether this is a semantic operator.
|
28
|
-
#
|
29
|
-
# @return [Boolean] whether this is a semantic operator
|
30
|
-
def semantic_operator?
|
31
|
-
operator == SEMANTIC_AND || operator == SEMANTIC_OR
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module AST
|
5
|
-
# A node extension for `module` nodes. This will be used in place of a
|
6
|
-
# plain node when the builder constructs the AST, making its methods
|
7
|
-
# available to all `module` nodes within RuboCop.
|
8
|
-
class ModuleNode < Node
|
9
|
-
# The identifer for this `module` node.
|
10
|
-
#
|
11
|
-
# @return [Node] the identifer of the module
|
12
|
-
def identifier
|
13
|
-
node_parts[0]
|
14
|
-
end
|
15
|
-
|
16
|
-
# The body of this `module` node.
|
17
|
-
#
|
18
|
-
# @return [Node, nil] the body of the module
|
19
|
-
def body
|
20
|
-
node_parts[1]
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module AST
|
5
|
-
# A node extension for `or` nodes. This will be used in place of a plain
|
6
|
-
# node when the builder constructs the AST, making its methods available
|
7
|
-
# to all `or` nodes within RuboCop.
|
8
|
-
class OrNode < Node
|
9
|
-
include BinaryOperatorNode
|
10
|
-
include PredicateOperatorNode
|
11
|
-
|
12
|
-
# Returns the alternate operator of the `or` as a string.
|
13
|
-
# Returns `or` for `||` and vice versa.
|
14
|
-
#
|
15
|
-
# @return [String] the alternate of the `or` operator
|
16
|
-
def alternate_operator
|
17
|
-
logical_operator? ? SEMANTIC_OR : LOGICAL_OR
|
18
|
-
end
|
19
|
-
|
20
|
-
# Returns the inverse keyword of the `or` node as a string.
|
21
|
-
# Returns `and` for `or` and `&&` for `||`.
|
22
|
-
#
|
23
|
-
# @return [String] the inverse of the `or` operator
|
24
|
-
def inverse_operator
|
25
|
-
logical_operator? ? LOGICAL_AND : SEMANTIC_AND
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,63 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module AST
|
5
|
-
# A node extension for `pair` nodes. This will be used in place of a plain
|
6
|
-
# node when the builder constructs the AST, making its methods available
|
7
|
-
# to all `pair` nodes within RuboCop.
|
8
|
-
class PairNode < Node
|
9
|
-
include HashElementNode
|
10
|
-
|
11
|
-
HASH_ROCKET = '=>'
|
12
|
-
SPACED_HASH_ROCKET = ' => '
|
13
|
-
COLON = ':'
|
14
|
-
SPACED_COLON = ': '
|
15
|
-
|
16
|
-
# Checks whether the `pair` uses a hash rocket delimiter.
|
17
|
-
#
|
18
|
-
# @return [Boolean] whether this `pair` uses a hash rocket delimiter
|
19
|
-
def hash_rocket?
|
20
|
-
loc.operator.is?(HASH_ROCKET)
|
21
|
-
end
|
22
|
-
|
23
|
-
# Checks whether the `pair` uses a colon delimiter.
|
24
|
-
#
|
25
|
-
# @return [Boolean] whether this `pair` uses a colon delimiter
|
26
|
-
def colon?
|
27
|
-
loc.operator.is?(COLON)
|
28
|
-
end
|
29
|
-
|
30
|
-
# Returns the delimiter of the `pair` as a string. Returns `=>` for a
|
31
|
-
# colon delimited `pair` and `:` for a hash rocket delimited `pair`.
|
32
|
-
#
|
33
|
-
# @param [Boolean] with_spacing whether to include spacing
|
34
|
-
# @return [String] the delimiter of the `pair`
|
35
|
-
def delimiter(with_spacing = false)
|
36
|
-
if with_spacing
|
37
|
-
hash_rocket? ? SPACED_HASH_ROCKET : SPACED_COLON
|
38
|
-
else
|
39
|
-
hash_rocket? ? HASH_ROCKET : COLON
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
# Returns the inverse delimiter of the `pair` as a string.
|
44
|
-
#
|
45
|
-
# @param [Boolean] with_spacing whether to include spacing
|
46
|
-
# @return [String] the inverse delimiter of the `pair`
|
47
|
-
def inverse_delimiter(with_spacing = false)
|
48
|
-
if with_spacing
|
49
|
-
hash_rocket? ? SPACED_COLON : SPACED_HASH_ROCKET
|
50
|
-
else
|
51
|
-
hash_rocket? ? COLON : HASH_ROCKET
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
# Checks whether the value starts on its own line.
|
56
|
-
#
|
57
|
-
# @return [Boolean] whether the value in the `pair` starts its own line
|
58
|
-
def value_on_new_line?
|
59
|
-
key.loc.line != value.loc.line
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module AST
|
5
|
-
# A node extension for `irange` and `erange` nodes. This will be used in
|
6
|
-
# place of a plain node when the builder constructs the AST, making its
|
7
|
-
# methods available to all `irange` and `erange` nodes within RuboCop.
|
8
|
-
class RangeNode < Node
|
9
|
-
def begin
|
10
|
-
node_parts[0]
|
11
|
-
end
|
12
|
-
|
13
|
-
def end
|
14
|
-
node_parts[1]
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module AST
|
5
|
-
# A node extension for `regexp` nodes. This will be used in place of a plain
|
6
|
-
# node when the builder constructs the AST, making its methods available
|
7
|
-
# to all `regexp` nodes within RuboCop.
|
8
|
-
class RegexpNode < Node
|
9
|
-
OPTIONS = {
|
10
|
-
x: Regexp::EXTENDED,
|
11
|
-
i: Regexp::IGNORECASE,
|
12
|
-
m: Regexp::MULTILINE,
|
13
|
-
n: Regexp::NOENCODING
|
14
|
-
}.freeze
|
15
|
-
|
16
|
-
# @return [Regexp] a regexp of this node
|
17
|
-
def to_regexp
|
18
|
-
option = regopt.children.map { |opt| OPTIONS[opt] }.inject(:|)
|
19
|
-
Regexp.new(content, option)
|
20
|
-
end
|
21
|
-
|
22
|
-
# @return [RuboCop::AST::Node] a regopt node
|
23
|
-
def regopt
|
24
|
-
children.last
|
25
|
-
end
|
26
|
-
|
27
|
-
# @return [String] a string of regexp content
|
28
|
-
def content
|
29
|
-
children.select(&:str_type?).map(&:str_content).join
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module AST
|
5
|
-
# A node extension for `resbody` nodes. This will be used in place of a
|
6
|
-
# plain node when the builder constructs the AST, making its methods
|
7
|
-
# available to all `resbody` nodes within RuboCop.
|
8
|
-
class ResbodyNode < Node
|
9
|
-
# Returns the body of the `rescue` clause.
|
10
|
-
#
|
11
|
-
# @return [Node, nil] The body of the `resbody`.
|
12
|
-
def body
|
13
|
-
node_parts[2]
|
14
|
-
end
|
15
|
-
|
16
|
-
# Returns the exception variable of the `rescue` clause.
|
17
|
-
#
|
18
|
-
# @return [Node, nil] The exception variable of the `resbody`.
|
19
|
-
def exception_variable
|
20
|
-
node_parts[1]
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|