Skip to content

Commit

Permalink
doc: highlight deprecated API in ToC
Browse files Browse the repository at this point in the history
Highlight deprecated API methods/properties in "Table of Contents" for
increasing understandability. Adapted code to eslint standards.

PR-URL: #7189
Fixes: nodejs/nodejs.org#772
Reviewed-By: Jeremiah Senkpiel <[email protected]>
Reviewed-By: Roman Reiss <[email protected]>
Reviewed-By: Sakthipriyan Vairamani <[email protected]>
  • Loading branch information
ilfroloff authored and Myles Borins committed Nov 11, 2016
1 parent 97748c6 commit 0d21f95
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 4 deletions.
15 changes: 15 additions & 0 deletions doc/api_assets/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,21 @@ hr {
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 {
margin-bottom: .5em;
}
Expand Down
26 changes: 22 additions & 4 deletions tools/doc/html.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ const typeParser = require('./type-parser.js');

module.exports = toHTML;

const STABILITY_TEXT_REG_EXP = /(.*:)\s*(\d)([\s\S]*)/;

// customized heading without id attribute
var renderer = new marked.Renderer();
renderer.heading = function(text, level) {
Expand Down Expand Up @@ -153,8 +155,11 @@ function parseLists(input) {
var savedState = [];
var depth = 0;
var output = [];
let headingIndex = -1;
let heading = null;

output.links = input.links;
input.forEach(function(tok) {
input.forEach(function(tok, index) {
if (tok.type === 'blockquote_start') {
savedState.push(state);
state = 'MAYBE_STABILITY_BQ';
Expand All @@ -167,6 +172,17 @@ function parseLists(input) {
if ((tok.type === 'paragraph' && state === 'MAYBE_STABILITY_BQ') ||
tok.type === 'code') {
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);
output.push({ type: 'html', text: tok.text });
return;
Expand All @@ -178,6 +194,8 @@ function parseLists(input) {
if (state === null ||
(state === 'AFTERHEADING' && tok.type === 'heading')) {
if (tok.type === 'heading') {
headingIndex = index;
heading = tok;
state = 'AFTERHEADING';
}
output.push(tok);
Expand Down Expand Up @@ -280,7 +298,7 @@ function linkJsTypeDocs(text) {

function parseAPIHeader(text) {
text = text.replace(
/(.*:)\s(\d)([\s\S]*)/,
STABILITY_TEXT_REG_EXP,
'<pre class="api_stability api_stability_$2">$1 $2$3</pre>'
);
return text;
Expand Down Expand Up @@ -324,8 +342,8 @@ function buildToc(lexed, filename, cb) {
const realFilename = path.basename(realFilenames[0], '.md');
const id = getId(realFilename + '_' + tok.text.trim());
toc.push(new Array((depth - 1) * 2 + 1).join(' ') +
'* <a href="#' + id + '">' +
tok.text + '</a>');
'* <span class="stability_' + tok.stability + '">' +
'<a href="#' + id + '">' + tok.text + '</a></span>');
tok.text += '<span><a class="mark" href="#' + id + '" ' +
'id="' + id + '">#</a></span>';
});
Expand Down

0 comments on commit 0d21f95

Please sign in to comment.