umberto 2.1.8 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +2 -2
- package/LICENSE.md +1 -1
- package/README.md +1 -0
- package/hexo-shim.js +1 -1
- package/package.json +10 -6
- package/scripts/filter/after-post-render/basepath-replacer.js +1 -1
- package/scripts/filter/after-post-render/fix-code-samples.js +1 -1
- package/scripts/filter/after-post-render/gather-guides.js +1 -1
- package/scripts/filter/after-post-render/img-linker.js +1 -1
- package/scripts/filter/after-post-render/import-guide.js +1 -1
- package/scripts/filter/after-post-render/insert-error-codes.js +1 -1
- package/scripts/filter/after-post-render/linker.js +1 -1
- package/scripts/filter/after-post-render/parseicontag.js +1 -1
- package/scripts/filter/after-post-render/process-variables.js +1 -1
- package/scripts/filter/after-post-render/snippets.js +1 -1
- package/scripts/filter/after-post-render/time-end.js +1 -1
- package/scripts/filter/after-post-render/time-start.js +1 -1
- package/scripts/filter/after-post-render/validate-after-render.js +1 -1
- package/scripts/filter/before-post-render/add-project-info-to-page.js +1 -1
- package/scripts/filter/before-post-render/add-repo-url.js +1 -1
- package/scripts/filter/before-post-render/change-output-path.js +1 -1
- package/scripts/filter/before-post-render/escape-special-characters.js +1 -1
- package/scripts/filter/before-post-render/execute-and-insert-function-results.js +1 -1
- package/scripts/filter/before-post-render/infobox.js +1 -1
- package/scripts/filter/before-post-render/insertchangelog.js +1 -1
- package/scripts/filter/before-post-render/replace-macros.js +1 -1
- package/scripts/filter/before-post-render/set-layout.js +1 -1
- package/scripts/filter/before-post-render/validate-page-data.js +1 -1
- package/scripts/helper/find-main-category-page.js +1 -1
- package/scripts/helper/get-pages-for-nav-tree.js +1 -1
- package/scripts/helper/mark-empty-categories.js +1 -1
- package/scripts/helper/normalize-badges.js +1 -1
- package/scripts/helper/u-split-to-title-and-content.js +1 -1
- package/scripts/helper/u-toc.js +1 -1
- package/scripts/utils/execute-and-insert-function-results.js +1 -1
- package/scripts/utils/findmaincategorypage.js +1 -1
- package/scripts/utils/getreportissuewidgeturl.js +1 -1
- package/scripts/utils/insertchangelog.js +1 -1
- package/scripts/utils/normalizebadges.js +1 -1
- package/scripts/utils/parseicontag.js +1 -1
- package/scripts/utils/parselinks.js +61 -41
- package/scripts/utils/shoulddisplaynewindicator.js +1 -1
- package/scripts/utils/transforminfobox.js +1 -1
- package/{scripts → scripts-dev}/postinstall.js +1 -1
- package/src/api-builder/api-builder.js +28 -8
- package/src/api-builder/classes/description-parser.js +79 -63
- package/src/api-builder/classes/doc-data-factory.js +58 -5
- package/src/api-builder/classes/file-name-manager.js +1 -1
- package/src/api-builder/classes/html-file.js +1 -1
- package/src/api-builder/classes/navigation-tree.js +1 -1
- package/src/api-builder/classes/tree-node.js +1 -1
- package/src/api-builder/utils/findtargetdoclet.js +84 -0
- package/src/api-builder/utils/utils.js +41 -0
- package/src/data-converter/converters/jsdoc2umberto.js +8 -1
- package/src/data-converter/converters/jsduck2umberto.js +1 -1
- package/src/data-converter/converters/typedoc/abstractparser.js +364 -0
- package/src/data-converter/converters/typedoc/accessorparser.js +64 -0
- package/src/data-converter/converters/typedoc/classparser.js +49 -0
- package/src/data-converter/converters/typedoc/constantparser.js +45 -0
- package/src/data-converter/converters/typedoc/constructorparser.js +34 -0
- package/src/data-converter/converters/typedoc/errorparser.js +44 -0
- package/src/data-converter/converters/typedoc/eventparser.js +57 -0
- package/src/data-converter/converters/typedoc/functionparser.js +61 -0
- package/src/data-converter/converters/typedoc/interfaceparser.js +46 -0
- package/src/data-converter/converters/typedoc/methodparser.js +63 -0
- package/src/data-converter/converters/typedoc/moduleparser.js +31 -0
- package/src/data-converter/converters/typedoc/propertyparser.js +74 -0
- package/src/data-converter/converters/typedoc/typedoc.ts +297 -0
- package/src/data-converter/converters/typedoc/typedocconverter.js +742 -0
- package/src/data-converter/converters/typedoc/typeparser.js +71 -0
- package/src/data-converter/converters/typedoc2umberto.js +52 -0
- package/src/data-converter/data-collection.js +1 -1
- package/src/data-converter/data-provider.js +4 -2
- package/src/data-converter/doclet-collection.js +14 -2
- package/src/data-converter/middlewares/relation-fixer.js +1 -1
- package/src/helpers/capitalize.js +1 -1
- package/src/helpers/copy-file.js +1 -1
- package/src/helpers/create-filtering-data-attribs.js +1 -1
- package/src/helpers/doc-formats.js +3 -2
- package/src/helpers/escape-longname.js +1 -1
- package/src/helpers/extract-longname.js +1 -1
- package/src/helpers/get-api-infobox-tooltip.js +1 -1
- package/src/helpers/get-docsearch-config.js +1 -1
- package/src/helpers/get-file-patterns-to-process.js +1 -1
- package/src/helpers/get-short-module-path.js +1 -1
- package/src/helpers/github-url.js +1 -1
- package/src/helpers/glob-to-regexp.js +1 -1
- package/src/helpers/html-safe.js +1 -1
- package/src/helpers/is-non-empty-array.js +1 -1
- package/src/helpers/snippets.js +1 -1
- package/src/helpers/split-longname.js +101 -8
- package/src/hexo/filter/extend-config.js +1 -1
- package/src/hexo/filter/project-locals.js +4 -1
- package/src/hexo/get-repo-urls.js +1 -1
- package/src/hexo/helper/get-page-group.js +1 -1
- package/src/hexo/project-globals.js +1 -1
- package/src/hexo-manager.js +1 -1
- package/src/index.js +2 -1
- package/src/sdk-builder/get-sdk-sources.js +1 -1
- package/src/sdk-builder/sdk-builder.js +1 -1
- package/src/tasks/build-api-docs.js +4 -4
- package/src/tasks/build-documentation.js +9 -3
- package/src/tasks/build-sdk.js +1 -1
- package/src/tasks/build-snippets.js +1 -1
- package/src/tasks/cache-files.js +1 -1
- package/src/tasks/compile-sass.js +1 -1
- package/src/tasks/copy-assets.js +1 -1
- package/src/tasks/copy-files.js +1 -1
- package/src/tasks/copy-project-docs.js +1 -1
- package/src/tasks/copy-project-icons.js +1 -1
- package/src/tasks/create-redirect-page.js +1 -1
- package/src/tasks/create-sitemap.js +1 -1
- package/src/tasks/create-sym-links.js +1 -1
- package/src/tasks/execute-hooks.js +1 -1
- package/src/tasks/get-extra-files.js +1 -1
- package/src/tasks/get-hexo-config.js +1 -1
- package/src/tasks/get-main-config.js +1 -1
- package/src/tasks/get-project-config.js +3 -3
- package/src/tasks/macro-replacer.js +1 -1
- package/src/tasks/overwrite-api-guides.js +1 -1
- package/src/tasks/read-doc-sources.js +1 -1
- package/src/tasks/run-webpack.js +1 -1
- package/src/tasks/validate-html-w3c.js +1 -1
- package/src/tasks/validate-links.js +1 -1
- package/src/tasks/watcher.js +1 -1
- package/src/tasks/write-html-files.js +1 -1
- package/src/template/template-collection.js +1 -1
- package/themes/umberto/layout/_api-docs/_mixin/_api-see-source.pug +2 -1
- package/themes/umberto/layout/_api-docs/_mixin/_class-item.pug +0 -1
- package/themes/umberto/layout/_api-docs/_mixin/_dev-names.pug +9 -3
- package/themes/umberto/layout/_api-docs/_mixin/_fires-item.pug +2 -2
- package/themes/umberto/layout/_api-docs/_mixin/_hierarchy-item.pug +2 -2
- package/themes/umberto/layout/_api-docs/_mixin/_link-or-text.pug +40 -41
- package/themes/umberto/layout/_api-docs/_mixin/_method.pug +8 -2
- package/themes/umberto/layout/_api-docs/_mixin/_property.pug +1 -1
- package/themes/umberto/layout/_api-docs/_mixin/_related.pug +1 -1
- package/themes/umberto/layout/_api-docs/_mixin/_sidebox-list-item.pug +1 -1
- package/themes/umberto/layout/_api-docs/_mixin/_type.pug +175 -9
- package/themes/umberto/layout/_api-docs/_mixin/type-parameter.pug +18 -0
- package/themes/umberto/layout/_api-docs/_partial/filter.pug +16 -4
- package/themes/umberto/layout/_api-docs/_partial/type-parameters.pug +26 -0
- package/themes/umberto/layout/_api-docs/api-base.pug +2 -0
- package/themes/umberto/layout/_partial/google-optimize.pug +15 -0
- package/themes/umberto/layout/_partial/head.pug +1 -1
- package/themes/umberto/src/css/_api-content.scss +1 -1
- package/themes/umberto/src/css/_api-info-box.scss +1 -1
- package/themes/umberto/src/css/_api-props-filter.scss +1 -1
- package/themes/umberto/src/css/_api-see-source.scss +1 -1
- package/themes/umberto/src/css/_api-subheader.scss +1 -1
- package/themes/umberto/src/css/_api-tree.scss +1 -1
- package/themes/umberto/src/css/_badge.scss +1 -1
- package/themes/umberto/src/css/_collapsinglist.scss +1 -1
- package/themes/umberto/src/css/_content.scss +3 -2
- package/themes/umberto/src/css/_docsearch.scss +1 -1
- package/themes/umberto/src/css/_dropdown.scss +1 -1
- package/themes/umberto/src/css/_editor-icon.scss +1 -1
- package/themes/umberto/src/css/_feedback-widget.scss +1 -1
- package/themes/umberto/src/css/_footer.scss +1 -1
- package/themes/umberto/src/css/_formatted.scss +1 -1
- package/themes/umberto/src/css/_guide-content.scss +1 -1
- package/themes/umberto/src/css/_guide-sdk-tree.scss +1 -1
- package/themes/umberto/src/css/_loading-spinner.scss +1 -1
- package/themes/umberto/src/css/_main.scss +1 -1
- package/themes/umberto/src/css/_navigation.scss +1 -1
- package/themes/umberto/src/css/_notice.scss +1 -1
- package/themes/umberto/src/css/_print.scss +1 -1
- package/themes/umberto/src/css/_prism.scss +1 -1
- package/themes/umberto/src/css/_rwd-breadcrumbs.scss +1 -1
- package/themes/umberto/src/css/_rwd-menu.scss +1 -1
- package/themes/umberto/src/css/_secondary-navigation.scss +1 -1
- package/themes/umberto/src/css/_theme-dark.scss +1 -1
- package/themes/umberto/src/css/_toggler.scss +1 -1
- package/themes/umberto/src/css/_top.scss +1 -1
- package/themes/umberto/src/css/_tree.scss +7 -5
- package/themes/umberto/src/css/_warning-banner.scss +1 -1
- package/themes/umberto/src/css/components/_lightbox.scss +1 -1
- package/themes/umberto/src/css/helpers/_color.scss +1 -1
- package/themes/umberto/src/css/helpers/_font.scss +1 -1
- package/themes/umberto/src/css/helpers/_globals.scss +1 -1
- package/themes/umberto/src/css/helpers/_reset.scss +1 -1
- package/themes/umberto/src/css/helpers/_spacing.scss +1 -1
- package/themes/umberto/src/css/pages/_sdk.scss +1 -1
- package/themes/umberto/src/css/styles.scss +1 -1
- package/themes/umberto/src/js/_anchors.js +1 -1
- package/themes/umberto/src/js/_apisearch.js +1 -1
- package/themes/umberto/src/js/_apitree.js +1 -1
- package/themes/umberto/src/js/_collapsables.js +1 -1
- package/themes/umberto/src/js/_copymobileapinavigation.js +1 -1
- package/themes/umberto/src/js/_devnames.js +1 -1
- package/themes/umberto/src/js/_dropdowns.js +1 -1
- package/themes/umberto/src/js/_filtering.js +2 -1
- package/themes/umberto/src/js/_imageModal.js +1 -1
- package/themes/umberto/src/js/_pagenavigation.js +1 -1
- package/themes/umberto/src/js/_prism.js +1 -1
- package/themes/umberto/src/js/_rwdmenu.js +1 -1
- package/themes/umberto/src/js/_samplecode.js +1 -1
- package/themes/umberto/src/js/_sidenavigation.js +1 -1
- package/themes/umberto/src/js/_toc.js +1 -1
- package/themes/umberto/src/js/_tooltips.js +1 -1
- package/themes/umberto/src/js/_warningbanner.js +1 -1
- package/themes/umberto/src/js/app.js +1 -1
package/.eslintrc.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Copyright (c) 2017-
|
|
2
|
+
* @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
3
|
* For licensing, see LICENSE.md.
|
|
4
4
|
*/
|
|
5
5
|
|
|
@@ -10,7 +10,7 @@ module.exports = {
|
|
|
10
10
|
rules: {
|
|
11
11
|
'ckeditor5-rules/license-header': [ 'error', { headerLines: [
|
|
12
12
|
'/**',
|
|
13
|
-
' * @license Copyright (c) 2017-
|
|
13
|
+
' * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.',
|
|
14
14
|
' * For licensing, see LICENSE.md.',
|
|
15
15
|
' */'
|
|
16
16
|
] } ]
|
package/LICENSE.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Software License Agreement
|
|
2
2
|
==========================
|
|
3
3
|
|
|
4
|
-
Copyright (c) 2017-
|
|
4
|
+
Copyright (c) 2017-2023, [CKSource](http://cksource.com) Holding sp. z o.o. All rights reserved.
|
|
5
5
|
|
|
6
6
|
Licensed under the terms of [MIT License](https://opensource.org/licenses/MIT).
|
|
7
7
|
|
package/README.md
CHANGED
|
@@ -108,6 +108,7 @@ You can also have a look at [CKEditor5](https://github.com/ckeditor/ckeditor5/tr
|
|
|
108
108
|
| `path` | Path where to look for documentation source files (Markdown files, images etc.). The path is relative to the location of `umberto.json`. |
|
|
109
109
|
| `startPage` | Path to page linked in drop down menu. If there is nothing provided, then `index.html` (from main project directory) is used. |
|
|
110
110
|
| `redirects` | Object where as a key is stored string representing `old-url` and as a value is stored string representing `new-url`. (_Currently redirects are used only in deployment scripts of big-bang docs._) |
|
|
111
|
+
| `googleoptimize` | `domains` - Array of whitelisted domains from which GO can be used; `id` - container ID |
|
|
111
112
|
| `googletagmanager` | `domains` - Array of whitelisted domains from which GA can be used; `gtm` - container ID |
|
|
112
113
|
| `googleanalytics` | `domains` - Array of whitelisted domains from which GA can be used; `config` - options passed to ga('create') method |
|
|
113
114
|
| `feedbackWidget` | `domains` - Array of whitelisted domains from which feedback widget can be used; `apiKey` - unique key for widget |
|
package/hexo-shim.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "umberto",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "CKSource Documentation builder",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"files": [
|
|
@@ -10,13 +10,14 @@
|
|
|
10
10
|
".editorconfig",
|
|
11
11
|
".eslintrc.js",
|
|
12
12
|
"hexo-config.json",
|
|
13
|
-
"hexo-shim.js"
|
|
13
|
+
"hexo-shim.js",
|
|
14
|
+
"scripts-dev/postinstall.js"
|
|
14
15
|
],
|
|
15
16
|
"dependencies": {
|
|
16
17
|
"@babel/core": "^7.18.10",
|
|
17
18
|
"@babel/polyfill": "^7.12.1",
|
|
18
19
|
"@babel/preset-env": "^7.18.10",
|
|
19
|
-
"@ckeditor/jsdoc-plugins": "^
|
|
20
|
+
"@ckeditor/jsdoc-plugins": "^32.0.1",
|
|
20
21
|
"babel-loader": "^8.2.5",
|
|
21
22
|
"chalk": "^4.1.0",
|
|
22
23
|
"cheerio": "^1.0.0-rc.12",
|
|
@@ -37,6 +38,7 @@
|
|
|
37
38
|
"jquery": "~3.6.0",
|
|
38
39
|
"js-beautify": "^1.14.4",
|
|
39
40
|
"lodash": "^4.17.21",
|
|
41
|
+
"markdown-it": "^13.0.1",
|
|
40
42
|
"markdown-it-expand-tabs": "^1.0.13",
|
|
41
43
|
"markdown-it-toc-and-anchor": "^4.2.0",
|
|
42
44
|
"medium-zoom": "^1.0.6",
|
|
@@ -54,7 +56,9 @@
|
|
|
54
56
|
"webpack": "^5.74.0"
|
|
55
57
|
},
|
|
56
58
|
"devDependencies": {
|
|
57
|
-
"@ckeditor/ckeditor5-dev-
|
|
59
|
+
"@ckeditor/ckeditor5-dev-bump-year": "^32.0.1",
|
|
60
|
+
"@ckeditor/ckeditor5-dev-ci": "^32.0.1",
|
|
61
|
+
"@ckeditor/ckeditor5-dev-release-tools": "^32.0.1",
|
|
58
62
|
"browser-sync": "^2.27.10",
|
|
59
63
|
"chai": "^4.3.6",
|
|
60
64
|
"chokidar": "^3.5.3",
|
|
@@ -71,7 +75,7 @@
|
|
|
71
75
|
"npm": ">=5.7.1"
|
|
72
76
|
},
|
|
73
77
|
"scripts": {
|
|
74
|
-
"postinstall": "node ./scripts/postinstall.js",
|
|
78
|
+
"postinstall": "node ./scripts-dev/postinstall.js",
|
|
75
79
|
"dev:build-single": "node ./scripts-dev/build-single.js",
|
|
76
80
|
"dev:build-multi": "node ./scripts-dev/build-multi.js",
|
|
77
81
|
"dev:serve": "node ./scripts-dev/serve.js",
|
|
@@ -101,6 +105,6 @@
|
|
|
101
105
|
"packages/**"
|
|
102
106
|
],
|
|
103
107
|
"hexo": {
|
|
104
|
-
"version": "6.
|
|
108
|
+
"version": "6.3.0"
|
|
105
109
|
}
|
|
106
110
|
}
|
package/scripts/helper/u-toc.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Copyright (c) 2017-
|
|
2
|
+
* @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
3
|
* For licensing, see LICENSE.md.
|
|
4
4
|
*/
|
|
5
5
|
|
|
@@ -11,6 +11,9 @@ const chalk = require( 'chalk' );
|
|
|
11
11
|
|
|
12
12
|
const LINK_REGEXP = /\\?{(?:@linkapi|@link|@linksdk|@linkexample)\s+[^{]+?({[^}]+})?[^{}]*\\?}/g;
|
|
13
13
|
|
|
14
|
+
const findTargetDoclet = require( '../../src/api-builder/utils/findtargetdoclet' );
|
|
15
|
+
const { hasDedicatedApiPages, LONG_NAME_LABEL_REGEXP } = require( '../../src/api-builder/utils/utils' );
|
|
16
|
+
|
|
14
17
|
/**
|
|
15
18
|
* Converts @link or @linkapi tags into working links to guides or API docs.
|
|
16
19
|
*
|
|
@@ -68,8 +71,9 @@ function linkToApi( str, data, hexo, { relativeUrlHelper, isSilentError } ) {
|
|
|
68
71
|
}
|
|
69
72
|
|
|
70
73
|
const projectName = linkContentMatchResult[ 1 ] || data.projectName;
|
|
71
|
-
const
|
|
72
|
-
|
|
74
|
+
const { name, label } = splitLongname( linkContentMatchResult[ 2 ] );
|
|
75
|
+
const itemName = linkContentMatchResult[ 2 ].replace( LONG_NAME_LABEL_REGEXP, '' );
|
|
76
|
+
let linkText = linkContentMatchResult[ 3 ] || name;
|
|
73
77
|
|
|
74
78
|
// Support link texts with backticks, wrapping them in <code>.
|
|
75
79
|
// TODO - a naive implementation.
|
|
@@ -86,10 +90,25 @@ function linkToApi( str, data, hexo, { relativeUrlHelper, isSilentError } ) {
|
|
|
86
90
|
}
|
|
87
91
|
|
|
88
92
|
const baseItemName = getBaseItemName( itemName );
|
|
89
|
-
|
|
93
|
+
let hashWithoutPrefix = itemName.replace( baseItemName, '' ).slice( 1 );
|
|
90
94
|
const hash = hashWithoutPrefix ? `#${ hashWithoutPrefix }` : '';
|
|
91
95
|
const project = hexo.projectGlobals[ projectName ];
|
|
92
96
|
|
|
97
|
+
if ( hashWithoutPrefix.includes( '-' ) ) {
|
|
98
|
+
let [ type, description ] = hashWithoutPrefix.split( '-' );
|
|
99
|
+
|
|
100
|
+
// JSDuck replaces `$` with `s-`.
|
|
101
|
+
if ( type === 's' ) {
|
|
102
|
+
description = `s-${ description }`;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if ( type === 'event' ) {
|
|
106
|
+
hashWithoutPrefix = type;
|
|
107
|
+
} else {
|
|
108
|
+
hashWithoutPrefix = description;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
93
112
|
let apiSlug;
|
|
94
113
|
|
|
95
114
|
if ( project && project.config ) {
|
|
@@ -105,49 +124,42 @@ function linkToApi( str, data, hexo, { relativeUrlHelper, isSilentError } ) {
|
|
|
105
124
|
} );
|
|
106
125
|
}
|
|
107
126
|
|
|
108
|
-
const basePath = projectName === data.projectName ?
|
|
109
|
-
data.BASE_PATH :
|
|
110
|
-
`${ projectName }/latest`;
|
|
111
|
-
|
|
127
|
+
const basePath = projectName === data.projectName ? data.BASE_PATH : `${ projectName }/latest`;
|
|
112
128
|
const fileName = getFileName( baseItemName );
|
|
113
129
|
|
|
114
130
|
let href = relativeUrlHelper( data.path, upath.join( basePath, apiSlug, fileName + hash ) );
|
|
115
131
|
|
|
116
|
-
if ( project
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
const docletByExtraId = project.doclets.get( `id:${ itemName }` ).getFirst() ||
|
|
120
|
-
project.doclets.get( `id:${ baseItemName }#constant-${ hashWithoutPrefix }` ).getFirst();
|
|
121
|
-
|
|
122
|
-
// TODO The following code is buggy. E.g. for static method and instance method sharing the same name.
|
|
123
|
-
// Actually the `docletByBaseAndHash` should be just `doclet` - IDK why it was designed this way.
|
|
124
|
-
// This should be fixed in the future with tests on CKE5 and CKE4 codebases.
|
|
125
|
-
const docletByBaseAndHash = project.doclets.get( `ln:${ baseItemName }#${ hashWithoutPrefix }` ).getFirst() ||
|
|
126
|
-
project.doclets.get( `ln:${ baseItemName }.${ hashWithoutPrefix }` ).getFirst() ||
|
|
127
|
-
project.doclets.get( `ln:${ baseItemName }~${ hashWithoutPrefix }` ).getFirst() ||
|
|
128
|
-
project.doclets.get( `ln:${ baseItemName }#event:${ hashWithoutPrefix }` ).getFirst();
|
|
129
|
-
|
|
130
|
-
if ( doclet && [ 'module', 'class', 'typedef', 'mixin', 'interface', 'namespace' ].includes( doclet.kind ) ) {
|
|
131
|
-
// If there is a doclet, having own HTML page (e.g. a class doclet),
|
|
132
|
-
// exactly matching the longname from @link tag, link directly without hash.
|
|
133
|
-
href = relativeUrlHelper( data.path, upath.join( basePath, apiSlug, getFileName( itemName ) ) );
|
|
134
|
-
} else if ( docletByExtraId ) {
|
|
135
|
-
// When link tag follows notation: ...SomeClass#method-methodName.
|
|
136
|
-
href = relativeUrlHelper( data.path, upath.join( basePath, apiSlug, fileName + `#${ docletByExtraId.extraId }` ) );
|
|
137
|
-
} else if ( docletByBaseAndHash ) {
|
|
138
|
-
// When link tag follows notation: ...SomeClass#methodName, then must use 'extraId' as the hash.
|
|
139
|
-
href = relativeUrlHelper( data.path, upath.join( basePath, apiSlug, fileName + `#${ docletByBaseAndHash.extraId }` ) );
|
|
140
|
-
} else {
|
|
141
|
-
return onError( {
|
|
142
|
-
value: str,
|
|
143
|
-
source: data.source,
|
|
144
|
-
isSilent: isSilentError,
|
|
145
|
-
description: 'No doclet found. Link remain not transformed.'
|
|
146
|
-
} );
|
|
147
|
-
}
|
|
132
|
+
if ( !project || !project.doclets ) {
|
|
133
|
+
return getOutputLink( href, linkText, !!linkContentMatchResult[ 3 ] );
|
|
148
134
|
}
|
|
149
135
|
|
|
150
|
-
|
|
136
|
+
const targetDoclet = findTargetDoclet( project.doclets, {
|
|
137
|
+
module: itemName,
|
|
138
|
+
structure: baseItemName,
|
|
139
|
+
member: hashWithoutPrefix,
|
|
140
|
+
label
|
|
141
|
+
} );
|
|
142
|
+
|
|
143
|
+
if ( !targetDoclet ) {
|
|
144
|
+
return onError( {
|
|
145
|
+
value: str, source: data.source, isSilent: isSilentError, description: 'No doclet found. Link remain not transformed.'
|
|
146
|
+
} );
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
if ( hasDedicatedApiPages( targetDoclet ) ) {
|
|
150
|
+
href = relativeUrlHelper( data.path, upath.join( basePath, apiSlug, getFileName( itemName ) ) );
|
|
151
|
+
} else {
|
|
152
|
+
href = [
|
|
153
|
+
relativeUrlHelper( data.path, upath.join( basePath, apiSlug, fileName ) ),
|
|
154
|
+
encodeURI( targetDoclet.extraId )
|
|
155
|
+
].join( '#' );
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if ( !linkContentMatchResult[ 3 ] && targetDoclet.kind === 'event' ) {
|
|
159
|
+
linkText = `event-${ targetDoclet.name }`;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
return getOutputLink( href, linkText, !!linkContentMatchResult[ 3 ] );
|
|
151
163
|
}
|
|
152
164
|
|
|
153
165
|
/**
|
|
@@ -180,6 +192,14 @@ function getFileName( itemName ) {
|
|
|
180
192
|
return itemName.replace( /[/:.]/g, '_' ).replace( '~', '-' ) + '.html';
|
|
181
193
|
}
|
|
182
194
|
|
|
195
|
+
function getOutputLink( href, description, isCustomDescription ) {
|
|
196
|
+
if ( isCustomDescription ) {
|
|
197
|
+
return `<a href=${ href }>${ description }</a>`;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
return `<a href=${ href }><code>${ description }</code></a>`;
|
|
201
|
+
}
|
|
202
|
+
|
|
183
203
|
/**
|
|
184
204
|
* @param {String} str
|
|
185
205
|
* @param {Object} data
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Copyright (c) 2017-
|
|
2
|
+
* @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
3
|
* For licensing, see LICENSE.md.
|
|
4
4
|
*/
|
|
5
5
|
|
|
@@ -20,6 +20,8 @@ const splitLongname = require( '../helpers/split-longname' );
|
|
|
20
20
|
const githubUrlUtils = require( '../helpers/github-url' );
|
|
21
21
|
const getReportIssueWidgetUrl = require( '../../scripts/utils/getreportissuewidgeturl' );
|
|
22
22
|
|
|
23
|
+
const findTargetDoclet = require( './utils/findtargetdoclet' );
|
|
24
|
+
|
|
23
25
|
/**
|
|
24
26
|
* Renders HTML for every module, class, mixin etc.
|
|
25
27
|
*
|
|
@@ -523,15 +525,33 @@ module.exports = class ApiBuilder {
|
|
|
523
525
|
}
|
|
524
526
|
}
|
|
525
527
|
|
|
526
|
-
|
|
527
|
-
|
|
528
|
+
/**
|
|
529
|
+
* @protected
|
|
530
|
+
* @param {LongNameParts} parts
|
|
531
|
+
* @returns {String|null}
|
|
532
|
+
*/
|
|
533
|
+
_getUrlAddressFromLongname( parts ) {
|
|
534
|
+
if ( !parts.longnameBase ) {
|
|
535
|
+
return null;
|
|
536
|
+
}
|
|
528
537
|
|
|
529
|
-
|
|
538
|
+
// Get a doclet to which we link.
|
|
539
|
+
const targetDoclet = findTargetDoclet( this._dataCollection, {
|
|
540
|
+
structure: parts.longnameBase,
|
|
541
|
+
member: parts.name,
|
|
542
|
+
label: parts.label,
|
|
543
|
+
query: {
|
|
544
|
+
memberOnly: true
|
|
545
|
+
}
|
|
546
|
+
} );
|
|
547
|
+
|
|
548
|
+
if ( !targetDoclet ) {
|
|
530
549
|
return null;
|
|
531
|
-
} else if ( [ 'cfg', 'member', 'function', 'event' ].includes( doclet.kind ) ) {
|
|
532
|
-
return `${ doclet.memberof }#${ doclet.extraId }`;
|
|
533
|
-
} else {
|
|
534
|
-
return doclet.longname;
|
|
535
550
|
}
|
|
551
|
+
|
|
552
|
+
return [
|
|
553
|
+
targetDoclet.memberof,
|
|
554
|
+
encodeURI( targetDoclet.extraId )
|
|
555
|
+
].join( parts.isStatic ? '.' : '#' );
|
|
536
556
|
}
|
|
537
557
|
};
|