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