# File lib/cfpropertylist/rbPlainCFPropertyList.rb, line 46
    def read_dict
      skip_whitespaces
      hsh = {}

      while not @doc.scan(/\}/)
        key = import_plain
        raise CFFormatError.new("invalid dictionary format") if !key

        if key.is_a?(CFString)
          key = key.value
        elsif key.is_a?(CFInteger) or key.is_a?(CFReal)
          key = key.value.to_s
        else
          raise CFFormatError.new("invalid key format")
        end

        skip_whitespaces

        raise CFFormatError.new("invalid dictionary format") unless @doc.scan(/=/)

        skip_whitespaces
        val = import_plain

        skip_whitespaces
        raise CFFormatError.new("invalid dictionary format") unless @doc.scan(/;/)
        skip_whitespaces

        hsh[key] = val
        raise CFFormatError.new("invalid dictionary format") if @doc.eos?
      end

      CFDictionary.new(hsh)
    end