Esempio n. 1
0
        public void Connect(INode target, Boolean childList = false, Boolean subtree = false, Boolean?attributes = null, Boolean?characterData = null, Boolean?attributeOldValue = null, Boolean?characterDataOldValue = null, IEnumerable <String> attributeFilter = null)
        {
            var node = target as Node;

            if (node == null)
            {
                return;
            }

            var oldCharacterData  = characterDataOldValue ?? false;
            var oldAttributeValue = attributeOldValue ?? false;

            var options = new MutationOptions
            {
                IsObservingChildNodes        = childList,
                IsObservingSubtree           = subtree,
                IsExaminingOldCharacterData  = oldCharacterData,
                IsExaminingOldAttributeValue = oldAttributeValue,
                IsObservingCharacterData     = characterData ?? oldCharacterData,
                IsObservingAttributes        = attributes ?? (oldAttributeValue || attributeFilter != null),
                AttributeFilters             = attributeFilter
            };

            if (options.IsExaminingOldAttributeValue && !options.IsObservingAttributes)
            {
                throw new DomException(DomError.TypeMismatch);
            }

            if (options.AttributeFilters != null && !options.IsObservingAttributes)
            {
                throw new DomException(DomError.TypeMismatch);
            }

            if (options.IsExaminingOldCharacterData && !options.IsObservingCharacterData)
            {
                throw new DomException(DomError.TypeMismatch);
            }

            if (options.IsInvalid)
            {
                throw new DomException(DomError.Syntax);
            }

            node.Owner.Mutations.Register(this);
            var existing = this[target];

            if (existing != null)
            {
                existing.TransientNodes.Clear();
                _observing.Remove(existing);
            }

            _observing.Add(new MutationObserving(target, options));
        }
 public MutationObserving(INode target, MutationOptions options)
 {
     _target         = target;
     _options        = options;
     _transientNodes = new List <INode>();
 }
Esempio n. 3
0
 public MutationObserving(INode target, MutationOptions options)
 {
     _target = target;
     _options = options;
     _transientNodes = new List<INode>();
 }
Esempio n. 4
0
        public void Connect(INode target, Boolean childList = false, Boolean subtree = false, Boolean? attributes = null, Boolean? characterData = null, Boolean? attributeOldValue = null, Boolean? characterDataOldValue = null, IEnumerable<String> attributeFilter = null)
        {
            var node = target as Node;

            if (node == null)
                return;

            var oldCharacterData = characterDataOldValue ?? false;
            var oldAttributeValue = attributeOldValue ?? false;

            var options = new MutationOptions
            {
                IsObservingChildNodes = childList,
                IsObservingSubtree = subtree,
                IsExaminingOldCharacterData = oldCharacterData,
                IsExaminingOldAttributeValue = oldAttributeValue,
                IsObservingCharacterData = characterData ?? oldCharacterData,
                IsObservingAttributes = attributes ?? (oldAttributeValue || attributeFilter != null),
                AttributeFilters = attributeFilter
            };

            if (options.IsExaminingOldAttributeValue && !options.IsObservingAttributes)
                throw new DomException(DomError.TypeMismatch);
            else if (options.AttributeFilters != null && !options.IsObservingAttributes)
                throw new DomException(DomError.TypeMismatch);
            else if (options.IsExaminingOldCharacterData && !options.IsObservingCharacterData)
                throw new DomException(DomError.TypeMismatch);
            else if (options.IsInvalid)
                throw new DomException(DomError.Syntax);

            node.Owner.Mutations.Register(this);
            var existing = this[target];

            if (existing != null)
            {
                existing.TransientNodes.Clear();
                _observing.Remove(existing);
            }

            _observing.Add(new MutationObserving(target, options));
        }