private void SetWebsiteUrl(TagsCollectionBase tags, PointOfInterestExtended pointOfInterest) { var regexp = new Regex("((https?://)|^)([a-z]+).wikipedia.org/wiki/(.*)"); var match = regexp.Match(pointOfInterest.Url ?? string.Empty); if (match.Success) { tags.Add(FeatureAttributes.WIKIPEDIA, match.Groups[3].Value + ":" + WebUtility.UrlDecode(match.Groups[4].Value.Replace("_", " "))); } else { tags.Add(FeatureAttributes.WEBSITE, pointOfInterest.Url); } }
private void SetWebsiteUrl(TagsCollectionBase tags, PointOfInterestExtended pointOfInterest) { var regexp = new Regex("((https?://)|^)([a-z]+).wikipedia.org/wiki/(.*)"); var nonWikipediaUrls = new List <string>(); foreach (var url in pointOfInterest.References.Select(r => r.Url)) { var match = regexp.Match(url ?? string.Empty); if (!match.Success) { nonWikipediaUrls.Add(url); continue; } var language = match.Groups[3].Value; var pageTitle = Uri.UnescapeDataString(match.Groups[4].Value.Replace("_", " ")); var key = FeatureAttributes.WIKIPEDIA + ":" + language; tags.AddOrReplace(key, pageTitle); key = FeatureAttributes.WIKIPEDIA; pageTitle = language + ":" + pageTitle; if (tags.ContainsKey(key) == false) { tags.Add(key, pageTitle); } } SetMultipleValuesForTag(tags, FeatureAttributes.WEBSITE, nonWikipediaUrls.ToArray()); }
/// <summary> /// Adds or appends the tag value to the value collection. /// </summary> public static void AddOrAppend(this TagsCollectionBase tags, Tag tag) { foreach (var t in tags) { if (t.Key == tag.Key) { if (!string.IsNullOrWhiteSpace(t.Value)) { var values = t.Value.Split(','); for (var i = 0; i < values.Length; i++) { if (values[i] == tag.Value) { return; } } tags.AddOrReplace(tag.Key, t.Value + "," + tag.Value); } else { tags.AddOrReplace(tag); } return; } } tags.Add(tag); }
private void AddTagsByIcon(TagsCollectionBase tags, string icon) { var tagsList = _tagsHelper.FindTagsForIcon(icon); if (tagsList.Any()) { tags.Add(tagsList.First().Key, tagsList.First().Value); } }
private static TagsCollectionBase ConvertToTags(tag[] tag) { TagsCollectionBase tagsCollectionBase = (TagsCollectionBase)null; if (tag != null && tag.Length != 0) { tagsCollectionBase = (TagsCollectionBase) new TagsCollection(); foreach (tag tag1 in tag) { tagsCollectionBase.Add(tag1.k, tag1.v); } } return(tagsCollectionBase); }
private void SetTagByLanguage(TagsCollectionBase tags, string key, string value, string language) { var keyWithLanguage = key + ":" + language; var previousValue = string.Empty; if (tags.ContainsKey(keyWithLanguage)) { previousValue = tags[keyWithLanguage]; tags[keyWithLanguage] = value; } else { tags.Add(new Tag(keyWithLanguage, value)); } if (tags.ContainsKey(key) && tags[key] == previousValue) { tags[key] = value; } else if (tags.ContainsKey(key) == false) { tags.Add(new Tag(key, value)); } }
public static void AddOrAppend(this TagsCollectionBase tags, string key, params string[] newValues) { if (tags.TryGetValue(key, out var oldValue)) { foreach (var newValue in newValues.Where(n => !oldValue.Contains(n))) { tags[key] += ";" + newValue; } } else { tags.Add(key, string.Join(";", newValues)); } }