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