diff options
| author | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-11-03 06:43:18 +0000 |
|---|---|---|
| committer | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-11-03 06:43:18 +0000 |
| commit | c550134293e9110d856469436347c917f5ebee11 (patch) | |
| tree | 450b783d2d0ee2af19ba3efb8324e73a5e0fc1d5 /lib/rss/maker/base.rb | |
| parent | 49d964cc488900ec20b886ac3c898592d492c1aa (diff) | |
| download | ruby-c550134293e9110d856469436347c917f5ebee11.tar.gz ruby-c550134293e9110d856469436347c917f5ebee11.tar.xz ruby-c550134293e9110d856469436347c917f5ebee11.zip | |
* test/rss/*.rb: removed tab width configuration headers.
* test/rss/test_maker_{0.9,1.0}.rb: sort -> do_sort.
* lib/rss/maker/*.rb: changed API to RSS version independence.
* lib/rss/maker/base.rb
(RSS::Maker::XMLStyleSheets::XMLStyleSheet): checked required
(pseudo) attributes.
* lib/rss/maker/base.rb (RSS::Maker::Items): sort -> do_sort.
* lib/rss/rss.rb (RSS::BaseModel.install_date_element): avoided warning.
* lib/rss/0.9.rb (RSS::Rss#textinput): added convenience method.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@7182 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rss/maker/base.rb')
| -rw-r--r-- | lib/rss/maker/base.rb | 61 |
1 files changed, 46 insertions, 15 deletions
diff --git a/lib/rss/maker/base.rb b/lib/rss/maker/base.rb index eb61f37ee..21222351f 100644 --- a/lib/rss/maker/base.rb +++ b/lib/rss/maker/base.rb @@ -16,26 +16,34 @@ module RSS NEED_INITIALIZE_VARIABLES = [] def self.inherited(subclass) - subclass.const_set("OTHER_ELEMENTS", - OTHER_ELEMENTS.dup) - subclass.const_set("NEED_INITIALIZE_VARIABLES", - NEED_INITIALIZE_VARIABLES.dup) + subclass.const_set("OTHER_ELEMENTS", []) + subclass.const_set("NEED_INITIALIZE_VARIABLES", []) + + subclass.module_eval(<<-EOEOC, __FILE__, __LINE__) + def self.other_elements + const_get("OTHER_ELEMENTS") + super + end + + def self.need_initialize_variables + const_get("NEED_INITIALIZE_VARIABLES") + super + end + EOEOC end def self.add_other_element(variable_name) const_get("OTHER_ELEMENTS") << variable_name end - + def self.other_elements - const_get("OTHER_ELEMENTS") + OTHER_ELEMENTS end def self.add_need_initialize_variable(variable_name) const_get("NEED_INITIALIZE_VARIABLES") << variable_name end - + def self.need_initialize_variables - const_get("NEED_INITIALIZE_VARIABLES") + NEED_INITIALIZE_VARIABLES end EOC end @@ -84,10 +92,10 @@ module RSS end end - + class RSSBase include Base - + class << self def make(&block) new.make(&block) @@ -151,10 +159,12 @@ module RSS class XMLStyleSheets include Base + include Enumerable extend Forwardable def_delegators(:@xml_stylesheets, :<<, :[], :[]=, :first, :last) def_delegators(:@xml_stylesheets, :push, :pop, :shift, :unshift) + def_delegators(:@xml_stylesheets, :each) def initialize(maker) super @@ -183,11 +193,24 @@ module RSS def to_rss(rss) xss = ::RSS::XMLStyleSheet.new + guess_type_if_need(xss) set = setup_values(xss) if set rss.xml_stylesheets << xss end end + + def have_required_values? + @href and @type + end + + private + def guess_type_if_need(xss) + if @type.nil? + xss.href = @href + @type = xss.type + end + end end end @@ -204,6 +227,9 @@ module RSS add_need_initialize_variable(element) end + alias_method(:pubDate, :date) + alias_method(:pubDate=, :date=) + def initialize(maker) super @cloud = make_cloud @@ -253,17 +279,19 @@ module RSS class ItemsBase include Base + include Enumerable extend Forwardable def_delegators(:@items, :<<, :[], :[]=, :first, :last) def_delegators(:@items, :push, :pop, :shift, :unshift) + def_delegators(:@items, :each) - attr_accessor :sort + attr_accessor :do_sort def initialize(maker) super @items = [] - @sort = false + @do_sort = false end def normalize @@ -282,11 +310,11 @@ module RSS private def sort_if_need - if @sort.respond_to?(:call) + if @do_sort.respond_to?(:call) @items.sort do |x, y| - @sort.call(x, y) + @do_sort.call(x, y) end - elsif @sort + elsif @do_sort @items.sort do |x, y| y <=> x end @@ -318,6 +346,9 @@ EOC add_need_initialize_variable(element) end + alias_method(:pubDate, :date) + alias_method(:pubDate=, :date=) + def initialize(maker) super @guid = make_guid |
