diff options
| author | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-09-15 04:41:28 +0000 |
|---|---|---|
| committer | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-09-15 04:41:28 +0000 |
| commit | 50de0d6a1d308c0586bd67070703af41b33f80ac (patch) | |
| tree | a95638b481c27eedfb67197660b22667466d5831 /lib/rss/maker | |
| parent | 9bc67b6314bb47bc55330d4d634013053147ea52 (diff) | |
* lib/rss.rb, lib/rss/, test/rss/:
- 0.1.9 -> 0.2.0.
- supported Slash module.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@13446 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rss/maker')
| -rw-r--r-- | lib/rss/maker/base.rb | 14 | ||||
| -rw-r--r-- | lib/rss/maker/itunes.rb | 8 | ||||
| -rw-r--r-- | lib/rss/maker/slash.rb | 33 |
3 files changed, 48 insertions, 7 deletions
diff --git a/lib/rss/maker/base.rb b/lib/rss/maker/base.rb index 752b2fa58..fdb8946ef 100644 --- a/lib/rss/maker/base.rb +++ b/lib/rss/maker/base.rb @@ -151,6 +151,20 @@ module RSS end EOC end + + def def_csv_element(name, type=nil) + def_other_element_without_accessor(name) + attr_reader(name) + converter = "" + if type == :integer + converter = "{|v| Integer(v)}" + end + module_eval(<<-EOC, __FILE__, __LINE__ + 1) + def #{name}=(value) + @#{name} = Utils::CSV.parse(value)#{converter} + end + EOC + end end attr_reader :maker diff --git a/lib/rss/maker/itunes.rb b/lib/rss/maker/itunes.rb index 86f41e2fd..f02db2882 100644 --- a/lib/rss/maker/itunes.rb +++ b/lib/rss/maker/itunes.rb @@ -52,13 +52,7 @@ module RSS end def def_csv_accessor(klass, full_name) - klass.def_other_element_without_accessor(full_name) - klass.module_eval(<<-EOC, __FILE__, __LINE__ + 1) - attr_reader :#{full_name} - def #{full_name}=(value) - @#{full_name} = Utils::CSV.parse(value) - end - EOC + klass.def_csv_element(full_name) end def def_elements_class_accessor(klass, full_name, full_plural_name, diff --git a/lib/rss/maker/slash.rb b/lib/rss/maker/slash.rb new file mode 100644 index 000000000..27adef383 --- /dev/null +++ b/lib/rss/maker/slash.rb @@ -0,0 +1,33 @@ +require 'rss/slash' +require 'rss/maker/1.0' + +module RSS + module Maker + module SlashModel + def self.append_features(klass) + super + + ::RSS::SlashModel::ELEMENT_INFOS.each do |name, type| + full_name = "#{RSS::SLASH_PREFIX}_#{name}" + case type + when :csv_integer + klass.def_csv_element(full_name, :integer) + else + klass.def_other_element(full_name) + end + end + + klass.module_eval do + alias_method(:slash_hit_parades, :slash_hit_parade) + alias_method(:slash_hit_parades=, :slash_hit_parade=) + end + end + end + + class ItemsBase + class ItemBase + include SlashModel + end + end + end +end |
