/tools/Ruby/lib/ruby/1.8/rss/utils.rb

http://github.com/agross/netopenspace · Ruby · 111 lines · 106 code · 3 blank · 2 comment · 1 complexity · 2e65d8682b420b19d463cb6561fb0cc0 MD5 · raw file

  1. module RSS
  2. module Utils
  3. module_function
  4. # Convert a name_with_underscores to CamelCase.
  5. def to_class_name(name)
  6. name.split(/[_\-]/).collect do |part|
  7. "#{part[0, 1].upcase}#{part[1..-1]}"
  8. end.join("")
  9. end
  10. def get_file_and_line_from_caller(i=0)
  11. file, line, = caller[i].split(':')
  12. line = line.to_i
  13. line += 1 if i.zero?
  14. [file, line]
  15. end
  16. # escape '&', '"', '<' and '>' for use in HTML.
  17. def html_escape(s)
  18. s.to_s.gsub(/&/, "&amp;").gsub(/\"/, "&quot;").gsub(/>/, "&gt;").gsub(/</, "&lt;")
  19. end
  20. alias h html_escape
  21. # If +value+ is an instance of class +klass+, return it, else
  22. # create a new instance of +klass+ with value +value+.
  23. def new_with_value_if_need(klass, value)
  24. if value.is_a?(klass)
  25. value
  26. else
  27. klass.new(value)
  28. end
  29. end
  30. def element_initialize_arguments?(args)
  31. [true, false].include?(args[0]) and args[1].is_a?(Hash)
  32. end
  33. module YesCleanOther
  34. module_function
  35. def parse(value)
  36. if [true, false, nil].include?(value)
  37. value
  38. else
  39. case value.to_s
  40. when /\Ayes\z/i
  41. true
  42. when /\Aclean\z/i
  43. false
  44. else
  45. nil
  46. end
  47. end
  48. end
  49. end
  50. module YesOther
  51. module_function
  52. def parse(value)
  53. if [true, false].include?(value)
  54. value
  55. else
  56. /\Ayes\z/i.match(value.to_s) ? true : false
  57. end
  58. end
  59. end
  60. module CSV
  61. module_function
  62. def parse(value, &block)
  63. if value.is_a?(String)
  64. value = value.strip.split(/\s*,\s*/)
  65. value = value.collect(&block) if block_given?
  66. value
  67. else
  68. value
  69. end
  70. end
  71. end
  72. module InheritedReader
  73. def inherited_reader(constant_name)
  74. base_class = inherited_base
  75. result = base_class.const_get(constant_name)
  76. found_base_class = false
  77. ancestors.reverse_each do |klass|
  78. if found_base_class
  79. if klass.const_defined?(constant_name)
  80. result = yield(result, klass.const_get(constant_name))
  81. end
  82. else
  83. found_base_class = klass == base_class
  84. end
  85. end
  86. result
  87. end
  88. def inherited_array_reader(constant_name)
  89. inherited_reader(constant_name) do |result, current|
  90. current + result
  91. end
  92. end
  93. def inherited_hash_reader(constant_name)
  94. inherited_reader(constant_name) do |result, current|
  95. result.merge(current)
  96. end
  97. end
  98. end
  99. end
  100. end