diff options
| author | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-06-19 16:12:45 +0000 |
|---|---|---|
| committer | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-06-19 16:12:45 +0000 |
| commit | cbe369479e9f65e1f46ae2350e73ef935e145e93 (patch) | |
| tree | 485e53f3169d084c1f54f9a704095a4952eb0542 /lib/rss/trackback.rb | |
| parent | faf34ad5b1b8cbe7e68cf6bfe091fae80e0c4438 (diff) | |
| download | ruby-cbe369479e9f65e1f46ae2350e73ef935e145e93.tar.gz ruby-cbe369479e9f65e1f46ae2350e73ef935e145e93.tar.xz ruby-cbe369479e9f65e1f46ae2350e73ef935e145e93.zip | |
* lib/rss/rss.rb:
- cleanup validation mechanism. Now, #XXX_validation is
needless.
- changed internal variable name RSS::Element::MODEL to
RSS::Element::MODELS.
- RSS::Element.install_model requires uri.
* lib/rss/0.9.rb: followed new validation API.
* lib/rss/1.0.rb: ditto.
* lib/rss/2.0.rb: ditto.
* lib/rss/content.rb: ditto.
* lib/rss/dublincore.rb: ditto.
* lib/rss/image.rb: ditto.
* lib/rss/syndication.rb: ditto.
* lib/rss/taxonomy.rb: ditto.
* lib/rss/trackback.rb: ditto.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8@10334 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rss/trackback.rb')
| -rw-r--r-- | lib/rss/trackback.rb | 26 |
1 files changed, 7 insertions, 19 deletions
diff --git a/lib/rss/trackback.rb b/lib/rss/trackback.rb index e7983b8a6..d77238934 100644 --- a/lib/rss/trackback.rb +++ b/lib/rss/trackback.rb @@ -12,29 +12,14 @@ module RSS module TrackBackUtils private def trackback_validate(ignore_unknown_element, tags, uri) - counter = {} - %w(ping about).each do |name| - counter["#{TRACKBACK_PREFIX}_#{name}"] = 0 - end - - tags.each do |tag| - key = "#{TRACKBACK_PREFIX}_#{tag}" - if !ignore_unknown_element and !counter.has_key?(key) - raise UnknownTagError.new(tag, TRACKBACK_URI) - end - counter[key] += 1 - if tag != "about" and counter[key] > 1 - raise TooMuchTagError.new(tag, tag_name) - end - end - - if counter["#{TRACKBACK_PREFIX}_ping"].zero? and - counter["#{TRACKBACK_PREFIX}_about"].nonzero? + return if tags.nil? + if tags.find {|tag| tag == "about"} and + !tags.find {|tag| tag == "ping"} raise MissingTagError.new("#{TRACKBACK_PREFIX}:ping", tag_name) end end end - + module BaseTrackBackModel ELEMENTS = %w(ping about) @@ -45,10 +30,12 @@ module RSS unless klass.class == Module klass.module_eval {include TrackBackUtils} + klass.install_must_call_validator(TRACKBACK_PREFIX, TRACKBACK_URI) %w(ping).each do |name| var_name = "#{TRACKBACK_PREFIX}_#{name}" klass_name = "TrackBack#{Utils.to_class_name(name)}" klass.install_have_child_element(var_name) + klass.install_model(name, TRACKBACK_URI, "?") klass.module_eval(<<-EOC, __FILE__, __LINE__) remove_method :#{var_name} def #{var_name} @@ -66,6 +53,7 @@ module RSS var_name = "#{TRACKBACK_PREFIX}_#{name}" klass_name = "TrackBack#{Utils.to_class_name(name)}" klass.install_have_children_element(var_name) + klass.install_model(name, TRACKBACK_URI, "*") klass.module_eval(<<-EOC, __FILE__, __LINE__) remove_method :#{var_name} def #{var_name}(*args) |
