/// <summary> /// Checks that templates are valid for blocks. /// </summary> /// <param name="blockTemplateTable">Table of templates.</param> /// <param name="nodeTemplateTable">Table of templates with all frames.</param> public virtual bool IsBlockValid(IFrameTemplateReadOnlyDictionary blockTemplateTable, IFrameTemplateReadOnlyDictionary nodeTemplateTable) { Debug.Assert(blockTemplateTable != null); List <Type> BlockKeys = new List <Type>(NodeHelper.CreateNodeDictionary <object>().Keys); IFrameTemplateDictionary DefaultDictionary = CreateEmptyTemplateDictionary(); foreach (Type Key in BlockKeys) { AddBlockNodeTypes(DefaultDictionary, Key); } bool IsValid = true; foreach (KeyValuePair <Type, IFrameTemplate> Entry in DefaultDictionary) { IsValid &= blockTemplateTable.ContainsKey(Entry.Key); } foreach (KeyValuePair <Type, IFrameTemplate> Entry in blockTemplateTable) { Type NodeType = Entry.Key; IFrameTemplate Template = Entry.Value; int CommentFrameCount = 0; IsValid &= NodeTreeHelper.IsBlockType(NodeType); IsValid &= Template.IsValid; IsValid &= Template.Root.IsValid(NodeType, nodeTemplateTable, ref CommentFrameCount); } Debug.Assert(IsValid); return(IsValid); }
/// <summary> /// Checks that templates are valid for nodes. /// </summary> /// <param name="nodeTemplateTable">Table of templates.</param> public virtual bool IsValid(IFrameTemplateReadOnlyDictionary nodeTemplateTable) { Debug.Assert(nodeTemplateTable != null); IFrameTemplateDictionary DefaultDictionary = CreateDefaultTemplateDictionary(); bool IsValid = true; foreach (KeyValuePair <Type, IFrameTemplate> Entry in DefaultDictionary) { IsValid &= nodeTemplateTable.ContainsKey(Entry.Key); } foreach (KeyValuePair <Type, IFrameTemplate> Entry in nodeTemplateTable) { Type NodeType = Entry.Key; IFrameTemplate Template = Entry.Value; int CommentFrameCount = 0; IsValid &= Template.IsValid; IsValid &= IsValidNodeType(NodeType, Template.NodeType); IsValid &= Template.Root.IsValid(NodeType, nodeTemplateTable, ref CommentFrameCount); IsValid &= CommentFrameCount == 1; Debug.Assert(IsValid); } Debug.Assert(IsValid); return(IsValid); }