/// <summary>Get all possible values of a tokenable string.</summary> /// <param name="tokenable">The tokenable string.</param> /// <param name="conditions">The conditions for which to filter permutations.</param> public IEnumerable <string> GetPossibleStrings(TokenString tokenable, ConditionDictionary conditions) { // no tokens: return original string if (!tokenable.ConditionTokens.Any()) { yield return(tokenable.Raw); yield break; } // yield token permutations foreach (IDictionary <ConditionKey, string> permutation in this.GetApplicablePermutationsForTheseConditions(tokenable.ConditionTokens, conditions)) { yield return(tokenable.GetStringWithTokens(permutation)); } }