summaryrefslogtreecommitdiff
path: root/lib/rss/maker
diff options
context:
space:
mode:
authorkou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-09-15 04:41:28 +0000
committerkou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-09-15 04:41:28 +0000
commit1b56bcce22a069eba6afb7e36f654783e5b4fbbc (patch)
treea95638b481c27eedfb67197660b22667466d5831 /lib/rss/maker
parentb528261ad821d84b6a392d9497cea6f199cba307 (diff)
* lib/rss.rb, lib/rss/, test/rss/:
- 0.1.9 -> 0.2.0. - supported Slash module. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13446 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rss/maker')
-rw-r--r--lib/rss/maker/base.rb14
-rw-r--r--lib/rss/maker/itunes.rb8
-rw-r--r--lib/rss/maker/slash.rb33
3 files changed, 48 insertions, 7 deletions
diff --git a/lib/rss/maker/base.rb b/lib/rss/maker/base.rb
index 752b2fa58f..fdb8946efc 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 86f41e2fd7..f02db28824 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 0000000000..27adef3832
--- /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