ÿØÿà JFIF    ÿÛ „  ( %!1!%)+//.383,7(-.+  -%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ     ÿÄ J    ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ   ÿÄ *  !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú "SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5 ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e ríV ?> ......................................... ............................................................................. ÿØÿà JFIF    ÿÛ „  ( %!1!%)+//.383,7(-.+  -%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ     ÿÄ J    ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ   ÿÄ *  !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú "SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5 ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e ríV ?> ......................................... ............................................................................. ???????????????????????????????????? ???????????????????????????????????? ÿØÿà JFIF    ÿÛ „  ( %!1!%)+//.383,7(-.+  -%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ     ÿÄ J    ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ   ÿÄ *  !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú "SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5 ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e ríV ?> ......................................... ............................................................................. ÿØÿà JFIF    ÿÛ „  ( %!1!%)+//.383,7(-.+  -%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ     ÿÄ J    ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ   ÿÄ *  !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú "SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5 ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e ríV ?> ......................................... ............................................................................. ???????????????????????????????????? ???????????????????????????????????? U:RDoc::NormalClass[iI"Dispatcher:ETI"Prism::Dispatcher;TI" Visitor;To:RDoc::Markup::Document: @parts[o;;[ o:RDoc::Markup::Paragraph;[I"The dispatcher class fires events for nodes that are found while walking an AST to all registered listeners. It's useful for performing different types of analysis on the AST while only having to walk the tree once.;To; ;[I"vTo use the dispatcher, you would first instantiate it and register listeners for the events you're interested in:;To: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:;To; ;[I"-result = Prism.parse("001 + 002 + 003") ;TI"'dispatcher.dispatch(result.value) ;T; 0o; ;[I"1Optionally, you can also use #dispatch_once to dispatch enter and leave events for a single node without recursing further down the tree. This can be useful in circumstances where you want to reuse the listeners you already have registers but want to stop walking the tree at a certain point.;To; ;[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@4[:protected[[: private[[I" instance;T[[;[[I"dispatch_once;T@4[I" register;T@4[I"register_public_methods;T@4[I"%visit_alias_global_variable_node;T@4[I"visit_alias_method_node;T@4[I"#visit_alternation_pattern_node;T@4[I"visit_and_node;T@4[I"visit_arguments_node;T@4[I"visit_array_node;T@4[I"visit_array_pattern_node;T@4[I"visit_assoc_node;T@4[I"visit_assoc_splat_node;T@4[I"#visit_back_reference_read_node;T@4[I"visit_begin_node;T@4[I"visit_block_argument_node;T@4[I"$visit_block_local_variable_node;T@4[I"visit_block_node;T@4[I"visit_block_parameter_node;T@4[I" visit_block_parameters_node;T@4[I"visit_break_node;T@4[I"visit_call_and_write_node;T@4[I"visit_call_node;T@4[I"#visit_call_operator_write_node;T@4[I"visit_call_or_write_node;T@4[I"visit_call_target_node;T@4[I"visit_capture_pattern_node;T@4[I"visit_case_match_node;T@4[I"visit_case_node;T@4[I"visit_class_node;T@4[I"(visit_class_variable_and_write_node;T@4[I"-visit_class_variable_operator_write_node;T@4[I"'visit_class_variable_or_write_node;T@4[I"#visit_class_variable_read_node;T@4[I"%visit_class_variable_target_node;T@4[I"$visit_class_variable_write_node;T@4[I""visit_constant_and_write_node;T@4[I"'visit_constant_operator_write_node;T@4[I"!visit_constant_or_write_node;T@4[I"'visit_constant_path_and_write_node;T@4[I"visit_constant_path_node;T@4[I",visit_constant_path_operator_write_node;T@4[I"&visit_constant_path_or_write_node;T@4[I"$visit_constant_path_target_node;T@4[I"#visit_constant_path_write_node;T@4[I"visit_constant_read_node;T@4[I"visit_constant_target_node;T@4[I"visit_constant_write_node;T@4[I"visit_def_node;T@4[I"visit_defined_node;T@4[I"visit_else_node;T@4[I"#visit_embedded_statements_node;T@4[I"!visit_embedded_variable_node;T@4[I"visit_ensure_node;T@4[I"visit_false_node;T@4[I"visit_find_pattern_node;T@4[I"visit_flip_flop_node;T@4[I"visit_float_node;T@4[I"visit_for_node;T@4[I"$visit_forwarding_arguments_node;T@4[I"$visit_forwarding_parameter_node;T@4[I" visit_forwarding_super_node;T@4[I")visit_global_variable_and_write_node;T@4[I".visit_global_variable_operator_write_node;T@4[I"(visit_global_variable_or_write_node;T@4[I"$visit_global_variable_read_node;T@4[I"&visit_global_variable_target_node;T@4[I"%visit_global_variable_write_node;T@4[I"visit_hash_node;T@4[I"visit_hash_pattern_node;T@4[I"visit_if_node;T@4[I"visit_imaginary_node;T@4[I"visit_implicit_node;T@4[I"visit_implicit_rest_node;T@4[I"visit_in_node;T@4[I"visit_index_and_write_node;T@4[I"$visit_index_operator_write_node;T@4[I"visit_index_or_write_node;T@4[I"visit_index_target_node;T@4[I"+visit_instance_variable_and_write_node;T@4[I"0visit_instance_variable_operator_write_node;T@4[I"*visit_instance_variable_or_write_node;T@4[I"&visit_instance_variable_read_node;T@4[I"(visit_instance_variable_target_node;T@4[I"'visit_instance_variable_write_node;T@4[I"visit_integer_node;T@4[I",visit_interpolated_match_last_line_node;T@4[I"/visit_interpolated_regular_expression_node;T@4[I"#visit_interpolated_string_node;T@4[I"#visit_interpolated_symbol_node;T@4[I"%visit_interpolated_x_string_node;T@4[I"&visit_it_local_variable_read_node;T@4[I"visit_it_parameters_node;T@4[I"visit_keyword_hash_node;T@4[I"&visit_keyword_rest_parameter_node;T@4[I"visit_lambda_node;T@4[I"(visit_local_variable_and_write_node;T@4[I"-visit_local_variable_operator_write_node;T@4[I"'visit_local_variable_or_write_node;T@4[I"#visit_local_variable_read_node;T@4[I"%visit_local_variable_target_node;T@4[I"$visit_local_variable_write_node;T@4[I"visit_match_last_line_node;T@4[I"visit_match_predicate_node;T@4[I"visit_match_required_node;T@4[I"visit_match_write_node;T@4[I"visit_missing_node;T@4[I"visit_module_node;T@4[I"visit_multi_target_node;T@4[I"visit_multi_write_node;T@4[I"visit_next_node;T@4[I"visit_nil_node;T@4[I"%visit_no_keywords_parameter_node;T@4[I"#visit_numbered_parameters_node;T@4[I"'visit_numbered_reference_read_node;T@4[I"*visit_optional_keyword_parameter_node;T@4[I""visit_optional_parameter_node;T@4[I"visit_or_node;T@4[I"visit_parameters_node;T@4[I"visit_parentheses_node;T@4[I"!visit_pinned_expression_node;T@4[I"visit_pinned_variable_node;T@4[I"visit_post_execution_node;T@4[I"visit_pre_execution_node;T@4[I"visit_program_node;T@4[I"visit_range_node;T@4[I"visit_rational_node;T@4[I"visit_redo_node;T@4[I""visit_regular_expression_node;T@4[I"*visit_required_keyword_parameter_node;T@4[I""visit_required_parameter_node;T@4[I"visit_rescue_modifier_node;T@4[I"visit_rescue_node;T@4[I"visit_rest_parameter_node;T@4[I"visit_retry_node;T@4[I"visit_return_node;T@4[I"visit_self_node;T@4[I""visit_shareable_constant_node;T@4[I"visit_singleton_class_node;T@4[I"visit_source_encoding_node;T@4[I"visit_source_file_node;T@4[I"visit_source_line_node;T@4[I"visit_splat_node;T@4[I"visit_statements_node;T@4[I"visit_string_node;T@4[I"visit_super_node;T@4[I"visit_symbol_node;T@4[I"visit_true_node;T@4[I"visit_undef_node;T@4[I"visit_unless_node;T@4[I"visit_until_node;T@4[I"visit_when_node;T@4[I"visit_while_node;T@4[I"visit_x_string_node;T@4[I"visit_yield_node;T@4[;[[;[[I"register_events;T@4[[U:RDoc::Context::Section[i0o;;[; 0; 0[@/I" Prism;TcRDoc::NormalModule