class RuboCop::AST::HashNode
A node extension for `hash` nodes. This will be used in place of a plain node when the builder constructs the AST
, making its methods available to all `hash` nodes within RuboCop
.
Public Instance Methods
Checks whether the `hash` literal is delimited by curly braces.
@return [Boolean] whether the `hash` literal is enclosed in braces
# File lib/rubocop/ast/node/hash_node.rb, line 104 def braces? loc.end&.is?('}') end
Calls the given block for each `key` node in the `hash` literal. If no block is given, an `Enumerator` is returned.
@return [self] if a block is given @return [Enumerator] if no block is given
# File lib/rubocop/ast/node/hash_node.rb, line 50 def each_key return pairs.map(&:key).to_enum unless block_given? pairs.map(&:key).each do |key| yield key end self end
Calls the given block for each `pair` node in the `hash` literal. If no block is given, an `Enumerator` is returned.
@return [self] if a block is given @return [Enumerator] if no block is given
# File lib/rubocop/ast/node/hash_node.rb, line 28 def each_pair return each_child_node(:pair).to_enum unless block_given? each_child_node(:pair) do |pair| yield(*pair) end self end
Calls the given block for each `value` node in the `hash` literal. If no block is given, an `Enumerator` is returned.
@return [self] if a block is given @return [Enumerator] if no block is given
# File lib/rubocop/ast/node/hash_node.rb, line 72 def each_value return pairs.map(&:value).to_enum unless block_given? pairs.map(&:value).each do |value| yield value end self end
Checks whether the `hash` node contains any `pair`- or `kwsplat` nodes.
@return whether the `hash` is empty
# File lib/rubocop/ast/node/hash_node.rb, line 19 def empty? children.empty? end
Returns an array of all the keys in the `hash` literal.
@return [Array<Node>] an array of keys in the `hash` literal
# File lib/rubocop/ast/node/hash_node.rb, line 41 def keys each_key.to_a end
Checks whether this `hash` uses a mix of hash rocket and colon delimiters for its pairs.
@return [Boolean] whether the `hash` uses mixed delimiters
# File lib/rubocop/ast/node/hash_node.rb, line 97 def mixed_delimiters? pairs.map(&:delimiter).uniq.size > 1 end
Returns an array of all the key value pairs in the `hash` literal.
@return [Array<PairNode>] an array of `pair` nodes
# File lib/rubocop/ast/node/hash_node.rb, line 12 def pairs each_pair.to_a end
Checks whether any of the key value pairs in the `hash` literal are on the same line.
@note A multiline `pair` is considered to be on the same line if it
shares any of its lines with another `pair`
@return [Boolean] whether any `pair` nodes are on the same line
# File lib/rubocop/ast/node/hash_node.rb, line 89 def pairs_on_same_line? pairs.each_cons(2).any? { |first, second| first.same_line?(second) } end
Returns an array of all the values in the `hash` literal.
@return [Array<Node>] an array of values in the `hash` literal
# File lib/rubocop/ast/node/hash_node.rb, line 63 def values each_pair.map(&:value) end