# File lib/math_ml/util.rb, line 257
                def decode_partial(type, encoded, data, &proc)
                        return nil if encoded==nil
                        head =
                                case type
                                when :math
                                        "m"
                                when :dmath
                                        "d"
                                when :escape
                                        "e"
                                when :user
                                        "u"
                                else
                                        return
                                end
                        encoded.gsub(/#{Regexp.escape(@params[:delimiter])}#{head}(\d+)#{Regexp.escape(@params[:delimiter])}/) do
                                i = $1.to_i
                                t, d, s =
                                        case head
                                        when "d"
                                                [:dmath, data.dmath_list[i], data.dsrc_list[i]]
                                        when "e"
                                                [:escape, data.escape_list[i], data.esrc_list[i]]
                                        when "m"
                                                [:math, data.math_list[i], data.msrc_list[i]]
                                        when "u"
                                                [:user, data.user_list[i], data.usrc_list[i]]
                                        end
                                if proc
                                        proc.call(d, :type=>t, :index=>i, :src=>s) || "#{@params[:delimiter]}#{head}#{i}#{@params[:delimiter]}"
                                else
                                        d
                                end
                        end
                end