Module: RuboCop::AST::ConstantNode
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Included In:
| |
Defined in: | lib/rubocop/ast/node/mixin/constant_node.rb |
Overview
Common functionality for nodes that deal with constants:
const
, casgn
.
Instance Attribute Summary
- #absolute? ⇒ Boolean readonly
-
#class_name?
readonly
Alias for #module_name?.
- #module_name? ⇒ Boolean (also: #class_name?) readonly
- #relative? ⇒ Boolean readonly
Instance Method Summary
-
#each_path(&block)
Yield nodes for the namespace.
- #namespace ⇒ Node?
- #short_name ⇒ Symbol
Instance Attribute Details
#absolute? ⇒ Boolean
(readonly)
#class_name? (readonly)
Alias for #module_name?.
# File 'lib/rubocop/ast/node/mixin/constant_node.rb', line 24
alias class_name? module_name?
#module_name? ⇒ Boolean
(readonly)
Also known as: #class_name?
# File 'lib/rubocop/ast/node/mixin/constant_node.rb', line 21
def module_name? short_name.match?(/[[:lower:]]/) end
#relative? ⇒ Boolean
(readonly)
# File 'lib/rubocop/ast/node/mixin/constant_node.rb', line 34
def relative? !absolute? end
Instance Method Details
#each_path(&block)
Yield nodes for the namespace
For {::Foo::Bar::BAZ} => yields:
s(:cbase), then
s(:const, :Foo), then
s(:const, s(:const, :Foo), :Bar)
# File 'lib/rubocop/ast/node/mixin/constant_node.rb', line 44
def each_path(&block) return to_enum(__method__) unless block descendants = [] last = self loop do last = last.children.first break if last.nil? descendants << last break unless last.const_type? end descendants.reverse_each(&block) self end
#namespace ⇒ Node?
# File 'lib/rubocop/ast/node/mixin/constant_node.rb', line 9
def namespace children[0] end
#short_name ⇒ Symbol
# File 'lib/rubocop/ast/node/mixin/constant_node.rb', line 14
def short_name children[1] end