diff options
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 |