class PDF::Reader::Parser
def string
###############################################################################
def string str = @buffer.token return "" if str == ")" Error.assert_equal(parse_token, ")") ret = "" idx = 0 while idx < str.size chr = str[idx,1] jump = 1 if chr == "\\" jump = 2 case str[idx+1, 1] when "" then jump = 1 when "n" then chr = "\n" when "r" then chr = "\r" when "t" then chr = "\t" when "b" then chr = "\b" when "f" then chr = "\f" when "(" then chr = "(" when ")" then chr = ")" when "\\" then chr = "\\" when "\n" then chr = "" jump = 2 else if str[idx+1,3].match(/\d{3}/) jump = 4 chr = str[idx+1,3].oct.chr elsif str[idx+1,2].match(/\d{2}/) jump = 3 chr = ("0"+str[idx+1,2]).oct.chr elsif str[idx+1,1].match(/\d/) jump = 2 chr = ("00"+str[idx+1,1]).oct.chr else jump = 1 chr = "" end end elsif chr == "\r" && str[idx+1,1] == "\n" chr = "\n" jump = 2 elsif chr == "\n" && str[idx+1,1] == "\r" chr = "\n" jump = 2 elsif chr == "\r" chr = "\n" end ret << chr idx += jump end ret end