internal static CanAssignResult CanAssignTo(ITypeResolver typeResolver, IType destinationTypeId, DocumentNode valueNode) { if (!DocumentPrimitiveNode.IsNull(valueNode)) { return(DocumentNode.CanAssignTo(typeResolver, (ITypeId)destinationTypeId, (ITypeId)valueNode.Type)); } return(!destinationTypeId.SupportsNullValues ? CanAssignResult.NotNullable : CanAssignResult.CanAssign); }
public static IMemberId GetValueAsMember(DocumentCompositeNode valueNode, IPropertyId property) { IMemberId memberId = (IMemberId)null; if (valueNode != null) { memberId = (IMemberId)DocumentPrimitiveNode.GetValueAsMember(valueNode.Properties[property]); } return(memberId); }
public override bool Equals(DocumentNode other) { DocumentPrimitiveNode documentPrimitiveNode = other as DocumentPrimitiveNode; if (documentPrimitiveNode != null && this.Type.Equals((object)documentPrimitiveNode.Type)) { return(object.Equals((object)this.value, (object)documentPrimitiveNode.value)); } return(false); }
public static bool IsNull(DocumentNode node) { DocumentPrimitiveNode documentPrimitiveNode = node as DocumentPrimitiveNode; if (documentPrimitiveNode != null) { return(documentPrimitiveNode.Value == null); } return(false); }
public override DocumentNode Clone(IDocumentContext context) { IDocumentNodeValue documentNodeValue = this.value != null?this.value.Clone(context) : (IDocumentNodeValue)null; ITypeId typeId = (ITypeId)this.Type.Clone(context.TypeResolver); DocumentPrimitiveNode documentPrimitiveNode = new DocumentPrimitiveNode(context, typeId, documentNodeValue); if (this.SourceContext != null) { documentPrimitiveNode.SourceContext = this.SourceContext.FreezeText(true); } return((DocumentNode)documentPrimitiveNode); }
public static object GetValueAsObject(DocumentNode node) { DocumentPrimitiveNode documentPrimitiveNode = node as DocumentPrimitiveNode; if (documentPrimitiveNode == null) { return((object)null); } DocumentPrimitiveNode.UnsitedValue unsitedValue = documentPrimitiveNode.Value as DocumentPrimitiveNode.UnsitedValue; if (unsitedValue == null) { return((object)null); } return(unsitedValue.Value); }
public static Uri GetUriValue(DocumentNode valueNode) { Uri uri = (Uri)null; DocumentPrimitiveNode documentPrimitiveNode = valueNode as DocumentPrimitiveNode; DocumentCompositeNode documentCompositeNode = valueNode as DocumentCompositeNode; if (documentPrimitiveNode != null) { uri = documentPrimitiveNode.GetUriValue(); } else if (documentCompositeNode != null) { uri = documentCompositeNode.GetUriValue(documentCompositeNode.PlatformMetadata.KnownProperties.BitmapImageUriSource); } return(uri); }
public static IType GetValueAsType(DocumentNode node) { DocumentPrimitiveNode documentPrimitiveNode = node as DocumentPrimitiveNode; if (documentPrimitiveNode == null) { return((IType)null); } DocumentNodeMemberValue documentNodeMemberValue = documentPrimitiveNode.Value as DocumentNodeMemberValue; if (documentNodeMemberValue == null) { return((IType)null); } return(documentNodeMemberValue.Member as IType); }
public static IMember GetValueAsMember(DocumentNode node) { DocumentPrimitiveNode documentPrimitiveNode = node as DocumentPrimitiveNode; if (documentPrimitiveNode == null) { return((IMember)null); } DocumentNodeMemberValue documentNodeMemberValue = documentPrimitiveNode.Value as DocumentNodeMemberValue; if (documentNodeMemberValue == null) { return((IMember)null); } return(documentNodeMemberValue.Member); }
public static string GetValueAsString(DocumentNode node) { DocumentPrimitiveNode documentPrimitiveNode = node as DocumentPrimitiveNode; if (documentPrimitiveNode != null && documentPrimitiveNode.TypeResolver.PlatformMetadata.KnownTypes.String.IsAssignableFrom((ITypeId)documentPrimitiveNode.Type)) { DocumentNodeStringValue documentNodeStringValue = documentPrimitiveNode.value as DocumentNodeStringValue; if (documentNodeStringValue != null) { return(documentNodeStringValue.Value); } DocumentPrimitiveNode.UnsitedValue unsitedValue = documentPrimitiveNode.value as DocumentPrimitiveNode.UnsitedValue; if (unsitedValue != null) { return((string)unsitedValue.Value); } } return((string)null); }
public IProperty GetValueProperty() { if (this.Parent != null) { DocumentCompositeNode parent = this.Parent; IType type = parent.Type; IProperty sitePropertyKey = this.SitePropertyKey; if (sitePropertyKey != null) { IPropertyValueTypeMetadata valueTypeMetadata = type.Metadata as IPropertyValueTypeMetadata; if (valueTypeMetadata != null && sitePropertyKey.Equals((object)valueTypeMetadata.ValueProperty)) { return(DocumentPrimitiveNode.GetValueAsMember(parent.Properties[valueTypeMetadata.PropertyProperty]) as IProperty); } return(sitePropertyKey); } } return((IProperty)null); }
private static void UpdateNameScopes(DocumentNode parent, IProperty propertyKey, DocumentNode node, bool adding) { if (parent == null) { return; } if (node is DocumentPrimitiveNode) { if (propertyKey == null || !parent.IsNameProperty((IPropertyId)propertyKey)) { return; } DocumentNodeNameScope containingNameScope = parent.FindContainingNameScope(); if (containingNameScope == null) { return; } string valueAsString = DocumentPrimitiveNode.GetValueAsString(node); if (valueAsString == null) { return; } if (adding) { containingNameScope.AddNode(valueAsString, parent); } else { containingNameScope.RemoveNode(valueAsString); } } else { DocumentNodeNameScope containingNameScope = node.FindContainingNameScope(); if (containingNameScope == null) { return; } DocumentNode.UpdateNameScopesRecursive(containingNameScope, node, adding); } }