private IEnumerable <Instruction> ParseContentPropertyIfAny(XamlType parentType) { if (IsNestedPropertyImplicit) { var contentProperty = parentType.ContentProperty; if (contentProperty == null) { // There is no content property, so try to use a TypeConverter to supply the value. yield return(Inject.Initialization()); yield return(Inject.Value(CurrentText)); yield return(Inject.EndOfMember()); } else if (contentProperty.XamlType.IsCollection) { foreach (var instruction in ParseCollectionInsideThisProperty(contentProperty)) { yield return(instruction); } } else { yield return(Inject.StartOfMember(contentProperty)); foreach (var instruction in ParseElements()) { yield return(instruction); } yield return(Inject.EndOfMember()); } } }
private IEnumerable <Instruction> ParseMembersOfObject() { while (CurrentNodeType == NodeType.Attribute && !EndOfStream) { var valueOfMember = CurrentPropertyText; yield return(Inject.StartOfMember(CurrentMember)); if (IsMarkupExtension(valueOfMember)) { foreach (var instruction in ParseMarkupExtension(valueOfMember)) { yield return(instruction); } } else { yield return(Inject.Value(valueOfMember)); } yield return(Inject.EndOfMember()); SetNextInstruction(); } }
private IEnumerable <Instruction> ParseCollectionInsideThisProperty(MemberBase member) { yield return(Inject.StartOfMember(member)); if (IsBeginingOfImplicitCollection) { yield return(Inject.GetObject()); yield return(Inject.Items()); foreach (var instruction in ParseElements()) { yield return(instruction); } yield return(Inject.EndOfMember()); yield return(Inject.EndOfObject()); } else { foreach (var xamlInstruction in ParseNonEmptyElement()) { yield return(xamlInstruction); } } yield return(Inject.EndOfMember()); }
private IEnumerable <XamlInstruction> ParseContentPropertyIfAny(XamlType parentType) { if (IsNestedPropertyImplicit) { var contentProperty = parentType.ContentProperty; if (contentProperty == null) { throw new XamlParseException($"Cannot get the content property for the type {parentType}"); } if (contentProperty.XamlType.IsCollection) { foreach (var instruction in ParseCollectionInsideThisProperty(contentProperty)) { yield return(instruction); } } else { yield return(Inject.StartOfMember(contentProperty)); foreach (var instruction in ParseElements()) { yield return(instruction); } yield return(Inject.EndOfMember()); } } }
private IEnumerable <Instruction> ParseProperties(IEnumerable <PropertyOption> options, XamlType xamlType) { foreach (var option in options) { var member = xamlType.GetMember(option.Property); yield return(Inject.StartOfMember(member)); var stringNode = option.Value as StringNode; if (stringNode != null) { yield return(Inject.Value(stringNode.Value)); } var markupExtensionNode = option.Value as MarkupExtensionNode; if (markupExtensionNode != null) { foreach (var xamlInstruction in ParseMarkupExtensionNode(markupExtensionNode)) { yield return(xamlInstruction); } } yield return(Inject.EndOfMember()); } }
private IEnumerable <XamlInstruction> InjectNodesForTypeThatRequiresInitialization() { yield return(Inject.Initialization()); SetNextInstruction(); yield return(Inject.Value(CurrentText)); yield return(Inject.EndOfMember()); }
private IEnumerable <Instruction> ParseItemsOfCollection() { yield return(Inject.Items()); foreach (var xamlInstruction in ParseElements()) { yield return(xamlInstruction); } yield return(Inject.EndOfMember()); }
private IEnumerable <XamlInstruction> ParseNestedProperty(XamlMember member) { yield return(Inject.StartOfMember(member)); SetNextInstruction(); foreach (var instruction in ParseInnerContentOfNestedProperty()) { yield return(instruction); } yield return(Inject.EndOfMember()); }
private IEnumerable <XamlInstruction> ParseCollection() { yield return(Inject.Items()); foreach (var instruction in ParseElements()) { yield return(instruction); } yield return(Inject.EndOfMember()); yield return(Inject.EndOfObject()); }
private IEnumerable <Instruction> ParseNestedProperty(MemberBase member) { yield return(Inject.StartOfMember(member)); SetNextInstruction(); foreach (var instruction in ParseInnerContentOfNestedProperty()) { yield return(instruction); } SkipTextNodes(); yield return(Inject.EndOfMember()); }
private IEnumerable <Instruction> InjectNodesForTypeThatRequiresInitialization() { SetNextInstruction(); foreach (var member in ParseMembersOfObject()) { yield return(member); } yield return(Inject.Initialization()); yield return(Inject.Value(CurrentText)); yield return(Inject.EndOfMember()); }
private static IEnumerable <Instruction> ParseArguments(IEnumerable <PositionalOption> options) { var positionalOptions = options.ToList(); if (positionalOptions.Any()) { yield return(Inject.MarkupExtensionArguments()); foreach (var option in positionalOptions) { yield return(Inject.Value(option.Identifier)); } yield return(Inject.EndOfMember()); } }
private IEnumerable <XamlInstruction> ParseCollectionInsideThisProperty(XamlMemberBase member) { yield return(Inject.StartOfMember(member)); yield return(Inject.GetObject()); yield return(Inject.Items()); foreach (var instruction in ParseElements()) { yield return(instruction); } yield return(Inject.EndOfMember()); yield return(Inject.EndOfObject()); yield return(Inject.EndOfMember()); }