Exemple #1
0
 public static bool Contains(this linkFeatures f, linkFeatures t)
 {
     return(f.HasFlag(t));
 }
Exemple #2
0
        protected void _processUrl(string __url, linkProcessFlags __flags = linkProcessFlags.standard)
        {
            if (string.IsNullOrEmpty(__url))
            {
                url = "";
                return;
            }

            MatchCollection mchs = _domain_pattern.Matches(__url);

            // if (__flags == null) __flags = linkProcessFlags.getDefaultFlags();

            url         = __url;
            originalUrl = __url;


            Match mch;

            shema = urlShema.unknown;

            if (mchs.Count > 0)
            {
                mch = mchs[0];
                foreach (Group _gr in mch.Groups)
                {
                    string vl = _gr.Value;
                    if (shema == urlShema.unknown)
                    {
                        if (_test_letters.IsMatch(vl))
                        {
                            var __shema = urlShema.unknown;

                            if (Enum.TryParse(vl, true, out __shema))
                            {
                                shema = __shema;
                                continue;
                            }
                        }
                    }

                    if (string.IsNullOrEmpty(domain))
                    {
                        if (_test_lettersAndDot.IsMatch(vl))
                        {
                            domain = vl;
                            continue;
                        }
                    }
                }
            }
            else
            {
                shema  = urlShema.none;
                domain = "";
            }

            if (shema == urlShema.unknown)
            {
                shema = urlShema.none;
            }
            else
            {
                __url = __url.removeStartsWith(shema.ToString() + @"://");
            }

            if (!string.IsNullOrEmpty(domain))
            {
                __url = __url.removeStartsWith(domain);
                __url = __url.EnsureStartsWith("/");
            }

            string __query = "";

            if (__flags.Contains(linkProcessFlags.mailtoAsParam))
            {
                __url = __url.Replace(_mailto_name + ":", "?" + _mailto_name + "=");
            }


            query = "";
            if (_select_queryPairs.IsMatch(__url))
            {
                foreach (Match _mch in _select_queryPairs.Matches(__url))
                {
                    query += _mch.Value;
                }
            }


            queryPairs = new linkQueryPairs(query, __flags);

            if (_select_allBeforeQuery.IsMatch(__url))
            {
                mchs = _select_allBeforeQuery.Matches(__url);

                foreach (Match _mch in mchs)
                {
                    Group _gr = _mch.Groups.imbFirstSafe() as Group;
                    if (_gr != null)
                    {
                        path = _gr.Value;
                        break;
                    }
                }
            }

            path = path.Replace("?", "");
            path = path.Replace("#", "");

            if (!string.IsNullOrEmpty(path))
            {
                if (_select_pathFolders.IsMatch(__url))
                {
                    foreach (Match _mch in _select_pathFolders.Matches(path)) // do ovde prolazi
                    {
                        Group _gr = _mch.Groups.imbFirstSafe() as Group;
                        if (_gr != null)
                        {
                            pathFolders = _gr.Value;
                            break;
                        }
                    }
                }

                if (_select_pathFilename.IsMatch(__url))
                {
                    foreach (Match _mch in _select_pathFilename.Matches(path))
                    {
                        Group _gr = _mch.Groups.imbFirstSafe() as Group;
                        if (_gr != null)
                        {
                            pathFilename = _gr.Value;
                            break;
                        }
                    }
                }
            }

            if (!string.IsNullOrEmpty(pathFilename))
            {
                if (indexFilenames.Contains(pathFilename))
                {
                    isDefaultFilepath = true;
                }
            }
            else
            {
                isDefaultFilepath = true;
            }

            if (isDefaultFilepath && string.IsNullOrEmpty(query))
            {
                if (path == "" || path == "/")
                {
                    isDefaultHomePage = true;
                }
            }

            // mchs = _prequery_pattern.Matches(__url);

            //if (mchs.Count > 0)
            //{
            //    mch = mchs[0];
            //    path = mch.Groups[0].Value;

            //    __query = __url.removeStartsWith(path);

            //    query = __query;


            //} else
            //{
            //    path = __url;
            //}

            if (_select_anchor.IsMatch(url))
            {
                var anchor_match = _select_anchor.Match(url);
                anchor = anchor_match.Value;
            }

            pathDirectoryPath = path.removeEndsWith(pathFilename).Trim('/');

            pathAndQuery = path.add(query, "?").add(anchor, "#");

            // detektovanje osobina
            int c = 0;

            if (queryPairs.ContainsKey(_mailto_name))
            {
                features |= linkFeatures.mailToLink;
                c++;
            }
            if (queryPairs.ContainsKey(_anchor_name))
            {
                features |= linkFeatures.hasSharpArchor;
                c++;
            }

            // da li ima ostale parametre
            if (queryPairs.Count > c)
            {
                features |= linkFeatures.hasParams;
            }
        }