Class: RuboCop::AST::PairNode
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
Node ,
NodePattern::Macros ,
Parser::AST::Node
|
|
Instance Chain:
|
|
Inherits: |
RuboCop::AST::Node
|
Defined in: | lib/rubocop/ast/node/pair_node.rb |
Overview
A node extension for pair
nodes. This will be used in place of a plain
node when the builder constructs the AST, making its methods available
to all pair
nodes within RuboCop.
Constant Summary
-
COLON =
private
# File 'lib/rubocop/ast/node/pair_node.rb', line 15':'
-
HASH_ROCKET =
private
# File 'lib/rubocop/ast/node/pair_node.rb', line 11'=>'
-
SPACED_COLON =
private
# File 'lib/rubocop/ast/node/pair_node.rb', line 17': '
-
SPACED_HASH_ROCKET =
private
# File 'lib/rubocop/ast/node/pair_node.rb', line 13' => '
Node
- Inherited
ASSIGNMENTS, BASIC_CONDITIONALS, BASIC_LITERALS, COMPARISON_OPERATORS, COMPOSITE_LITERALS, CONDITIONALS, EMPTY_CHILDREN, EMPTY_PROPERTIES, EQUALS_ASSIGNMENTS, FALSEY_LITERALS, GROUP_FOR_TYPE, IMMUTABLE_LITERALS, KEYWORDS, LITERALS, LITERAL_RECURSIVE_METHODS, LITERAL_RECURSIVE_TYPES, LOOP_TYPES, MUTABLE_LITERALS, OPERATOR_KEYWORDS, POST_CONDITION_LOOP_TYPES, REFERENCES, SHORTHAND_ASSIGNMENTS, SPECIAL_KEYWORDS, TRUTHY_LITERALS, VARIABLES
Class Method Summary
Node
- Inherited
.new, | |
.def_recursive_literal_predicate | Define a |
NodePattern::Macros
- Extended
def_node_matcher | Define a method which applies a pattern to an AST node. |
def_node_search | Define a method which recurses over the descendants of an AST node, checking whether any of them match the provided pattern. |
Instance Attribute Summary
-
#colon? ⇒ Boolean
readonly
Checks whether the
pair
uses a colon delimiter. -
#hash_rocket? ⇒ Boolean
readonly
Checks whether the
pair
uses a hash rocket delimiter. -
#value_omission? ⇒ Boolean
readonly
Checks whether the
pair
uses hash value omission. -
#value_on_new_line? ⇒ Boolean
readonly
Checks whether the value starts on its own line.
Node
- Inherited
#any_block_type?, #any_def_type?, #any_match_pattern_type?, #argument?, #argument_type?, #assignment?, #basic_conditional?, #basic_literal?, #boolean_type?, #call_type?, #chained?, #complete?, #conditional?, #empty_source?, #equals_asgn?, #falsey_literal?, #guard_clause?, #immutable_literal?, #keyword?, #literal?, | |||
#loop_keyword? |
|
||
#multiline? | Predicates. |
||
#mutable_literal?, #numeric_type?, #operator_keyword?, | |||
#parent | Returns the parent node, or |
||
#parent?, #parenthesized_call?, #post_condition_loop?, | |||
#pure? | Some expressions are evaluated for their value, some for their side effects, and some for both. |
||
#range_type?, #reference?, #root?, | |||
#send_type? | Most nodes are of 'send' type, so this method is defined separately to make this check as fast as possible. |
||
#shorthand_asgn?, #single_line?, #special_keyword?, #truthy_literal?, | |||
#value_used? | Some expressions are evaluated for their value, some for their side effects, and some for both If we know that an expression is useful only for its side effects, that means we can transform it in ways which preserve the side effects, but change the return value So, does the return value of this node matter? If we changed it to |
||
#variable?, #begin_value_used?, #case_if_value_used?, #for_value_used?, #while_until_value_used? |
Instance Method Summary
-
#delimiter(*deprecated, with_spacing: deprecated.first) ⇒ String
Returns the delimiter of the
pair
as a string. -
#inverse_delimiter(*deprecated, with_spacing: deprecated.first) ⇒ String
Returns the inverse delimiter of the
pair
as a string.
HashElementNode
- Included
#delimiter_delta | Returns the delta between this element’s delimiter and the argument’s. |
#key | Returns the key of this |
#key_delta | Returns the delta between this pair’s key and the argument pair’s. |
#same_line? | Checks whether this |
#value | Returns the value of this |
#value_delta | Returns the delta between this element’s value and the argument’s. |
Node
- Inherited
#ancestors | Returns an array of ancestor nodes. |
||
#assignment_or_similar? | Some cops treat the shovel operator as a kind of assignment. |
||
#class_constructor?, #class_definition?, #complete!, #const_name, #defined_module, #defined_module_name, | |||
#each_ancestor | Calls the given block for each ancestor node from parent to root. |
||
#first_line, #global_const?, #lambda?, #lambda_or_proc?, #last_line, | |||
#left_sibling | Use is discouraged, this is a potentially slow method and can lead to even slower algorithms. |
||
#left_siblings | Use is discouraged, this is a potentially slow method and can lead to even slower algorithms. |
||
#line_count, | |||
#loc? | Shortcut to safely check if a location is present. |
||
#loc_is? | Shortcut to safely test a particular location, even if this location does not exist or is |
||
#match_guard_clause?, #module_definition?, | |||
#node_parts | Common destructuring method. |
||
#nonempty_line_count, | |||
#parent_module_name | Searching the AST. |
||
#proc?, #receiver, #recursive_basic_literal?, #recursive_literal?, | |||
#right_sibling | Use is discouraged, this is a potentially slow method and can lead to even slower algorithms. |
||
#right_siblings | Use is discouraged, this is a potentially slow method and can lead to even slower algorithms. |
||
#sibling_index | Returns the index of the receiver node in its siblings. |
||
#source |
|
||
#source_length, #source_range, #str_content, #struct_constructor?, | |||
#type? | Determine if the node is one of several node types in a single query Allows specific single node types, as well as "grouped" types (e.g. |
||
#updated | Override Node#updated so that |
||
#defined_module0, #new_class_or_module_block?, #parent_module_name_for_block, #parent_module_name_for_sclass, #parent_module_name_part, #visit_ancestors |
Descendence
- Included
#child_nodes | Returns an array of child nodes. |
#descendants | Returns an array of descendant nodes. |
#each_child_node | Calls the given block for each child node. |
#each_descendant | Calls the given block for each descendant node with depth first order. |
#each_node | Calls the given block for the receiver and each descendant node in depth-first order. |
Sexp
- Included
Constructor Details
This class inherits a constructor from RuboCop::AST::Node
Instance Attribute Details
#colon? ⇒ Boolean
(readonly)
Checks whether the pair
uses a colon delimiter.
# File 'lib/rubocop/ast/node/pair_node.rb', line 30
def colon? loc.operator.is?(COLON) end
#hash_rocket? ⇒ Boolean
(readonly)
Checks whether the pair
uses a hash rocket delimiter.
# File 'lib/rubocop/ast/node/pair_node.rb', line 23
def hash_rocket? loc.operator.is?(HASH_ROCKET) end
#value_omission? ⇒ Boolean
(readonly)
Checks whether the pair
uses hash value omission.
# File 'lib/rubocop/ast/node/pair_node.rb', line 69
def value_omission? source.end_with?(':') end
#value_on_new_line? ⇒ Boolean
(readonly)
Checks whether the value starts on its own line.
# File 'lib/rubocop/ast/node/pair_node.rb', line 62
def value_on_new_line? key.loc.line != value.loc.line end
Instance Method Details
#delimiter(*deprecated, with_spacing: deprecated.first) ⇒ String
Returns the delimiter of the pair
as a string. Returns ⇒
for a
colon delimited pair
and :
for a hash rocket delimited pair
.
# File 'lib/rubocop/ast/node/pair_node.rb', line 39
def delimiter(*deprecated, with_spacing: deprecated.first) if with_spacing hash_rocket? ? SPACED_HASH_ROCKET : SPACED_COLON else hash_rocket? ? HASH_ROCKET : COLON end end
#inverse_delimiter(*deprecated, with_spacing: deprecated.first) ⇒ String
Returns the inverse delimiter of the pair
as a string.
# File 'lib/rubocop/ast/node/pair_node.rb', line 51
def inverse_delimiter(*deprecated, with_spacing: deprecated.first) if with_spacing hash_rocket? ? SPACED_COLON : SPACED_HASH_ROCKET else hash_rocket? ? COLON : HASH_ROCKET end end