/lib/wwmd/class_extensions/extensions_encoding.rb

http://github.com/miketracy/wwmd · Ruby · 79 lines · 56 code · 13 blank · 10 comment · 3 complexity · db2c3c68fcd6a53941eb9741ca3ed223 MD5 · raw file

  1. require 'wwmd/class_extensions/mixins_string_encoding'
  2. class String
  3. include WWMD::Encoding
  4. @@he = HTMLEntities.new
  5. # base 64 decode
  6. def b64d
  7. self.unpack("m").first
  8. end
  9. # base 64 encode
  10. def b64e
  11. [self].pack("m").gsub("\n","")
  12. end
  13. # URI.escape using defaults or passed regexp
  14. def escape(reg=nil,unicodify=false)
  15. if reg.nil?
  16. ret = URI.escape(self)
  17. elsif reg.kind_of?(Symbol)
  18. case reg
  19. when :none; return self
  20. when :default; ret = URI.escape(self)
  21. else; ret = URI.escape(self,WWMD::ESCAPE[reg])
  22. end
  23. else
  24. ret = URI.escape(self,reg)
  25. end
  26. if unicodify
  27. ret.gsub!(/%/,"%u00")
  28. end
  29. return ret
  30. end
  31. # URI.escape
  32. def escape_url(reg=WWMD::ESCAPE[:url])#:nodoc:
  33. self.escape(reg)
  34. end
  35. def escape_xss(reg=WWMD::ESCAPE[:xss])#:nodoc:
  36. self.escape(reg)
  37. end
  38. def escape_default(reg=WWMD::ESCAPE[:default])
  39. self.escape(reg)
  40. end
  41. # URI.escape all characters in string
  42. def escape_all#:nodoc:
  43. self.escape(/.*/)
  44. end
  45. # URI.unescape
  46. def unescape
  47. URI.unescape(self)
  48. end
  49. # html entity encode string
  50. # sym = :basic :named :decimal :hexadecimal
  51. def eencode(sym=nil)
  52. sym = :named if sym.nil?
  53. @@he.encode(self,sym)
  54. end
  55. # decode html entities in string
  56. def edecode
  57. return @@he.decode(self)
  58. end
  59. # quoted printable
  60. def to_qp
  61. [self].pack("M")
  62. end
  63. def from_qp
  64. self.unpack("M").first
  65. end
  66. end