Skip to content

Commit

Permalink
more docfx stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
tig committed Dec 2, 2023
1 parent c708b5a commit b643e48
Show file tree
Hide file tree
Showing 35 changed files with 547 additions and 5 deletions.
9 changes: 5 additions & 4 deletions .github/workflows/api-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,15 @@ jobs:
dotnet-version: 7.0
dotnet-quality: 'ga'

- name: Setup DocFX
uses: crazy-max/ghaction-chocolatey@v2
with:
args: install docfx
# - name: Setup DocFX
# uses: crazy-max/ghaction-chocolatey@v2
# with:
# args: install docfx

- name: DocFX Build
working-directory: docfx
run: |
dotnet tool install -g docfx
rm ../docs -Recurse -Force -ErrorAction SilentlyContinue
rm ../api -Recurse -Force -ErrorAction SilentlyContinue
$env:DOCFX_SOURCE_BRANCH_NAME="${{ github.ref_name }}"
Expand Down
1 change: 1 addition & 0 deletions Terminal.sln
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{E143FB1F-0B88-48CB-9086-72CDCECFCD22}"
ProjectSection(SolutionItems) = preProject
.gitignore = .gitignore
.github\workflows\api-docs.yml = .github\workflows\api-docs.yml
.github\CODEOWNERS = .github\CODEOWNERS
CODE_OF_CONDUCT.md = CODE_OF_CONDUCT.md
CONTRIBUTING.md = CONTRIBUTING.md
Expand Down
2 changes: 2 additions & 0 deletions docfx/build.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ $prevPwd = $PWD; Set-Location -ErrorAction Stop -LiteralPath $PSScriptRoot
try {
$PWD # output the current location

dotnet tool update -g docfx

dotnet build --configuration Release ../Terminal.sln

rm ../docs -Recurse -Force -ErrorAction SilentlyContinue
Expand Down
3 changes: 2 additions & 1 deletion docfx/docfx.json
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@
"globalMetadata": {
"_appTitle": "Terminal.Gui v2",
"_appName": "Terminal.Gui v2",
"_appFaviconPath": "images/favicon.png",
"_appFaviconPath": "images/icon48.png",
"_appLogoPath": "images/logo.png",
"_appFooter": "<strong>Terminal.Gui - Part of the gui-cs Organization</strong>",
"_enableSearch": true,
Expand All @@ -108,6 +108,7 @@
},
"_gitUrlPattern": "github"
},
"markdownEngineName": "markdig",
"globalMetadataFiles": [],
"fileMetadataFiles": [],
"postProcessors": ["ExtractSearchIndex"],
Expand Down
33 changes: 33 additions & 0 deletions docfx/plugins/memberpage-extras/ManagedReference.extension.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
// Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.
var common = require('./ManagedReference.common.js');

exports.preTransform = function (model) {
transform(model);

function transform(item) {
if (item.children) item.children.forEach(function(i) {
transform(i);
});
}

return model;
}

