1require 'rss/1.0' 2 3module RSS 4 SLASH_PREFIX = 'slash' 5 SLASH_URI = "http://purl.org/rss/1.0/modules/slash/" 6 7 RDF.install_ns(SLASH_PREFIX, SLASH_URI) 8 9 module SlashModel 10 extend BaseModel 11 12 ELEMENT_INFOS = \ 13 [ 14 ["section"], 15 ["department"], 16 ["comments", :positive_integer], 17 ["hit_parade", :csv_integer], 18 ] 19 20 class << self 21 def append_features(klass) 22 super 23 24 return if klass.instance_of?(Module) 25 klass.install_must_call_validator(SLASH_PREFIX, SLASH_URI) 26 ELEMENT_INFOS.each do |name, type, *additional_infos| 27 full_name = "#{SLASH_PREFIX}_#{name}" 28 klass.install_text_element(full_name, SLASH_URI, "?", 29 full_name, type, name) 30 end 31 32 klass.module_eval do 33 alias_method(:slash_hit_parades, :slash_hit_parade) 34 undef_method(:slash_hit_parade) 35 alias_method(:slash_hit_parade, :slash_hit_parade_content) 36 end 37 end 38 end 39 end 40 41 class RDF 42 class Item; include SlashModel; end 43 end 44 45 SlashModel::ELEMENT_INFOS.each do |name, type| 46 accessor_base = "#{SLASH_PREFIX}_#{name}" 47 BaseListener.install_get_text_element(SLASH_URI, name, accessor_base) 48 end 49end 50