Guest User

Untitled

a guest
Jun 20th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.49 KB | None | 0 0
  1. require 'ripper'
  2. class Array
  3. def prepend(x)
  4. [x] + self
  5. end
  6. end
  7.  
  8. def libs(code)
  9. Ripper.lex(code).
  10. map {|pos, event, value| [event, value] }.
  11. select {|event, value| event == :on_const or event == :on_op && value == '::' }.
  12. map {|event, value| value }.
  13. prepend(nil).
  14. each_cons(2).inject([]) {|memo, (before, e)| before == '::' || e == '::' ? memo : memo << e }
  15. end
  16.  
  17. code = <<EOF
  18. Nokogiri::HTML('<b>hello Twitter</b>')
  19. p Time.now
  20. EOF
  21.  
  22. p libs code
  23. #=> ["Nokogiri", "Time"]
Add Comment
Please, Sign In to add comment