exports.postTransform = function (model) {
var type = model.type.toLowerCase();
var category = common.getCategory(type);
if (category == 'class') {
var typePropertyName = common.getTypePropertyName(type);
if (typePropertyName) {
model[typePropertyName] = true;
}
if (model.children && model.children.length > 0) {
model.isCollection = true;
common.groupChildren(model, 'class');
} else {
model.isItem = true;
}
}

return model;
}
79 changes: 79 additions & 0 deletions docfx/plugins/memberpage-extras/toc.html.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
// Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.
exports.transform = function (model) {
var groupNames = {
"constructor": { key: "constructorsInSubtitle" },
"field": { key: "fieldsInSubtitle" },
"property": { key: "propertiesInSubtitle" },
"method": { key: "methodsInSubtitle" },
"event": { key: "eventsInSubtitle" },
"operator": { key: "operatorsInSubtitle" },
"eii": { key: "eiisInSubtitle" },
};

groupChildren(model);
transformItem(model, 1);
return model;

function groupChildren(item) {
if (!item || !item.items || item.items.length == 0) {
return;
}
var grouped = {};
var items = [];
item.items.forEach(function (element) {
groupChildren(element);
if (element.type) {
var type = element.isEii ? "eii" : element.type.toLowerCase();
if (!grouped.hasOwnProperty(type)) {
if (!groupNames.hasOwnProperty(type)) {
groupNames[type] = {
name: element.type
};
console.log(type + " is not predefined type, use its type name as display name.")
}
grouped[type] = [];
}
grouped[type].push(element);
} else {
items.push(element);
}
}, this);

// With order defined in groupNames
for (var key in groupNames) {
if (groupNames.hasOwnProperty(key) && grouped.hasOwnProperty(key)) {
items.push({
name: model.__global[groupNames[key].key] || groupNames[key].name,
items: grouped[key]
})
}
}

item.items = items;
}

function transformItem(item, level) {
// set to null in case mustache looks up
item.topicHref = item.topicHref || null;
item.tocHref = item.tocHref || null;
item.name = item.name || null;

item.level = level;

// Add word break opportunities before dots

if (item.name)
item.name = item.name.replace(/\./g, "\u200B.");

if (item.items && item.items.length > 0) {
item.leaf = false;
var length = item.items.length;
for (var i = 0; i < length; i++) {
transformItem(item.items[i], level + 1);
};
} else {
item.items = [];
item.leaf = true;
}
}
}
20 changes: 20 additions & 0 deletions docfx/plugins/memberpage.2.59.4/ManagedReference.extension.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.
var common = require('./ManagedReference.common.js');

exports.postTransform = function (model) {
var type = model.type.toLowerCase();
var category = common.getCategory(type);
if (category == 'class') {
var typePropertyName = common.getTypePropertyName(type);
if (typePropertyName) {
model[typePropertyName] = true;
}
if (model.children && model.children.length > 0) {
model.isCollection = true;
common.groupChildren(model, 'class');
} else {
model.isItem = true;
}
}
return model;
}
10 changes: 10 additions & 0 deletions docfx/plugins/memberpage.2.59.4/ManagedReference.overwrite.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.
var common = require('./ManagedReference.common.js');

exports.getOptions = function (model) {
var ignoreChildrenBookmarks = model._splitReference && model.type && common.getCategory(model.type) === 'ns';

return {
"bookmarks": common.getBookmarks(model, ignoreChildrenBookmarks)
};
}
59 changes: 59 additions & 0 deletions docfx/plugins/memberpage.2.59.4/partials/class.tmpl.partial
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}

{{>partials/class.header}}
{{#children}}
{{#overload}}
<a id="{{id}}" data-uid="{{uid}}"></a>
{{/overload}}
<h3 id="{{id}}">{{>partials/classSubtitle}}</h3>
{{#children.0}}
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>{{__global.name}}</th>
<th>{{__global.description}}</th>
</tr>
</thead>
<tbody>
{{/children.0}}
{{#children}}
<tr>
<td id="{{id}}" data-uid="{{uid}}">
<xref uid="{{uid}}" altProperty="fullName" displayProperty="name"/>
</td>
<td class="markdown level1 summary">{{{summary}}}</td>
</tr>
{{/children}}
{{#children.0}}
</tbody>
</table>
{{/children.0}}
{{/children}}
{{#extensionMethods.0}}
<h3 id="extensionmethods">{{__global.extensionMethods}}</h3>
{{/extensionMethods.0}}
{{#extensionMethods}}
<div>
{{#definition}}
<xref uid="{{definition}}" altProperty="fullName" displayProperty="nameWithType"/>
{{/definition}}
{{^definition}}
<xref uid="{{uid}}" altProperty="fullName" displayProperty="nameWithType"/>
{{/definition}}
</div>
{{/extensionMethods}}
{{#seealso.0}}
<h3 id="seealso">{{__global.seealso}}</h3>
<div class="seealso">
{{/seealso.0}}
{{#seealso}}
{{#isCref}}
<div>{{{type.specName.0.value}}}</div>
{{/isCref}}
{{^isCref}}
<div>{{{url}}}</div>
{{/isCref}}
{{/seealso}}
{{#seealso.0}}
</div>
{{/seealso.0}}
Loading

0 comments on commit b643e48

Please sign in to comment.