diff options
author | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-08-05 03:03:05 +0000 |
---|---|---|
committer | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-08-05 03:03:05 +0000 |
commit | 71976790ec02f88d9fb51fab151312124f6df223 (patch) | |
tree | 0a70c0031e53d40f05e846486b25f91070274d66 /lib/rss/utils.rb | |
parent | 43009063c70fe62028eb035e67a06863b98dc540 (diff) |
* lib/rss, sample/rss, test/rss:
- 0.1.7 -> 0.1.8.
- supported <itunes:XXX>.
- reverted backward incompatibility API changes introduced 0.1.7.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12871 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rss/utils.rb')
-rw-r--r-- | lib/rss/utils.rb | 76 |
1 files changed, 74 insertions, 2 deletions
diff --git a/lib/rss/utils.rb b/lib/rss/utils.rb index 031ff3072b..0b53a19d3b 100644 --- a/lib/rss/utils.rb +++ b/lib/rss/utils.rb @@ -2,14 +2,16 @@ module RSS module Utils module_function def to_class_name(name) - name.split(/_/).collect do |part| + name.split(/[_\-]/).collect do |part| "#{part[0, 1].upcase}#{part[1..-1]}" end.join("") end def get_file_and_line_from_caller(i=0) file, line, = caller[i].split(':') - [file, line.to_i] + line = line.to_i + line += 1 if i.zero? + [file, line] end def html_escape(s) @@ -28,5 +30,75 @@ module RSS def element_initialize_arguments?(args) [true, false].include?(args[0]) and args[1].is_a?(Hash) end + + module YesCleanOther + module_function + def parse(value) + if [true, false, nil].include?(value) + value + else + case value.to_s + when /\Ayes\z/i + true + when /\Aclean\z/i + false + else + nil + end + end + end + end + + module YesOther + module_function + def parse(value) + if [true, false].include?(value) + value + else + /\Ayes\z/i.match(value.to_s) ? true : false + end + end + end + + module CSV + module_function + def parse(value) + if value.is_a?(String) + value.strip.split(/\s*,\s*/) + else + value + end + end + end + + module InheritedReader + def inherited_reader(constant_name) + base_class = inherited_base + result = base_class.const_get(constant_name) + found_base_class = false + ancestors.reverse_each do |klass| + if found_base_class + if klass.const_defined?(constant_name) + result = yield(result, klass.const_get(constant_name)) + end + else + found_base_class = klass == base_class + end + end + result + end + + def inherited_array_reader(constant_name) + inherited_reader(constant_name) do |result, current| + current + result + end + end + + def inherited_hash_reader(constant_name) + inherited_reader(constant_name) do |result, current| + result.merge(current) + end + end + end end end |