diff options
author | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-06-20 12:06:52 +0000 |
---|---|---|
committer | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-06-20 12:06:52 +0000 |
commit | df1e494a136dc507b36e90edbaffdeb611ab8923 (patch) | |
tree | 4e93ad2100a27a46c2261e17916981aa0afec34d /lib/rss/rss.rb | |
parent | 028e6396c043119448afce67ebf8f3aafc96e27e (diff) |
* lib/rss/rss.rb: provided default RSS::Element#_tags.
* lib/rss/0.9.rb: used default RSS::Element#_tags.
* lib/rss/1.0.rb: ditto.
* lib/rss/2.0.rb: ditto.
* lib/rss/image.rb: ditto.
* lib/rss/taxonomy.rb: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@10342 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rss/rss.rb')
-rw-r--r-- | lib/rss/rss.rb | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/lib/rss/rss.rb b/lib/rss/rss.rb index 02cde9b36e..2b7a3111fa 100644 --- a/lib/rss/rss.rb +++ b/lib/rss/rss.rb @@ -144,7 +144,7 @@ module RSS def install_have_child_element(tag_name, uri, occurs, name=nil) name ||= tag_name add_need_initialize_variable(name) - install_model(tag_name, uri, occurs) + install_model(tag_name, uri, occurs, name) attr_accessor name install_element(name) do |n, elem_name| @@ -164,7 +164,7 @@ EOC plural_name ||= "#{name}s" add_have_children_element(name, plural_name) add_plural_form(name, plural_name) - install_model(tag_name, uri, occurs) + install_model(tag_name, uri, occurs, plural_name) def_children_accessor(name, plural_name) install_element(name, "s") do |n, elem_name| @@ -184,7 +184,7 @@ EOC disp_name ||= name self::ELEMENTS << name add_need_initialize_variable(name) - install_model(tag_name, uri, occurs) + install_model(tag_name, uri, occurs, name) def_corresponded_attr_writer name, type, disp_name convert_attr_reader name @@ -213,7 +213,7 @@ EOC disp_name ||= name self::ELEMENTS << name add_need_initialize_variable(name) - install_model(tag_name, uri, occurs) + install_model(tag_name, uri, occurs, name) # accessor convert_attr_reader name @@ -477,11 +477,12 @@ EOC MUST_CALL_VALIDATORS[uri] = prefix end - def self.install_model(tag, uri, occurs=nil) - if m = MODELS.find {|t, u, o| t == tag and u == uri} + def self.install_model(tag, uri, occurs=nil, getter=nil) + getter ||= tag + if m = MODELS.find {|t, u, o, g| t == tag and u == uri} m[2] = occurs else - MODELS << [tag, uri, occurs] + MODELS << [tag, uri, occurs, getter] end end @@ -776,7 +777,17 @@ EOC # default #validate() argument. def _tags - [] + rv = [] + self.class.models.each do |name, uri, occurs, getter| + value = __send__(getter) + next if value.nil? + if value.is_a?(Array) + rv.concat([[uri, name]] * value.size) + else + rv << [uri, name] + end + end + rv end def _attrs @@ -824,7 +835,7 @@ EOC end models.each_with_index do |model, i| - name, model_uri, occurs = model + name, model_uri, occurs, getter = model if DEBUG p "before" |