Guest User

Untitled

a guest
Feb 20th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.01 KB | None | 0 0
  1. class BlankSlate
  2. instance_methods.each { |m| undef_method m unless m =~ /^__/ or m =~ /send/ }
  3. end
  4.  
  5. class Remold < BlankSlate
  6. REMOLD_CACHE = ''
  7. def method_missing meth, *args, &block
  8. __remold__handle meth, *args, &block
  9. end
  10.  
  11. def p *args, &block
  12. __remold__handle :p, *args, &block
  13. end
  14.  
  15. def __remold_handle meth, *args, &block
  16. Kernel.p [:method_missing, meth, args]
  17. __build_tag__(meth, *args, &block)
  18. end
  19.  
  20. # build a tag for `name`, using `args` and an optional block that
  21. # will be yielded
  22. def __build_tag__(name, args=nil, &block)
  23. Kernel.p [:build_tag, name, args]
  24. out = "<#{name}"
  25. if block_given?
  26. out << ( args ? args.inject(''){ |s,v| s+%{ #{v[0]}="#{v[1]}"} } : '' )
  27. out << ">#{yield}</#{name}>"
  28. else
  29. out << args.inject(''){ |s,v| s+%{ #{v[0]}="#{v[1]}"} } if args
  30. out << ' />'
  31. end
  32. REMOLD_CACHE << out
  33. end
  34. end
  35.  
  36. class Template < Remold
  37. def simple
  38. p
  39. end
  40. end
  41.  
  42. template = Template.new
  43. template.simple
Add Comment
Please, Sign In to add comment