Skip to content

Instantly share code, notes, and snippets.

@wcoder
Created February 28, 2020 08:25
Show Gist options
  • Save wcoder/1ffaae564978d048357c32652e3f84c7 to your computer and use it in GitHub Desktop.
Save wcoder/1ffaae564978d048357c32652e3f84c7 to your computer and use it in GitHub Desktop.
DocFX custom template for aggregate namespaces by assembly/components.

Add to docfx.json:

"template": [
  "statictoc",
  "templates/material",
  "templates/custom_template" <---
]

Create folder: templates/custom_template

Add to folder this file ManagedReference.extension.js:

exports.preTransform = function (model) {
transformItem(model, 1);
return model;
function transformItem(item, level) {
var log = "====================================================\n";
var isAssembly = item.parent == null && item.assemblies.indexOf(item.uid) !== -1;
var shared = item.__global._shared[item._tocKey];
var items = shared.items;
var temp_items = [];
var rootNamespaces = getAllRootNamespaces(items);
var assemblies = getCommonParts(rootNamespaces);
temp_items = getItemsForAssemblies(assemblies);
log += JSON.stringify(temp_items) + "\n";
//log += JSON.stringify(item.assemblies) + "\n";
for (var i = 0; i < temp_items.length; i++)
{
// TODO YP: aggregate items by assemblies
}
shared.items = temp_items;
log += JSON.stringify(model) + "\n";
log += "====================================================";
console.log(log);
}
function findAssemblyWithName(items, name)
{
for (var i = 0; i < items.length; i++)
{
if (items[i].name === name)
{
return i;
}
}
return -1;
}
function getItemsForAssemblies(assemblies)
{
var tmp = [];
for (var i = 0; i < assemblies.length; i++)
{
var assemblyName = assemblies[i];
tmp.push({
"name": assemblyName,
"href": assemblyName + ".html",
"topicHref": assemblyName + ".html",
"topicUid": assemblyName,
"items": []
});
}
return tmp;
}
function getAllRootNamespaces(items)
{
var tmp = [];
for (var i = 0; i < items.length; i++)
{
tmp.push(items[i].name);
}
return tmp;
}
function getCommonParts(namespaces)
{
var commonParts = [];
var xtoolkit = "Softeq.XToolkit.";
for (var i = 0; i < namespaces.length; i++)
{
var cuttedName = namespaces[i].replace(xtoolkit, "");
var nameParts = cuttedName.split(".");
if (nameParts.length === 1)
{
commonParts.push(namespaces[i]);
}
else
{
aggregateForPlatform("iOS");
aggregateForPlatform("Droid");
}
}
function aggregateForPlatform(platform)
{
var platformIndex = nameParts.indexOf(platform);
if (platformIndex === -1)
{
return;
}
var platformNamespace = xtoolkit + nameParts[platformIndex - 1] + "." + platform;
if (commonParts.indexOf(platformNamespace) === -1)
{
commonParts.push(platformNamespace);
}
}
return commonParts;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment