From d1e63172c6ecf2606ff9a947d917117eb6923436 Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 18 Sep 2017 00:08:19 +0000 Subject: parse.y: ripper_lex_state_name * parse.y (ripper_lex_state_name): represent lex_state as OR-ed form. * ext/ripper/lib/ripper/lexer.rb (Ripper::Lexer::Elem#to_a): lex_state for inspection. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59949 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/ripper/lib/ripper/lexer.rb | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'ext/ripper') diff --git a/ext/ripper/lib/ripper/lexer.rb b/ext/ripper/lib/ripper/lexer.rb index 4e82a1275c..c682c1836f 100644 --- a/ext/ripper/lib/ripper/lexer.rb +++ b/ext/ripper/lib/ripper/lexer.rb @@ -47,6 +47,33 @@ class Ripper class Lexer < ::Ripper #:nodoc: internal use only Elem = Struct.new(:pos, :event, :tok, :state) + class Elem + class List < ::Array + def inspect + [pos, event, tok, Ripper.lex_state_name(state)].inspect + end + + def pretty_print(q) # :nodoc: + q.group(1, '[', ']') { + q.pp pos + q.comma_breakable + q.pp event + q.comma_breakable + q.pp tok + q.comma_breakable + q.text(Ripper.lex_state_name(state)) + } + end + + def pretty_print_cycle(q) # :nodoc: + q.text('[...]') + end + end + + def to_a + List[*values] + end + end def tokenize parse().sort_by(&:pos).map(&:tok) -- cgit v1.2.3