private static IEnumerable<Token> OfSequence(this IEnumerable<Token> tokens, Token nameToken, TypeDescriptor info) { var nameIndex = tokens.IndexOf(t => t.Equals(nameToken)); if (nameIndex >= 0) { return info.NextValue.Return( _ => info.MaxItems.Return( n => tokens.Skip(nameIndex + 1).Take(n), tokens.Skip(nameIndex + 1).TakeWhile(v => v.IsValue())), tokens.Skip(nameIndex + 1).TakeWhile(v => v.IsValue())); } return new Token[] { }; }
public static TypeDescriptor Create(TargetType tag, Maybe<int> maximumItems, TypeDescriptor next = default(TypeDescriptor)) { if (maximumItems == null) throw new ArgumentNullException("maximumItems"); return new TypeDescriptor(tag, maximumItems, next.ToMaybe()); }