diff --git a/config/jsdoc/api/conf.json b/config/jsdoc/api/conf.json index 5aa84df9eb..5c16911fdc 100644 --- a/config/jsdoc/api/conf.json +++ b/config/jsdoc/api/conf.json @@ -14,7 +14,7 @@ ] }, "plugins": [ - "plugins/markdown", + "config/jsdoc/api/plugins/markdown", "config/jsdoc/api/plugins/convert-types", "config/jsdoc/api/plugins/normalize-longnames", "config/jsdoc/api/plugins/inline-options", diff --git a/config/jsdoc/api/plugins/markdown.js b/config/jsdoc/api/plugins/markdown.js new file mode 100644 index 0000000000..5508d495dc --- /dev/null +++ b/config/jsdoc/api/plugins/markdown.js @@ -0,0 +1,111 @@ +/** + * Modified from JSDoc's plugins/markdown and lib/jsdoc/util/markdown modules + * (see https://github.com/jsdoc3/jsdoc/), which are licensed under the Apache 2 + * license (see http://www.apache.org/licenses/LICENSE-2.0). + * + * This version does not protect http(s) urls from being turned into links, and + * works around an issue with `~` characters in module paths by escaping them. + */ + +const marked = require('marked'); +const format = require('util').format; + +const tags = [ + 'author', + 'classdesc', + 'description', + 'exceptions', + 'params', + 'properties', + 'returns', + 'see', + 'summary' +]; + +const hasOwnProp = Object.prototype.hasOwnProperty; + +const markedRenderer = new marked.Renderer(); + +// Allow prettyprint to work on inline code samples +markedRenderer.code = function(code, language) { + const langClass = language ? ' lang-' + language : ''; + + return format('
%s
', + langClass, escapeCode(code)); +}; + +function escapeCode(source) { + return source.replace(/ OpenLayers v<?js= version ?> API - <?js= title ?> -