private static void BuildExampleList(List<DocExample> listExample, DocExample docExample, DocObject docObject, Dictionary<DocObject, bool> included)
{
// check for view reference
if (included != null)
{
bool viewref = false;
foreach (DocModelView docView in docExample.Views)
{
if (included.ContainsKey(docView))
{
viewref = true;
break;
}
}
if (!viewref)
return;
}
if (docExample.ApplicableType != null)
{
string[] types = docExample.ApplicableType.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string type in types)
{
string[] parts = type.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
if (parts.Length >= 1)
{
if (parts[0].Equals(docObject.Name))
{
listExample.Add(docExample);
}
}
}
}
// templates
if (docExample.ApplicableTemplates != null && docObject is DocTemplateDefinition)
{
if (docExample.ApplicableTemplates.Contains((DocTemplateDefinition)docObject))
{
listExample.Add(docExample);
}
}
// recurse
foreach (DocExample docSub in docExample.Examples)
{
BuildExampleList(listExample, docSub, docObject, included);
}
}