mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* lib/rss: backoported from HEAD.
* lib/rss: refactored. - gave a name to 'x'. - undef_method -> remove_method for avoiding a warning in ruby 1.6. * lib/rss/parser.rb: @@setter -> @@setters. * lib/rss/parser.rb (RSS::BaseListener.register_uri) (RSS::BaseListener.uri_registered?) (RSS::BaseListener.install_get_text_element): swapped the first argument and the second argument. * lib/rss/taxonomy.rb: swapped the first argument and the second argument for RSS::BaseListener.install_get_text_element. * lib/rss/image.rb: ditto. * lib/rss/syndication.rb: ditto. * lib/rss/dublincore.rb: ditto. * lib/rss/parser.rb: ditto. * lib/rss/1.0.rb: ditto. * lib/rss/2.0.rb: ditto. * lib/rss/0.9.rb: ditto. * lib/rss/content.rb: ditto. * lib/rss/parser.rb (RSS::BaseListener.install_setter) (RSS::BaseListener.register_uri): changed fallback way. * lib/rss/parser.rb: added class name registry for complex model elements. (ex. have childlen elements, have some attributes and a child element and so on.) * lib/rss/dublincore.rb: supported multiple Dublin Core items. * lib/rss/maker/dublincore.rb: ditto. * lib/rss/maker/image.rb: supproted new Dublin Core API. * lib/rss/maker/base.rb: added default current_element implementation. * lib/rss/trackback.rb (RSS::TrackBackUtils.new_with_value_if_need): moved to RSS::Utils. * lib/rss/utils.rb (RSS::Utils.new_with_value_if_need): moved from RSS::TrackBackUtils. * lib/rss/maker/image.rb: fixed invalid argument of add_need_initialize_variable bug. * lib/rss/maker/trackback.rb: ditto. * lib/rss/rss.rb (Hash#merge): added for ruby 1.6. * lib/rss/rss.rb (RSS::BaseModel.date_writer): changed to accept nil for date value. * test/test_dublincore.rb: added tests for plural accessor and multiple Dublin Core items. * test/test_setup_maker_1.0.rb: fixed swapped actual and expected values. * test/rss/rss-assertions.rb (assert_multiple_dublin_core): added an assertion for testing multiple Dublin Core items. * test/rss/test_maker_dc.rb (test_rss10_multiple): added a test for making multiple Dublin Core items. * test/rss/test_maker_dc.rb (test_date): added a test for #date= and #dc_date=. * sample/rss/tdiary_plugin/rss-recent.rb: new option: @options['rss-recent.use-image-link']: use image as link instread of text if available. * sample/rss/tdiary_plugin/rss-recent.rb (RSS_RECENT_VERSION): 0.0.5 -> 0.0.6. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@8284 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
16cb9d65ed
commit
80861909e6
22 changed files with 752 additions and 261 deletions
|
@ -51,6 +51,14 @@ module Enumerable
|
|||
end
|
||||
end
|
||||
|
||||
class Hash
|
||||
unless instance_methods.include?("merge")
|
||||
def merge(other)
|
||||
dup.update(other)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
require "English"
|
||||
require "rss/utils"
|
||||
require "rss/converter"
|
||||
|
@ -222,38 +230,7 @@ EOC
|
|||
|
||||
# accessor
|
||||
convert_attr_reader name
|
||||
module_eval(<<-EOC, *get_file_and_line_from_caller(2))
|
||||
def #{name}=(new_value)
|
||||
if new_value.kind_of?(Time)
|
||||
@#{name} = new_value
|
||||
else
|
||||
if @do_validate
|
||||
begin
|
||||
@#{name} = Time.send('#{type}', new_value)
|
||||
rescue ArgumentError
|
||||
raise NotAvailableValueError.new('#{disp_name}', new_value)
|
||||
end
|
||||
else
|
||||
@#{name} = nil
|
||||
if /\\A\\s*\\z/ !~ new_value.to_s
|
||||
begin
|
||||
@#{name} = Time.parse(new_value)
|
||||
rescue ArgumentError
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Is it need?
|
||||
if @#{name}
|
||||
class << @#{name}
|
||||
undef_method(:to_s)
|
||||
alias_method(:to_s, :#{type})
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
EOC
|
||||
date_writer(name, type, disp_name)
|
||||
|
||||
install_element(name) do |n, elem_name|
|
||||
<<-EOC
|
||||
|
@ -301,6 +278,41 @@ EOC
|
|||
end
|
||||
end
|
||||
|
||||
def date_writer(name, type, disp_name=name)
|
||||
module_eval(<<-EOC, *get_file_and_line_from_caller(2))
|
||||
def #{name}=(new_value)
|
||||
if new_value.nil? or new_value.kind_of?(Time)
|
||||
@#{name} = new_value
|
||||
else
|
||||
if @do_validate
|
||||
begin
|
||||
@#{name} = Time.send('#{type}', new_value)
|
||||
rescue ArgumentError
|
||||
raise NotAvailableValueError.new('#{disp_name}', new_value)
|
||||
end
|
||||
else
|
||||
@#{name} = nil
|
||||
if /\\A\\s*\\z/ !~ new_value.to_s
|
||||
begin
|
||||
@#{name} = Time.parse(new_value)
|
||||
rescue ArgumentError
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Is it need?
|
||||
if @#{name}
|
||||
class << @#{name}
|
||||
undef_method(:to_s)
|
||||
alias_method(:to_s, :#{type})
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
EOC
|
||||
end
|
||||
|
||||
def def_children_accessor(accessor_name, plural_name)
|
||||
module_eval(<<-EOC, *get_file_and_line_from_caller(2))
|
||||
def #{plural_name}
|
||||
|
@ -660,8 +672,9 @@ EOC
|
|||
klass = next_element.class
|
||||
prefix = ""
|
||||
prefix << "#{klass.required_prefix}_" if klass.required_prefix
|
||||
if self.class.plural_forms.has_key?(tag_name)
|
||||
ary = __send__("#{prefix}#{self.class.plural_forms[tag_name]}")
|
||||
key = "#{prefix}#{tag_name}"
|
||||
if self.class.plural_forms.has_key?(key)
|
||||
ary = __send__("#{self.class.plural_forms[key]}")
|
||||
ary << next_element
|
||||
else
|
||||
__send__("#{prefix}#{tag_name}=", next_element)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue