def unencode(encoded, data, without_escape=false, &proc)
return nil if encoded==nil
proc = @unencode_proc unless proc
encoded.gsub(/#{Regexp.escape(@params[:delimiter])}([demu])(\d+)#{Regexp.escape(@params[:delimiter])}/) do
i = $2.to_i
t, s =
case $1
when "d"
[:dmath, data.dsrc_list[i]]
when "e"
[:escape, data.esrc_list[i]]
when "m"
[:math, data.msrc_list[i]]
when "u"
[:user, data.usrc_list[i]]
end
s = escapeXML(s, true) unless without_escape
if proc
proc.call(s, :type=>t, :index=>i) || s
else
s
end
end
end