class PHPSession::Encoder

Attributes

encoding[R]
encoding_option[R]

Public Class Methods

encode(hash, encoding = nil, encoding_option = {}) click to toggle source
# File lib/php_session/encoder.rb, line 4
def self.encode(hash, encoding = nil, encoding_option = {})
  encoding = Encoding.default_external if encoding.nil?
  self.new(encoding, encoding_option).encode(hash)
end
new(encoding, encoding_option) click to toggle source
# File lib/php_session/encoder.rb, line 9
def initialize(encoding, encoding_option)
  @encoding = encoding
  @encoding_option = encoding_option
end

Public Instance Methods

encode(hash) click to toggle source
# File lib/php_session/encoder.rb, line 14
def encode(hash)
  serialized = hash.map do|k,v|
    "#{k.to_s}|#{serialize(v)}"
  end
  serialized.join
end
serialize(value) click to toggle source
# File lib/php_session/encoder.rb, line 21
def serialize(value)
  get_serializer(value.class).serialize(value)
end

Private Instance Methods

get_serializer(klass) click to toggle source
# File lib/php_session/encoder.rb, line 27
def get_serializer(klass)
  case
  when klass <= String || klass <= Symbol
    StringSerializer.new(self)
  when klass <= Integer
    IntegerSerializer.new(self)
  when klass <= Float
    FloatSerializer.new(self)
  when klass <= NilClass
    NilSerializer.new(self)
  when klass <= TrueClass || klass <= FalseClass
    BooleanSerializer.new(self)
  when klass <= Hash
    HashSerializer.new(self)
  when klass <= Array
    ArraySerializer.new(self)
  when klass <= Struct
    StructSerializer.new(self)
  else
    raise Errors::EncodeError, "unsupported class:#{klass.to_s} is passed."
  end
end