class Rison::Dumper

Public Class Methods

dump(object) click to toggle source
# File lib/rison/dumper.rb, line 4
def dump(object)
  case object
  when TrueClass
    "!t"
  when FalseClass
    "!f"
  when NilClass
    "!n"
  when Numeric
    object.to_s.gsub('+', '')
  when Hash
    "(#{object.map { |k, v| dump(k) + ':' + dump(v) }.join(',')})"
  when ::Array
    "!(#{object.map { |e| dump(e) }.join(',')})"
  else
    escape(object.to_s)
  end
end

Private Class Methods

escape(str) click to toggle source
# File lib/rison/dumper.rb, line 25
def escape(str)
  id?(str) ? str : "'#{str.gsub('!', '!!').gsub("'", "!'")}'"
end
id?(str) click to toggle source
# File lib/rison/dumper.rb, line 29
def id?(str)
  str.match?(/^[^\-0-9 '!:\(\),\*@¥\$][^ '!:\(\),\*@¥\$]*$/)
end