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>(); }
public MutationObserving(INode target, MutationOptions options) { _target = target; _options = options; _transientNodes = new List<INode>(); }
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)); }