Overwrite Files
Introduction
DocFX supports processing Markdown files, as well as structured data model in YAML or JSON format.
We call Markdown files Conceptual Files, and the structured data model files Metadata Files.
Current supported Metadata Files include:
- YAML files presenting managed reference model following Metadata Format for .NET Languages.
- Swagger JSON files presenting Swagger REST API model following Swagger Specification Version 2.0.
Inside DocFX, both Conceptual Files and Metadata Files are represented as Models with different properties. Details on Model structure for these files are described in Data model inside DocFX section.
DocFX introduces the concept of Overwrite File to modify or add properties to Models without changing the input Conceptual Files and Metadata Files.
The format of Overwrite Files
Overwrite Files are Markdown files with multiple Overwrite Sections starting with YAML header block. A valid YAML header for an Overwrite Section MUST take the form of valid YAML set between triple-dashed lines and start with property uid
. Here is a basic example of an Overwrite Section:
---
uid: microsoft.com/docfx/Contacts
some_property: value
---
Further description for `microsoft.com/docfx/Contacts`
Each Overwrite Section is transformed to Overwrite Model inside DocFX. For the above example, the Overwrite Model represented in YAML format is:
uid: microsoft.com/docfx/Contacts
some_property: value
conceptual: <p><b>Content</b> in Markdown</p>
Anchor *content
*content
is the keyword invented and used specifically in Overwrite Files to represent the Markdown content following YAML header. We leverage Anchors syntax in YAML specification for *content
.
The value for *content
is always transformed from Markdown content to HTML. When *content
is not used, the Markdown content below YAML header will be set to conceptual
property; When *content
is used, the Markdown content below YAML header will no longer be set to conceptual
property. With *content
, we can easily add Markdown content to any properties.
---
uid: microsoft.com/docfx/Contacts
footer: *content
---
Footer for `microsoft.com/docfx/Contacts`
In the above example, the value for *content
is <p>Footer for <code>microsoft.com/docfx/Contacts</code></p>
, and the Overwrite Model represented in YAML format is:
uid: microsoft.com/docfx/Contacts
footer: <p>Footer for <code>microsoft.com/docfx/Contacts</code></p>
uid
for an Overwrite Model stands for the Unique IDentifier of the Model it will overwrite. So it is allowed to have multiple Overwrite Sections with YAML Header containing the same uid
. For one Overwrite File, the latter Overwrite Section overwrites the former one with the same uid
. For different Overwrite Files, the order of overwrite is Undetermined. So it is suggested to have Overwrite Sections with the same uid
in the same Overwrite File.
When processing Conceptual Files and Metadata Files, Overwrite Models with the same uid
are applied to the processed Models. Different Models have different overwrite principles, Overwrite principles section describes the them in detail.
Apply Overwrite Files
Inside docfx.json
, overwrite
is used to specify the Overwrite Files.
Overwrite principles
As a general principle, uid
is always the key that an Overwrite Model find the Model it is going to overwrite. So a Model with no uid
defined will never get overwritten.
Different types of files produce different Models. The quickest way to get an idea of what the Model looks like is to run:
docfx build --exportRawModel
--exportRawModel
exports Model in JSON format with .raw.json
extension.
The basic principle of Overwrite Model is:
- It keeps the same data structure as the Model it is going to overwrite
- If the property is defined in Model, please refer Data model inside DocFX for the specific overwrite behavior for a specific property.
- If the property is not defined in Model, it is added to Model
Data model inside DocFX
Managed reference model
Key | Type | Overwrite behavior |
---|---|---|
uid | uid | Merge key. |
assemblies | string[] | Ignore. |
attributes | Attribute[] | Ignore. |
children | uid[] | Ignore. |
documentation | Source | Merge. |
example | string[] | Replace. |
exceptions | Exception[] | Merge keyed list. |
fullName | string | Replace. |
fullName. |
string | Replace. |
id | string | Replace. |
implements | uid[] | Ignore. |
inheritance | uid[] | Ignore. |
inheritedMembers | uid[] | Ignore. |
isEii | boolean | Replace. |
isExtensionMethod | boolean | Replace. |
langs | string[] | Replace. |
modifiers. |
string[] | Ignore. |
name | string | Replace. |
name. |
string | Replace. |
namespace | uid | Replace. |
overridden | uid | Replace. |
parent | uid | Replace. |
platform | string[] | Replace. |
remarks | markdown | Replace. |
see | LinkInfo[] | Merge keyed list. |
seealso | LinkInfo[] | Merge keyed list. |
source | Source | Merge. |
syntax | Syntax | Merge. |
summary | markdown | Replace. |
type | string | Replace. |
Source
Property | Type | Overwrite behavior |
---|---|---|
base | string | Replace. |
content | string | Replace. |
endLine | integer | Replace. |
id | string | Replace. |
isExternal | boolean | Replace. |
href | string | Replace. |
path | string | Replace. |
remote | GitSource | Merge. |
startLine | integer | Replace. |
GitSource
Property | Type | Overwrite behavior |
---|---|---|
path | string | Replace. |
branch | string | Replace. |
repo | url | Replace. |
commit | Commit | Merge. |
key | string | Replace. |
Commit
Property | Type | Overwrite behavior |
---|---|---|
committer | User | Replace. |
author | User | Replace. |
id | string | Replace. |
message | string | Replace. |
User
Property | Type | Overwrite behavior |
---|---|---|
name | string | Replace. |
string | Replace. | |
date | datetime | Replace. |
Exception
Property | Type | Overwrite behavior |
---|---|---|
type | uid | Merge key. |
description | markdown | Replace. |
commentId | string | Ignore. |
LinkInfo
Property | Type | Overwrite behavior |
---|---|---|
linkId | uid or href | Merge key. |
altText | markdown | Replace. |
commentId | string | Ignore. |
linkType | enum(CRef or HRef ) |
Ignore. |
Syntax
Property | Type | Overwrite behavior |
---|---|---|
content | string | Replace. |
content. |
string | Replace. |
parameters | Parameter[] | Merge keyed list. |
typeParameters | Parameter[] | Merge keyed list. |
return | Parameter | Merge. |
Parameter
Property | Type | Overwrite behavior |
---|---|---|
id | string | Merge key. |
description | markdown | Replace. |
attributes | Attribute[] | Ignore. |
type | uid | Replace. |
Attribute
Property | Type | Overwrite behavior |
---|---|---|
arguments | Argument[] | Ignore. |
ctor | uid | Ignore. |
namedArguments | NamedArgument[] | Ignore. |
type | uid | Ignore. |
Argument
Property | Type | Overwrite behavior |
---|---|---|
type | uid | Ignore. |
value | object | Ignore. |
NamedArgument
Property | Type | Overwrite behavior |
---|---|---|
name | string | Ignore. |
type | string | Ignore. |
value | object | Ignore. |
REST API model
Key | Type | Overwrite behavior |
---|---|---|
children | REST API item model | Overwrite when uid of the item model matches |
summary | string | Overwrite |
description | string | Overwrite |
REST API item model
Key | Type | Overwrite behavior |
---|---|---|
uid | string | Key |
Conceptual model
Key | Type | Overwrite behavior |
---|---|---|
title | string | Overwrite |
rawTitle | string | Overwrite |
conceptual | string | Overwrite |