Extended maintenance of Ruby versions 1.8.7 and 1.9.2 ended on July 31, 2014. Read more
This array contains name of all ripper events.
This array contains name of parser events.
This array contains name of scanner events.
Tokenizes Ruby program and returns an Array of Array, which is formatted like [[lineno, column], type, token].
require 'ripper' require 'pp' p Ripper.lex("def m(a) nil end") #=> [[[1, 0], :on_kw, "def"], [[1, 3], :on_sp, " " ], [[1, 4], :on_ident, "m" ], [[1, 5], :on_lparen, "(" ], [[1, 6], :on_ident, "a" ], [[1, 7], :on_rparen, ")" ], [[1, 8], :on_sp, " " ], [[1, 9], :on_kw, "nil"], [[1, 12], :on_sp, " " ], [[1, 13], :on_kw, "end"]]
# File ripper/lib/ripper/lexer.rb, line 38 def Ripper.lex(src, filename = '-', lineno = 1) Lexer.new(src, filename, lineno).lex end
Parses Ruby program read from src. src must be a String or a IO or a object which has gets method.
# File ripper/lib/ripper/core.rb, line 17 def Ripper.parse(src, filename = '(ripper)', lineno = 1) new(src, filename, lineno).parse end
Parses src
and create S-exp tree. This method is for mainly
developper use.
require 'ripper' require 'pp pp Ripper.sexp("def m(a) nil end") #=> [:program, [:stmts_add, [:stmts_new], [:def, [:@ident, "m", [1, 4]], [:paren, [:params, [[:@ident, "a", [1, 6]]], nil, nil, nil]], [:bodystmt, [:stmts_add, [:stmts_new], [:var_ref, [:@kw, "nil", [1, 9]]]], nil, nil, nil]]]]
# File ripper/lib/ripper/sexp.rb, line 35 def Ripper.sexp(src, filename = '-', lineno = 1) SexpBuilderPP.new(src, filename, lineno).parse end
# File ripper/lib/ripper/sexp.rb, line 39 def Ripper.sexp_raw(src, filename = '-', lineno = 1) SexpBuilder.new(src, filename, lineno).parse end
Parses src
and return a string which was matched to
pattern
. pattern
should be described as Regexp.
require 'ripper' p Ripper.slice('def m(a) nil end', 'ident') #=> "m" p Ripper.slice('def m(a) nil end', '[ident lparen rparen]+') #=> "m(a)" p Ripper.slice("<<EOS\nstring\nEOS", 'heredoc_beg nl $(tstring_content*) heredoc_end', 1) #=> "string\n"
# File ripper/lib/ripper/lexer.rb, line 80 def Ripper.slice(src, pattern, n = 0) if m = token_match(src, pattern) then m.string(n) else nil end end