Fan.Sys.Uri.Decoder.parseQuery C# (CSharp) Method

parseQuery() private method

private parseQuery ( string q ) : Map
q string
return Map
            private Map parseQuery(string q)
            {
                if (q == null) return null;
                Map map = new Map(Sys.StrType, Sys.StrType);

                try
                {
                  int start = 0, eq = 0, len = q.Length, prev = 0;
                  bool escaped = false;
                  for (int i=0; i<len; ++i)
                  {
                int ch = q[i];
                if (prev != '\\')
                {
                  if (ch == '=') eq = i;
                  if (ch != '&' && ch != ';') { prev = ch; continue; }
                }
                else
                {
                  escaped = true;
                  prev = (ch != '\\') ? ch : 0;
                  continue;
                }

                if (start < i)
                {
                  addQueryParam(map, q, start, eq, i, escaped);
                  escaped = false;
                }

                start = eq = i+1;
                  }

                  if (start < len)
                addQueryParam(map, q, start, eq, len, escaped);
                }
                catch (Exception e)
                {
                  // don't let internal error bring down whole uri
                  Err.dumpStack(e);
                }

                return map;
            }