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