diff options
author | (no author) <(no author)@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-05-01 16:09:55 +0000 |
---|---|---|
committer | (no author) <(no author)@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-05-01 16:09:55 +0000 |
commit | 84035542b7176081506dc06f90eb15e7f5b8fd00 (patch) | |
tree | 5f4e27703ff8e79e7b5e05afeda3d9643098075d /lib/rss/dublincore.rb | |
parent | f1c3638777c89f9b085ba0aa3863e3f5691154e3 (diff) |
This commit was manufactured by cvs2svn to create branch 'ruby_1_8'.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@6238 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rss/dublincore.rb')
-rw-r--r-- | lib/rss/dublincore.rb | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/lib/rss/dublincore.rb b/lib/rss/dublincore.rb new file mode 100644 index 0000000000..dcf8e46c65 --- /dev/null +++ b/lib/rss/dublincore.rb @@ -0,0 +1,62 @@ +require "rss/1.0" + +module RSS + + DC_PREFIX = 'dc' + DC_URI = "http://purl.org/dc/elements/1.1/" + + RDF.install_ns(DC_PREFIX, DC_URI) + + module DublinCoreModel + + extend BaseModel + + ELEMENTS = [] + + def self.included(mod) + mod.module_eval(<<-EOC) + %w(title description creator subject publisher + contributor type format identifier source + language relation coverage rights).each do |x| + install_text_element("\#{DC_PREFIX}_\#{x}") + end + + %w(date).each do |x| + install_date_element("\#{DC_PREFIX}_\#{x}", 'w3cdtf', x) + end + EOC + end + + def dc_validate(tags) + counter = {} + ELEMENTS.each do |x| + counter[x] = 0 + end + + tags.each do |tag| + key = "#{DC_PREFIX}_#{tag}" + raise UnknownTagError.new(tag, DC_URI) unless counter.has_key?(key) + counter[key] += 1 + raise TooMuchTagError.new(tag, tag_name) if counter[key] > 1 + end + end + + end + + # For backward compatibility + DublincoreModel = DublinCoreModel + + class RDF + class Channel; include DublinCoreModel; end + class Image; include DublinCoreModel; end + class Item; include DublinCoreModel; end + class Textinput; include DublinCoreModel; end + end + + prefix_size = DC_PREFIX.size + 1 + DublinCoreModel::ELEMENTS.uniq! + DublinCoreModel::ELEMENTS.each do |x| + BaseListener.install_get_text_element(x[prefix_size..-1], DC_URI, "#{x}=") + end + +end |