class PHPSession::Decoder::State::VarType
Public Class Methods
parse(decoder)
click to toggle source
# File lib/php_session/decoder.rb, line 135 def self.parse(decoder) case decoder.buffer when /\As:(\d+):(.*)\Z/m # string decoder.buffer = $2 decoder.stack.push($1.to_i) decoder.state = String when /\Ai:(-?\d+);(.*)\Z/m #int decoder.buffer = $2 decoder.process_value($1.to_i) when /\Ad:(-?\d+(?:\.\d+)?);(.*)\Z/m # double decoder.buffer = $2 decoder.process_value($1.to_f) when /\Aa:(\d+):(.*)\Z/m # array decoder.buffer = $2 decoder.start_array($1.to_i) decoder.state = ArrayStart when /\A(N);(.*)\Z/m # null decoder.buffer = $2 decoder.process_value(nil) when /\Ab:([01]);(.*)\Z/m # boolean decoder.buffer = $2 bool = case $1 when "0" then false when "1" then true end decoder.process_value(bool) when /\AO:(\d+):(.*)\Z/m # object decoder.buffer = $2 decoder.stack.push($1.to_i); decoder.state = ClassName when /\A[Rr]:(\d+);(.*)\Z/m # reference count? decoder.buffer = $2 decoder.process_value($1) else raise Errors::ParseError, "invalid session format" end end