Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'ripper'
- class Array
- def prepend(x)
- [x] + self
- end
- end
- def libs(code)
- Ripper.lex(code).
- map {|pos, event, value| [event, value] }.
- select {|event, value| event == :on_const or event == :on_op && value == '::' }.
- map {|event, value| value }.
- prepend(nil).
- each_cons(2).inject([]) {|memo, (before, e)| before == '::' || e == '::' ? memo : memo << e }
- end
- code = <<EOF
- Nokogiri::HTML('<b>hello Twitter</b>')
- p Time.now
- EOF
- p libs code
- #=> ["Nokogiri", "Time"]
Add Comment
Please, Sign In to add comment