summaryrefslogtreecommitdiff
path: root/lib/rss/content.rb
blob: 3bb82f987c490ccc8ba36a89c2c75fe1e0c88151 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
require "rss/1.0"

module RSS

	CONTENT_PREFIX = 'content'
	CONTENT_URI = "http://purl.org/rss/1.0/modules/content/"

	RDF.install_ns(CONTENT_PREFIX, CONTENT_URI)

	module ContentModel

		extend BaseModel

		ELEMENTS = []

		%w(encoded).each do |x|
			install_text_element("#{CONTENT_PREFIX}_#{x}")
    end

		def content_validate(tags)
			counter = {}
			ELEMENTS.each do |x|
				counter[x] = 0
			end

			tags.each do |tag|
				key = "#{CONTENT_PREFIX}_#{tag}"
				raise UnknownTagError.new(tag, CONTENT_URI) unless counter.has_key?(key)
				counter[key] += 1
				raise TooMuchTagError.new(tag, tag_name) if counter[key] > 1
			end
		end

	end

	class RDF
		class Item; include ContentModel; end
	end

	prefix_size = CONTENT_PREFIX.size + 1
	ContentModel::ELEMENTS.each do |x|
		BaseListener.install_get_text_element(x[prefix_size..-1], CONTENT_URI, "#{x}=")
	end

end