From: shevegen@... Date: 2018-06-07T14:56:29+00:00 Subject: [ruby-core:87446] [Ruby trunk Feature#14833] Add RubyVM::AST::Node#pretty_print Issue #14833 has been updated by shevegen (Robert A. Heiler). Yay! \o/ Pretty print all the things. ---------------------------------------- Feature #14833: Add RubyVM::AST::Node#pretty_print https://bugs.ruby-lang.org/issues/14833#change-72438 * Author: pocke (Masataka Kuwabara) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- # Abstract This patch adds `RubyVM::AST::Node#pretty_print` for `pp`. # Background `RubyVM::AST::Node#inspect` does not print children, so I cannot understand structure of a ast by `p` method. For example: ``` $ ruby -e 'p RubyVM::AST.parse("if cond then foo; bar else hoge; fuga end")' # ``` It is not understandable. BTW parser gem prints children. ``` $ ruby -rparser/current -e 'p Parser::CurrentRuby.parse("if cond then foo; bar else hoge; fuga end")' s(:if, s(:send, nil, :cond), s(:begin, s(:send, nil, :foo), s(:send, nil, :bar)), s(:begin, s(:send, nil, :hoge), s(:send, nil, :fuga))) ``` # Proposal Add `RubyVM::AST::Node#pretty_print` for `pp` method and it displays children nodes. ``` $ ruby -e 'p RubyVM::AST.parse("if cond then foo; bar else hoge; fuga end")' # $ ruby -e 'pp RubyVM::AST.parse("if cond then foo; bar else hoge; fuga end")' #, #, #): >, #, #): >): >): > ``` # Implementation See `ast_node_pp.patch` from the attachment. # Note Probably this format of `pp` is not the best. We can improve the format. For example, maybe we can add braces for children node. If you have any ideas, please tell me the ideas! ---Files-------------------------------- ast_node_pp.patch (2.08 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: