Class: IRB::Color::ColorizeVisitor
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
self,
Prism::Visitor
|
|
|
Instance Chain:
self,
Prism::Visitor
|
|
| Inherits: |
Prism::Visitor
|
| Defined in: | lib/irb/color.rb |
Class Attribute Summary
- .tokens readonly
Class Method Summary
- .dispatch(location, type)
- .initialize
- .visit_alias_method_node(node)
- .visit_array_node(node)
-
.visit_call_and_write_node(node)
Alias for .visit_call_operator_write_node.
- .visit_call_node(node)
- .visit_call_operator_write_node(node) (also: .visit_call_and_write_node, .visit_call_or_write_node)
-
.visit_call_or_write_node(node)
Alias for .visit_call_operator_write_node.
- .visit_def_node(node)
- .visit_interpolated_symbol_node(node)
- .visit_symbol_node(node)
- .dispatch_alias_method_name(node) private
Class Attribute Details
.tokens (readonly)
[ GitHub ]# File 'lib/irb/color.rb', line 231
attr_reader :tokens
Class Method Details
.dispatch(location, type)
[ GitHub ]# File 'lib/irb/color.rb', line 236
def dispatch(location, type) if location @tokens << [location.start_line, location.start_column, 1, location.end_line, location.end_column, type, location.slice] end end
.dispatch_alias_method_name(node) (private)
[ GitHub ]# File 'lib/irb/color.rb', line 310
def dispatch_alias_method_name(node) if node.type == :symbol_node && node.opening_loc.nil? dispatch node.value_loc, :method_name end end
.initialize
[ GitHub ]# File 'lib/irb/color.rb', line 232
def initialize @tokens = [] end
.visit_alias_method_node(node)
[ GitHub ]# File 'lib/irb/color.rb', line 255
def visit_alias_method_node(node) dispatch_alias_method_name node.new_name dispatch_alias_method_name node.old_name super end
.visit_array_node(node)
[ GitHub ].visit_call_and_write_node(node)
Alias for .visit_call_operator_write_node.
# File 'lib/irb/color.rb', line 277
alias visit_call_and_write_node visit_call_operator_write_node
.visit_call_node(node)
[ GitHub ]# File 'lib/irb/color.rb', line 261
def visit_call_node(node) if node.call_operator_loc.nil? && OPERATORS.include?(node.name) # Operators should not be colored as method call elsif (node.call_operator_loc.nil? || node.call_operator_loc.slice == "::") && /\A\p{Upper}/.match?(node.name) # Constant-like methods should not be colored as method call else dispatch node., : end super end
.visit_call_operator_write_node(node) Also known as: .visit_call_and_write_node, .visit_call_or_write_node
[ GitHub ]# File 'lib/irb/color.rb', line 273
def visit_call_operator_write_node(node) dispatch node., : super end
.visit_call_or_write_node(node)
Alias for .visit_call_operator_write_node.
# File 'lib/irb/color.rb', line 278
alias visit_call_or_write_node visit_call_operator_write_node
.visit_def_node(node)
[ GitHub ]# File 'lib/irb/color.rb', line 250
def visit_def_node(node) dispatch node.name_loc, :method_name super end
.visit_interpolated_symbol_node(node)
[ GitHub ]# File 'lib/irb/color.rb', line 280
def visit_interpolated_symbol_node(node) dispatch node.opening_loc, :symbol node.parts.each do |part| case part when Prism::StringNode dispatch part.content_loc, :symbol when Prism::EmbeddedStatementsNode dispatch part.opening_loc, :symbol dispatch part.closing_loc, :symbol when Prism::EmbeddedVariableNode dispatch part.operator_loc, :symbol end end dispatch node.closing_loc, :symbol super end
.visit_symbol_node(node)
[ GitHub ]# File 'lib/irb/color.rb', line 297
def visit_symbol_node(node) if (node.opening_loc.nil? && node.closing == ':') || node.closing&.match?(/\A['"]:\z/) # Colorize { symbol: 1 } and { 'symbol': 1 } as label dispatch node.location, :LABEL else dispatch node.opening_loc, :symbol dispatch node.value_loc, :symbol dispatch node.closing_loc, :symbol end end