Browse Source

doc: highlight deprecated API in ToC

Highlight deprecated API methods/properties in "Table of Contents" for
increasing understandability. Adapted code to eslint standards.

PR-URL: https://github.com/nodejs/node/pull/7189
Fixes: https://github.com/nodejs/nodejs.org/issues/772
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Reviewed-By: Roman Reiss <me@silverwind.io>
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
v4.x
Ilya Frolov 8 years ago
committed by Myles Borins
parent
commit
695ee1e77b
  1. 15
      doc/api_assets/style.css
  2. 26
      tools/doc/html.js

15
doc/api_assets/style.css

@ -330,6 +330,21 @@ hr {
margin-top: .666em; margin-top: .666em;
} }
#toc .stability_0::after {
background-color: #d50027;
color: #fff;
}
#toc .stability_0::after {
content: "deprecated";
font-size: .8em;
position: relative;
top: -.18em;
left: .5em;
padding: 0 .3em .2em;
border-radius: 3px;
}
#apicontent li { #apicontent li {
margin-bottom: .5em; margin-bottom: .5em;
} }

26
tools/doc/html.js

@ -9,6 +9,8 @@ const typeParser = require('./type-parser.js');
module.exports = toHTML; module.exports = toHTML;
const STABILITY_TEXT_REG_EXP = /(.*:)\s*(\d)([\s\S]*)/;
// customized heading without id attribute // customized heading without id attribute
var renderer = new marked.Renderer(); var renderer = new marked.Renderer();
renderer.heading = function(text, level) { renderer.heading = function(text, level) {
@ -153,8 +155,11 @@ function parseLists(input) {
var savedState = []; var savedState = [];
var depth = 0; var depth = 0;
var output = []; var output = [];
let headingIndex = -1;
let heading = null;
output.links = input.links; output.links = input.links;
input.forEach(function(tok) { input.forEach(function(tok, index) {
if (tok.type === 'blockquote_start') { if (tok.type === 'blockquote_start') {
savedState.push(state); savedState.push(state);
state = 'MAYBE_STABILITY_BQ'; state = 'MAYBE_STABILITY_BQ';
@ -167,6 +172,17 @@ function parseLists(input) {
if ((tok.type === 'paragraph' && state === 'MAYBE_STABILITY_BQ') || if ((tok.type === 'paragraph' && state === 'MAYBE_STABILITY_BQ') ||
tok.type === 'code') { tok.type === 'code') {
if (tok.text.match(/Stability:.*/g)) { if (tok.text.match(/Stability:.*/g)) {
const stabilityMatch = tok.text.match(STABILITY_TEXT_REG_EXP);
const stability = Number(stabilityMatch[2]);
const isStabilityIndex =
index - 2 === headingIndex || // general
index - 3 === headingIndex; // with api_metadata block
if (heading && isStabilityIndex) {
heading.stability = stability;
headingIndex = -1;
heading = null;
}
tok.text = parseAPIHeader(tok.text); tok.text = parseAPIHeader(tok.text);
output.push({ type: 'html', text: tok.text }); output.push({ type: 'html', text: tok.text });
return; return;
@ -178,6 +194,8 @@ function parseLists(input) {
if (state === null || if (state === null ||
(state === 'AFTERHEADING' && tok.type === 'heading')) { (state === 'AFTERHEADING' && tok.type === 'heading')) {
if (tok.type === 'heading') { if (tok.type === 'heading') {
headingIndex = index;
heading = tok;
state = 'AFTERHEADING'; state = 'AFTERHEADING';
} }
output.push(tok); output.push(tok);
@ -280,7 +298,7 @@ function linkJsTypeDocs(text) {
function parseAPIHeader(text) { function parseAPIHeader(text) {
text = text.replace( text = text.replace(
/(.*:)\s(\d)([\s\S]*)/, STABILITY_TEXT_REG_EXP,
'<pre class="api_stability api_stability_$2">$1 $2$3</pre>' '<pre class="api_stability api_stability_$2">$1 $2$3</pre>'
); );
return text; return text;
@ -324,8 +342,8 @@ function buildToc(lexed, filename, cb) {
const realFilename = path.basename(realFilenames[0], '.md'); const realFilename = path.basename(realFilenames[0], '.md');
const id = getId(realFilename + '_' + tok.text.trim()); const id = getId(realFilename + '_' + tok.text.trim());
toc.push(new Array((depth - 1) * 2 + 1).join(' ') + toc.push(new Array((depth - 1) * 2 + 1).join(' ') +
'* <a href="#' + id + '">' + '* <span class="stability_' + tok.stability + '">' +
tok.text + '</a>'); '<a href="#' + id + '">' + tok.text + '</a></span>');
tok.text += '<span><a class="mark" href="#' + id + '" ' + tok.text += '<span><a class="mark" href="#' + id + '" ' +
'id="' + id + '">#</a></span>'; 'id="' + id + '">#</a></span>';
}); });

Loading…
Cancel
Save