D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
self
/
root
/
opt
/
alt
/
ruby34
/
share
/
ri
/
system
/
Prism
/
Dispatcher
/
Filename :
cdesc-Dispatcher.ri
back
Copy
U:RDoc::NormalClass[iI"Dispatcher:ETI"Prism::Dispatcher;TI"Visitor;To:RDoc::Markup::Document:@parts[o;;[o:RDoc::Markup::Paragraph;[I"QThe dispatcher class fires events for nodes that are found while walking an ;TI"QAST to all registered listeners. It's useful for performing different types ;TI"Dof analysis on the AST while only having to walk the tree once.;To:RDoc::Markup::BlankLine o; ;[I"RTo use the dispatcher, you would first instantiate it and register listeners ;TI")for the events you're interested in:;T@o:RDoc::Markup::Verbatim;[I"class OctalListener ;TI"' def on_integer_node_enter(node) ;TI"9 if node.octal? && !node.slice.start_with?("0o") ;TI"G warn("Octal integers should be written with the 0o prefix") ;TI" end ;TI" end ;TI" end ;TI" ;TI""listener = OctalListener.new ;TI"(dispatcher = Prism::Dispatcher.new ;TI";dispatcher.register(listener, :on_integer_node_enter) ;T:@format0o; ;[I"QThen, you can walk any number of trees and dispatch events to the listeners:;T@o;;[I"-result = Prism.parse("001 + 002 + 003") ;TI"'dispatcher.dispatch(result.value) ;T;0o; ;[ I"OOptionally, you can also use `#dispatch_once` to dispatch enter and leave ;TI"Pevents for a single node without recursing further down the tree. This can ;TI"Rbe useful in circumstances where you want to reuse the listeners you already ;TI"Ihave registers but want to stop walking the tree at a certain point.;T@o;;[I"Dinteger = result.value.statements.body.first.receiver.receiver ;TI"&dispatcher.dispatch_once(integer);T;0: @fileI"lib/prism/dispatcher.rb;T:0@omit_headings_from_table_of_contents_below0; 0;0[[ I"listeners;TI"R;T:publicFI"lib/prism/dispatcher.rb;T[ [ [[I" class;T[[;[[I"new;T@;[:protected[ [:private[ [I" instance;T[[;[�[I"dispatch_once;T@;[I" register;T@;[I"%visit_alias_global_variable_node;T@;[I"visit_alias_method_node;T@;[I"#visit_alternation_pattern_node;T@;[I"visit_and_node;T@;[I"visit_arguments_node;T@;[I"visit_array_node;T@;[I"visit_array_pattern_node;T@;[I"visit_assoc_node;T@;[I"visit_assoc_splat_node;T@;[I"#visit_back_reference_read_node;T@;[I"visit_begin_node;T@;[I"visit_block_argument_node;T@;[I"$visit_block_local_variable_node;T@;[I"visit_block_node;T@;[I"visit_block_parameter_node;T@;[I" visit_block_parameters_node;T@;[I"visit_break_node;T@;[I"visit_call_and_write_node;T@;[I"visit_call_node;T@;[I"#visit_call_operator_write_node;T@;[I"visit_call_or_write_node;T@;[I"visit_call_target_node;T@;[I"visit_capture_pattern_node;T@;[I"visit_case_match_node;T@;[I"visit_case_node;T@;[I"visit_class_node;T@;[I"(visit_class_variable_and_write_node;T@;[I"-visit_class_variable_operator_write_node;T@;[I"'visit_class_variable_or_write_node;T@;[I"#visit_class_variable_read_node;T@;[I"%visit_class_variable_target_node;T@;[I"$visit_class_variable_write_node;T@;[I""visit_constant_and_write_node;T@;[I"'visit_constant_operator_write_node;T@;[I"!visit_constant_or_write_node;T@;[I"'visit_constant_path_and_write_node;T@;[I"visit_constant_path_node;T@;[I",visit_constant_path_operator_write_node;T@;[I"&visit_constant_path_or_write_node;T@;[I"$visit_constant_path_target_node;T@;[I"#visit_constant_path_write_node;T@;[I"visit_constant_read_node;T@;[I"visit_constant_target_node;T@;[I"visit_constant_write_node;T@;[I"visit_def_node;T@;[I"visit_defined_node;T@;[I"visit_else_node;T@;[I"#visit_embedded_statements_node;T@;[I"!visit_embedded_variable_node;T@;[I"visit_ensure_node;T@;[I"visit_false_node;T@;[I"visit_find_pattern_node;T@;[I"visit_flip_flop_node;T@;[I"visit_float_node;T@;[I"visit_for_node;T@;[I"$visit_forwarding_arguments_node;T@;[I"$visit_forwarding_parameter_node;T@;[I" visit_forwarding_super_node;T@;[I")visit_global_variable_and_write_node;T@;[I".visit_global_variable_operator_write_node;T@;[I"(visit_global_variable_or_write_node;T@;[I"$visit_global_variable_read_node;T@;[I"&visit_global_variable_target_node;T@;[I"%visit_global_variable_write_node;T@;[I"visit_hash_node;T@;[I"visit_hash_pattern_node;T@;[I"visit_if_node;T@;[I"visit_imaginary_node;T@;[I"visit_implicit_node;T@;[I"visit_implicit_rest_node;T@;[I"visit_in_node;T@;[I"visit_index_and_write_node;T@;[I"$visit_index_operator_write_node;T@;[I"visit_index_or_write_node;T@;[I"visit_index_target_node;T@;[I"+visit_instance_variable_and_write_node;T@;[I"0visit_instance_variable_operator_write_node;T@;[I"*visit_instance_variable_or_write_node;T@;[I"&visit_instance_variable_read_node;T@;[I"(visit_instance_variable_target_node;T@;[I"'visit_instance_variable_write_node;T@;[I"visit_integer_node;T@;[I",visit_interpolated_match_last_line_node;T@;[I"/visit_interpolated_regular_expression_node;T@;[I"#visit_interpolated_string_node;T@;[I"#visit_interpolated_symbol_node;T@;[I"%visit_interpolated_x_string_node;T@;[I"&visit_it_local_variable_read_node;T@;[I"visit_it_parameters_node;T@;[I"visit_keyword_hash_node;T@;[I"&visit_keyword_rest_parameter_node;T@;[I"visit_lambda_node;T@;[I"(visit_local_variable_and_write_node;T@;[I"-visit_local_variable_operator_write_node;T@;[I"'visit_local_variable_or_write_node;T@;[I"#visit_local_variable_read_node;T@;[I"%visit_local_variable_target_node;T@;[I"$visit_local_variable_write_node;T@;[I"visit_match_last_line_node;T@;[I"visit_match_predicate_node;T@;[I"visit_match_required_node;T@;[I"visit_match_write_node;T@;[I"visit_missing_node;T@;[I"visit_module_node;T@;[I"visit_multi_target_node;T@;[I"visit_multi_write_node;T@;[I"visit_next_node;T@;[I"visit_nil_node;T@;[I"%visit_no_keywords_parameter_node;T@;[I"#visit_numbered_parameters_node;T@;[I"'visit_numbered_reference_read_node;T@;[I"*visit_optional_keyword_parameter_node;T@;[I""visit_optional_parameter_node;T@;[I"visit_or_node;T@;[I"visit_parameters_node;T@;[I"visit_parentheses_node;T@;[I"!visit_pinned_expression_node;T@;[I"visit_pinned_variable_node;T@;[I"visit_post_execution_node;T@;[I"visit_pre_execution_node;T@;[I"visit_program_node;T@;[I"visit_range_node;T@;[I"visit_rational_node;T@;[I"visit_redo_node;T@;[I""visit_regular_expression_node;T@;[I"*visit_required_keyword_parameter_node;T@;[I""visit_required_parameter_node;T@;[I"visit_rescue_modifier_node;T@;[I"visit_rescue_node;T@;[I"visit_rest_parameter_node;T@;[I"visit_retry_node;T@;[I"visit_return_node;T@;[I"visit_self_node;T@;[I""visit_shareable_constant_node;T@;[I"visit_singleton_class_node;T@;[I"visit_source_encoding_node;T@;[I"visit_source_file_node;T@;[I"visit_source_line_node;T@;[I"visit_splat_node;T@;[I"visit_statements_node;T@;[I"visit_string_node;T@;[I"visit_super_node;T@;[I"visit_symbol_node;T@;[I"visit_true_node;T@;[I"visit_undef_node;T@;[I"visit_unless_node;T@;[I"visit_until_node;T@;[I"visit_when_node;T@;[I"visit_while_node;T@;[I"visit_x_string_node;T@;[I"visit_yield_node;T@;[;[ [;[ [ [U:RDoc::Context::Section[i 0o;;[ ; 0;0[@6I" Prism;TcRDoc::NormalModule