/tools/Ruby/lib/ruby/1.8/rss/maker/trackback.rb

http://github.com/agross/netopenspace · Ruby · 61 lines · 52 code · 9 blank · 0 comment · 1 complexity · 1c7616c0face3428dc50e7941b46f8de MD5 · raw file

  1. require 'rss/trackback'
  2. require 'rss/maker/1.0'
  3. require 'rss/maker/2.0'
  4. module RSS
  5. module Maker
  6. module TrackBackModel
  7. def self.append_features(klass)
  8. super
  9. klass.def_other_element("#{RSS::TRACKBACK_PREFIX}_ping")
  10. klass.def_classed_elements("#{RSS::TRACKBACK_PREFIX}_about", "value",
  11. "TrackBackAbouts")
  12. end
  13. class TrackBackAboutsBase < Base
  14. def_array_element("about", nil, "TrackBackAbout")
  15. class TrackBackAboutBase < Base
  16. attr_accessor :value
  17. add_need_initialize_variable("value")
  18. alias_method(:resource, :value)
  19. alias_method(:resource=, :value=)
  20. alias_method(:content, :value)
  21. alias_method(:content=, :value=)
  22. def have_required_values?
  23. @value
  24. end
  25. def to_feed(feed, current)
  26. if current.respond_to?(:trackback_abouts) and have_required_values?
  27. about = current.class::TrackBackAbout.new
  28. setup_values(about)
  29. setup_other_elements(about)
  30. current.trackback_abouts << about
  31. end
  32. end
  33. end
  34. end
  35. end
  36. class ItemsBase
  37. class ItemBase; include TrackBackModel; end
  38. end
  39. makers.each do |maker|
  40. maker.module_eval(<<-EOC, __FILE__, __LINE__ + 1)
  41. class Items
  42. class Item
  43. class TrackBackAbouts < TrackBackAboutsBase
  44. class TrackBackAbout < TrackBackAboutBase
  45. end
  46. end
  47. end
  48. end
  49. EOC
  50. end
  51. end
  52. end