Beispiel #1
0
 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);
 }
Beispiel #2
0
        public static IMemberId GetValueAsMember(DocumentCompositeNode valueNode, IPropertyId property)
        {
            IMemberId memberId = (IMemberId)null;

            if (valueNode != null)
            {
                memberId = (IMemberId)DocumentPrimitiveNode.GetValueAsMember(valueNode.Properties[property]);
            }
            return(memberId);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        public static bool IsNull(DocumentNode node)
        {
            DocumentPrimitiveNode documentPrimitiveNode = node as DocumentPrimitiveNode;

            if (documentPrimitiveNode != null)
            {
                return(documentPrimitiveNode.Value == null);
            }
            return(false);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        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);
        }
Beispiel #8
0
        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);
        }
Beispiel #9
0
        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);
        }
Beispiel #10
0
        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);
        }
Beispiel #11
0
 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);
 }
Beispiel #12
0
 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);
     }
 }