public static List <Tag> Extract(ExtractPolicy extractPolicy, IEnumerable <string> sources) { BinaryComponents.Utility.Collections.Set <string> tagsFound = new BinaryComponents.Utility.Collections.Set <string>(); List <Tag> tags = new List <Tag>(); foreach (string source in sources) { int start = 0; while (source != null) { int found = source.IndexOf(PrefixParam, start); if (found == -1) { break; // finished } else { Tag tag = new Tag(); tag.StartIndex = found; start = found + 1; if (source.Length > found + 2 && source[found + 1] == '{') { start++; // Jump over bracket. // // Get Name int separator = source.IndexOf('}', start); if (separator != -1) { string name = source.Substring(start, separator - start).Trim(); if (name.Length > 0) { tag.Name = name; tag.EndIndex = separator + 1; bool alreadyFound = tagsFound.Contains(tag.Name); if (extractPolicy == ExtractPolicy.IncludeAllTags || !alreadyFound) { if (!alreadyFound) { tagsFound.Add(tag.Name); } tags.Add(tag); } } } } } } } return(tags); }
public static List <Tag> Extract(ExtractPolicy extractPolicy, string source) { return(Extract(extractPolicy, new string[] { source })); }