From 028e6396c043119448afce67ebf8f3aafc96e27e Mon Sep 17 00:00:00 2001 From: kou Date: Tue, 20 Jun 2006 11:50:52 +0000 Subject: * lib/rss/rss.rb: hide RSS::Element.install_model. (RSS::Element.install_have_child_element, RSS::Element.install_have_children_element, RSS::Element.install_text_element, RSS::Element.install_date_element): call RSS::Element.install_model internally. * lib/rss/0.9.rb: followed new 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: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@10341 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 19 +++++++++++++ lib/rss/0.9.rb | 33 +++++++--------------- lib/rss/1.0.rb | 76 +++++++++++++------------------------------------- lib/rss/2.0.rb | 17 ++++------- lib/rss/content.rb | 4 +-- lib/rss/dublincore.rb | 4 +-- lib/rss/image.rb | 11 ++++---- lib/rss/rss.rb | 21 ++++++++++---- lib/rss/syndication.rb | 8 +++--- lib/rss/taxonomy.rb | 15 +++++----- lib/rss/trackback.rb | 7 ++--- 11 files changed, 95 insertions(+), 120 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2781d9b9ca..3e64f1129b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,22 @@ +Tue Jun 20 20:47:07 2006 Kouhei Sutou + + * lib/rss/rss.rb: hide RSS::Element.install_model. + (RSS::Element.install_have_child_element, + RSS::Element.install_have_children_element, + RSS::Element.install_text_element, + RSS::Element.install_date_element): call + RSS::Element.install_model internally. + + * lib/rss/0.9.rb: followed new 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. + Tue Jun 20 20:18:05 2006 GOTOU Yuuzou * ext/openssl/extconf.rb: add check for OBJ_NAME_do_all_sorted. diff --git a/lib/rss/0.9.rb b/lib/rss/0.9.rb index c05af201b8..24af74a4ce 100644 --- a/lib/rss/0.9.rb +++ b/lib/rss/0.9.rb @@ -19,14 +19,8 @@ module RSS include RootElementMixin include XMLStyleSheetMixin - [ - ["channel", nil], - ].each do |tag, occurs| - install_model(tag, "", occurs) - end - %w(channel).each do |name| - install_have_child_element(name) + install_have_child_element(name, "", nil) end attr_accessor :rss_version, :version, :encoding, :standalone @@ -98,8 +92,8 @@ module RSS ["managingEditor", "?", :text], ["webMaster", "?", :text], ["rating", "?", :text], - ["pubDate", "?", :date, 'rfc822'], - ["lastBuildDate", "?", :date, 'rfc822'], + ["pubDate", "?", :date, :rfc822], + ["lastBuildDate", "?", :date, :rfc822], ["docs", "?", :text], ["cloud", "?", :have_attribute], ["skipDays", "?", :have_child], @@ -108,8 +102,7 @@ module RSS ["item", "*", :have_children], ["textInput", "?", :have_child], ].each do |name, occurs, type, *args| - __send__("install_#{type}_element", name, *args) - install_model(name, "", occurs) + __send__("install_#{type}_element", name, "", occurs, name, *args) end alias date pubDate alias date= pubDate= @@ -178,8 +171,7 @@ module RSS [ ["day", "*"] ].each do |name, occurs| - install_have_children_element(name) - install_model(name, "", occurs) + install_have_children_element(name, "", occurs) end private @@ -217,8 +209,7 @@ module RSS [ ["hour", "*"] ].each do |name, occurs| - install_have_children_element(name) - install_model(name, "", occurs) + install_have_children_element(name, "", occurs) end private @@ -254,16 +245,14 @@ module RSS include RSS09 %w(url title link).each do |name| - install_text_element(name) - install_model(name, "", nil) + install_text_element(name, "", nil) end [ ["width", :integer], ["height", :integer], ["description"], ].each do |name, type| - install_text_element(name, type) - install_model(name, "", "?") + install_text_element(name, "", "?", name, type) end def initialize(*args) @@ -334,8 +323,7 @@ module RSS ["source", '?', :have_child], ["enclosure", '?', :have_child], ].each do |tag, occurs, type, *args| - __send__("install_#{type}_element", tag, *args) - install_model(tag, "", occurs) + __send__("install_#{type}_element", tag, "", occurs, tag, *args) end private @@ -485,8 +473,7 @@ module RSS include RSS09 %w(title description name link).each do |name| - install_text_element(name) - install_model(name, "", nil) + install_text_element(name, "", nil) end def initialize(*args) diff --git a/lib/rss/1.0.rb b/lib/rss/1.0.rb index bd673661e5..ff21a3430d 100644 --- a/lib/rss/1.0.rb +++ b/lib/rss/1.0.rb @@ -38,15 +38,11 @@ module RSS [ ["channel", nil], ["image", "?"], - ["item", "+"], + ["item", "+", :children], ["textinput", "?"], - ].each do |tag, occurs| - install_model(tag, ::RSS::URI, occurs) - if occurs == "+" - install_have_children_element(tag) - else - install_have_child_element(tag) - end + ].each do |tag, occurs, type| + type ||= :child + __send__("install_have_#{type}_element", tag, ::RSS::URI, occurs) end attr_accessor :rss_version, :version, :encoding, :standalone @@ -120,8 +116,7 @@ module RSS @tag_name = 'Seq' - install_have_children_element("li") - install_model("li", URI, "*") + install_have_children_element("li", URI, "*") install_must_call_validator('rdf', ::RSS::RDF::URI) def initialize(*args) @@ -171,9 +166,8 @@ module RSS @tag_name = 'Bag' - install_have_children_element("li") - install_model("li", URI, "*") - install_must_call_validator('rdf', ::RSS::RDF::URI) + install_have_children_element("li", URI, "*") + install_must_call_validator('rdf', URI) def initialize(*args) if Utils.element_initialize_arguments?(args) @@ -227,25 +221,17 @@ module RSS "#{PREFIX}:#{name}") end - %w(title link description).each do |name| - install_text_element(name) - end - - %w(image items textinput).each do |name| - install_have_child_element(name) - end - [ - ['title', nil], - ['link', nil], - ['description', nil], - ['image', '?'], - ['items', nil], - ['textinput', '?'], - ].each do |tag, occurs| - install_model(tag, ::RSS::URI, occurs) + ['title', nil, :text], + ['link', nil, :text], + ['description', nil, :text], + ['image', '?', :have_child], + ['items', nil, :have_child], + ['textinput', '?', :have_child], + ].each do |tag, occurs, type| + __send__("install_#{type}_element", tag, ::RSS::URI, occurs) end - + def initialize(*args) if Utils.element_initialize_arguments?(args) super @@ -353,8 +339,7 @@ module RSS end - install_have_child_element("Seq") - install_model("Seq", URI, nil) + install_have_child_element("Seq", URI, nil) install_must_call_validator('rdf', URI) def initialize(*args) @@ -410,15 +395,7 @@ module RSS end %w(title url link).each do |name| - install_text_element(name) - end - - [ - ['title', nil], - ['url', nil], - ['link', nil], - ].each do |tag, occurs| - install_model(tag, ::RSS::URI, occurs) + install_text_element(name, ::RSS::URI, nil) end def initialize(*args) @@ -466,16 +443,12 @@ module RSS "#{PREFIX}:#{name}") end - %w(title link description).each do |name| - install_text_element(name) - end - [ ["title", nil], ["link", nil], ["description", "?"], ].each do |tag, occurs| - install_model(tag, ::RSS::URI, occurs) + install_text_element(tag, ::RSS::URI, occurs) end def initialize(*args) @@ -527,16 +500,7 @@ module RSS end %w(title description name link).each do |name| - install_text_element(name) - end - - [ - ["title", nil], - ["description", nil], - ["name", nil], - ["link", nil], - ].each do |tag, occurs| - install_model(tag, ::RSS::URI, occurs) + install_text_element(name, ::RSS::URI, nil) end def initialize(*args) diff --git a/lib/rss/2.0.rb b/lib/rss/2.0.rb index 8d76411df6..24cfb7c6e5 100644 --- a/lib/rss/2.0.rb +++ b/lib/rss/2.0.rb @@ -10,17 +10,15 @@ module RSS ["generator"], ["ttl", :integer], ].each do |name, type| - install_text_element(name, type) - install_model(name, "", '?') + install_text_element(name, "", "?", name, type) end [ %w(category categories), ].each do |name, plural_name| - install_have_children_element(name, plural_name) - install_model(name, "", '*') + install_have_children_element(name, "", "*", name, plural_name) end - + [ ["image", "?"], ["language", "?"], @@ -57,15 +55,13 @@ module RSS ["comments", "?"], ["author", "?"], ].each do |name, occurs| - install_text_element(name) - install_model(name, "", occurs) + install_text_element(name, "", occurs) end [ ["pubDate", '?'], ].each do |name, occurs| - install_date_element(name, 'rfc822') - install_model(name, "", occurs) + install_date_element(name, "", occurs, name, 'rfc822') end alias date pubDate alias date= pubDate= @@ -73,8 +69,7 @@ module RSS [ ["guid", '?'], ].each do |name, occurs| - install_have_child_element(name) - install_model(name, "", occurs) + install_have_child_element(name, "", occurs) end private diff --git a/lib/rss/content.rb b/lib/rss/content.rb index 545aecb4df..1b13f39fcf 100644 --- a/lib/rss/content.rb +++ b/lib/rss/content.rb @@ -18,8 +18,8 @@ module RSS klass.install_must_call_validator(CONTENT_PREFIX, CONTENT_URI) %w(encoded).each do |name| - klass.install_text_element("#{CONTENT_PREFIX}_#{name}") - klass.install_model(name, CONTENT_URI, "?") + klass.install_text_element(name, CONTENT_URI, "?", + "#{CONTENT_PREFIX}_#{name}") end end end diff --git a/lib/rss/dublincore.rb b/lib/rss/dublincore.rb index 8badc8bb1e..8a4afd4dd9 100644 --- a/lib/rss/dublincore.rb +++ b/lib/rss/dublincore.rb @@ -18,8 +18,8 @@ module RSS full_plural_name = "#{DC_PREFIX}_#{plural}" klass_name = "DublinCore#{Utils.to_class_name(name)}" klass.install_must_call_validator(DC_PREFIX, DC_URI) - klass.install_model(name, DC_URI, "*") - klass.install_have_children_element(full_name, full_plural_name) + klass.install_have_children_element(name, DC_URI, "*", + full_name, full_plural_name) klass.module_eval(<<-EOC, *get_file_and_line_from_caller(0)) remove_method :#{full_name} remove_method :#{full_name}= diff --git a/lib/rss/image.rb b/lib/rss/image.rb index 624bc6aceb..3058c84a59 100644 --- a/lib/rss/image.rb +++ b/lib/rss/image.rb @@ -33,9 +33,9 @@ module RSS def self.append_features(klass) super - klass.install_have_child_element("#{IMAGE_PREFIX}_item") + klass.install_have_child_element("item", IMAGE_URI, "?", + "#{IMAGE_PREFIX}_item") klass.install_must_call_validator(IMAGE_PREFIX, IMAGE_URI) - klass.install_model("item", IMAGE_URI, "?") end class ImageItem < Element @@ -67,7 +67,8 @@ module RSS %w(width height).each do |tag| full_name = "#{IMAGE_PREFIX}_#{tag}" disp_name = "#{IMAGE_PREFIX}:#{tag}" - install_text_element(full_name, :integer, disp_name) + install_text_element(tag, IMAGE_URI, "?", + full_name, :integer, disp_name) BaseListener.install_get_text_element(IMAGE_URI, tag, "#{full_name}=") end @@ -119,9 +120,9 @@ module RSS super unless klass.class == Module - klass.install_have_child_element("#{IMAGE_PREFIX}_favicon") + klass.install_have_child_element("favicon", IMAGE_URI, "?", + "#{IMAGE_PREFIX}_favicon") klass.install_must_call_validator(IMAGE_PREFIX, IMAGE_URI) - klass.install_model("favicon", IMAGE_URI, "?") end end diff --git a/lib/rss/rss.rb b/lib/rss/rss.rb index a12a78bb0e..02cde9b36e 100644 --- a/lib/rss/rss.rb +++ b/lib/rss/rss.rb @@ -141,8 +141,10 @@ module RSS include Utils - def install_have_child_element(name) + 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) attr_accessor name install_element(name) do |n, elem_name| @@ -157,11 +159,13 @@ EOC end alias_method(:install_have_attribute_element, :install_have_child_element) - def install_have_children_element(name, plural_name=nil) + def install_have_children_element(tag_name, uri, occurs, name=nil, plural_name=nil) + name ||= tag_name plural_name ||= "#{name}s" add_have_children_element(name, plural_name) add_plural_form(name, plural_name) - + install_model(tag_name, uri, occurs) + def_children_accessor(name, plural_name) install_element(name, "s") do |n, elem_name| <<-EOC @@ -175,9 +179,12 @@ EOC end end - def install_text_element(name, type=nil, disp_name=name) + def install_text_element(tag_name, uri, occurs, name=nil, type=nil, disp_name=nil) + name ||= tag_name + disp_name ||= name self::ELEMENTS << name add_need_initialize_variable(name) + install_model(tag_name, uri, occurs) def_corresponded_attr_writer name, type, disp_name convert_attr_reader name @@ -200,9 +207,13 @@ EOC end end - def install_date_element(name, type, disp_name=name) + def install_date_element(tag_name, uri, occurs, name=nil, type=nil, disp_name=nil) + name ||= tag_name + type ||= :w3cdtf + disp_name ||= name self::ELEMENTS << name add_need_initialize_variable(name) + install_model(tag_name, uri, occurs) # accessor convert_attr_reader name diff --git a/lib/rss/syndication.rb b/lib/rss/syndication.rb index bb4a250a24..93d35c89a7 100644 --- a/lib/rss/syndication.rb +++ b/lib/rss/syndication.rb @@ -22,14 +22,14 @@ module RSS ["updatePeriod"], ["updateFrequency", :positive_integer] ].each do |name, type| - install_text_element("#{SY_PREFIX}_#{name}", type, + install_text_element(name, SY_URI, "?", + "#{SY_PREFIX}_#{name}", type, "#{SY_PREFIX}:#{name}") - install_model(name, SY_URI, "?") end %w(updateBase).each do |name| - install_date_element("#{SY_PREFIX}_#{name}", 'w3cdtf', name) - install_model(name, SY_URI, "?") + install_date_element(name, SY_URI, "?", + "#{SY_PREFIX}_#{name}", 'w3cdtf', name) end alias_method(:_sy_updatePeriod=, :sy_updatePeriod=) diff --git a/lib/rss/taxonomy.rb b/lib/rss/taxonomy.rb index e9bd38742d..b90820aac6 100644 --- a/lib/rss/taxonomy.rb +++ b/lib/rss/taxonomy.rb @@ -30,8 +30,8 @@ module RSS klass.install_must_call_validator(TAXO_PREFIX, TAXO_URI) %w(topics).each do |name| - klass.install_have_child_element("#{TAXO_PREFIX}_#{name}") - klass.install_model(name, TAXO_URI, "?") + klass.install_have_child_element(name, TAXO_URI, "?", + "#{TAXO_PREFIX}_#{name}") end end @@ -52,8 +52,7 @@ module RSS @tag_name = "topics" - install_have_child_element("Bag") - install_model("Bag", RDF::URI, nil) + install_have_child_element("Bag", RDF::URI, nil) install_must_call_validator('rdf', RDF::URI) def initialize(*args) @@ -103,7 +102,7 @@ module RSS def self.append_features(klass) super var_name = "#{TAXO_PREFIX}_topic" - klass.install_have_children_element(var_name) + klass.install_have_children_element("topic", TAXO_URI, "*", var_name) end class TaxonomyTopic < Element @@ -126,7 +125,7 @@ module RSS install_get_attribute("about", ::RSS::RDF::URI, true, nil, nil, "#{RDF::PREFIX}:about") - install_text_element("#{TAXO_PREFIX}_link") + install_text_element("link", TAXO_URI, "?", "#{TAXO_PREFIX}_link") def initialize(*args) if Utils.element_initialize_arguments?(args) @@ -147,13 +146,13 @@ module RSS private def children - [@taxo_link, @taxo_topics] + [@taxo_link, *@taxo_topics] end def _tags rv = [] rv << [TAXO_URI, "link"] unless @taxo_link.nil? - rv << [TAXO_URI, "topics"] unless @taxo_topics.nil? + rv.concat([TAXO_URI, "topics"] * @taxo_topics.size) rv end end diff --git a/lib/rss/trackback.rb b/lib/rss/trackback.rb index d77238934c..ee2491f332 100644 --- a/lib/rss/trackback.rb +++ b/lib/rss/trackback.rb @@ -34,8 +34,7 @@ module RSS %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.install_have_child_element(name, TRACKBACK_URI, "?", var_name) klass.module_eval(<<-EOC, __FILE__, __LINE__) remove_method :#{var_name} def #{var_name} @@ -52,8 +51,8 @@ module RSS [%w(about s)].each do |name, postfix| 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.install_have_children_element(name, TRACKBACK_URI, "*", + var_name) klass.module_eval(<<-EOC, __FILE__, __LINE__) remove_method :#{var_name} def #{var_name}(*args) -- cgit v1.2.3