Method: Origami::Object.typeof

Defined in:
lib/origami/object.rb

.typeof(stream) ⇒ Object

:nodoc:



595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
# File 'lib/origami/object.rb', line 595

def typeof(stream) #:nodoc:
    scanner = Parser.init_scanner(stream)
    scanner.skip(REGEXP_WHITESPACES)

    case scanner.peek(1)
    when '/' then return Name
    when '<'
        return (scanner.peek(2) == '<<') ? Stream : HexaString
    when '(' then return LiteralString
    when '[' then return Origami::Array
    when 'n' then
        return Null if scanner.peek(4) == 'null'
    when 't' then
        return Boolean if scanner.peek(4) == 'true'
    when 'f' then
        return Boolean if scanner.peek(5) == 'false'
    else
        if scanner.check(Reference::REGEXP_TOKEN) then return Reference
        elsif scanner.check(Real::REGEXP_TOKEN) then return Real
        elsif scanner.check(Integer::REGEXP_TOKEN) then return Integer
        else
            nil
        end
    end

    nil
end