public static bool Contains(this linkFeatures f, linkFeatures t) { return(f.HasFlag(t)); }
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; } }