Guest User

Untitled

a guest
Feb 20th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 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
  44.  
  45. require 'micro/test'
  46.  
  47. {
  48. :description => 'simple',
  49. :simple => '<p />'
  50. }.test do |t|
  51. template = Template.new
  52. template.instance_eval(t)
  53. end
Add Comment
Please, Sign In to add comment