doc: update style for iojs
* updates the styling for the iojs docs * pulls the processing step for markdown files into a separate module * adds the ability to insert comments into the markdown PR-URL: https://github.com/iojs/io.js/pull/297 Fixes: https://github.com/iojs/iojs.github.io/issues/23 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This commit is contained in:
parent
3a85eac4ec
commit
9120f2b1fd
@ -1,3 +1,5 @@
|
||||
@// NB(chrisdickinson): if you move this file, be sure to update tools/doc/html.js to
|
||||
@// point at the new location.
|
||||
* [About these Docs](documentation.html)
|
||||
* [Synopsis](synopsis.html)
|
||||
* [Assertion Testing](assert.html)
|
||||
|
@ -9,16 +9,17 @@
|
||||
}
|
||||
|
||||
.sh_sourceCode .sh_keyword {
|
||||
color: #c96;
|
||||
color: #338;
|
||||
}
|
||||
|
||||
.sh_sourceCode .sh_string,
|
||||
.sh_sourceCode .sh_regexp,
|
||||
.sh_sourceCode .sh_number,
|
||||
.sh_sourceCode .sh_specialchar {
|
||||
color: #690;
|
||||
color: #E54305;
|
||||
}
|
||||
|
||||
.sh_sourceCode .sh_comment {
|
||||
color: #666;
|
||||
font-weight: lighter;
|
||||
}
|
||||
|
@ -4,91 +4,100 @@ html {
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Verdana, Tahoma, sans-serif;
|
||||
font-size: 14px;
|
||||
line-height: 180%;
|
||||
color: black;
|
||||
background-color: white;
|
||||
margin: 0; padding: 49px 0 0 0;
|
||||
border-top: 6px #8CC84B solid;
|
||||
font-family: "Lato", "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Verdana, Tahoma, sans-serif;
|
||||
font-size: 62.5%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
color: #3a3a3a;
|
||||
background: #fcfefa;
|
||||
}
|
||||
|
||||
#content {
|
||||
font-size: 1.8em;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #480;
|
||||
text-decoration: underline;
|
||||
color: #FE5210;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color: #46483e;
|
||||
text-decoration: underline;
|
||||
color: #FE7110;
|
||||
}
|
||||
|
||||
a:hover,
|
||||
a:focus {
|
||||
text-decoration: none;
|
||||
color: #FFA158;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
code a:hover {
|
||||
background: none;
|
||||
color: #b950b7;
|
||||
}
|
||||
|
||||
#changelog #gtoc {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#gtoc {
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
#gtoc p {
|
||||
margin: 0;
|
||||
font-size: 18px;
|
||||
line-height: 30px;
|
||||
}
|
||||
|
||||
#gtoc a {
|
||||
font-family: Georgia, FreeSerif, Times, serif;
|
||||
text-decoration: none;
|
||||
color: #46483e;
|
||||
}
|
||||
|
||||
#gtoc a:hover {
|
||||
color: #669900;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.notice {
|
||||
display: block;
|
||||
padding: 1em;
|
||||
margin: 1.4667em 0 2.9334em;
|
||||
background: #FFF6BF;
|
||||
color: #514721;
|
||||
border: 1px solid #FFD324;
|
||||
.api_stability_0,
|
||||
.api_stability_1,
|
||||
.api_stability_2,
|
||||
.api_stability_3,
|
||||
.api_stability_4,
|
||||
.api_stability_5 {
|
||||
color: white !important;
|
||||
margin: 0em 0 1.0em 0;
|
||||
font-family: "Lato", "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Verdana, Tahoma, sans-serif;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.notice p {
|
||||
margin: 0;
|
||||
.api_stability_0 *,
|
||||
.api_stability_1 *,
|
||||
.api_stability_2 *,
|
||||
.api_stability_3 *,
|
||||
.api_stability_4 *,
|
||||
.api_stability_5 * {
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
.api_stability_0 {
|
||||
border-color: #D60027;
|
||||
background-color: #D60027;
|
||||
}
|
||||
|
||||
.api_stability_1 {
|
||||
border-color: #EC5315;
|
||||
background-color: #EC5315;
|
||||
}
|
||||
|
||||
.api_stability_2 {
|
||||
border-color: #FFD700;
|
||||
background-color: #FFA000;
|
||||
}
|
||||
|
||||
.api_stability_3 {
|
||||
border-color: #AEC516;
|
||||
background-color: #AEC516;
|
||||
}
|
||||
|
||||
.api_stability_4 {
|
||||
border-color: #009431;
|
||||
background-color: #009431;
|
||||
}
|
||||
|
||||
.api_stability_5 {
|
||||
border-color: #0084B6;
|
||||
background-color: #0084B6;
|
||||
}
|
||||
|
||||
ul.plain {
|
||||
@ -100,14 +109,20 @@ abbr {
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 0 0 1.4667em 0;
|
||||
position: relative;
|
||||
text-rendering: optimizeLegibility;
|
||||
margin: 0 0 1em 0;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
||||
#apicontent > *:last-child {
|
||||
margin-bottom: 0;
|
||||
padding-bottom: 2.0em;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
margin: 0 0 1.4667em 0;
|
||||
margin: 0 0 1.5em 0;
|
||||
}
|
||||
|
||||
th, td {
|
||||
@ -115,23 +130,14 @@ th, td {
|
||||
}
|
||||
|
||||
table p {
|
||||
margin: 0 1ex;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align:left;
|
||||
}
|
||||
|
||||
.apidoc #apicontent p,
|
||||
.apidoc #apicontent li {
|
||||
font-size: 15px;
|
||||
line-height: 22px;
|
||||
color: #000;
|
||||
font-family: Georgia, FreeSerif, Times, serif;
|
||||
}
|
||||
|
||||
ol, ul, dl {
|
||||
margin: 0 0 1em 0;
|
||||
margin: 0 0 0.6em 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
@ -141,12 +147,6 @@ dl ul, dl ol, dl dl {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
ol p:first-child,
|
||||
ul p:first-child,
|
||||
dl p:first-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
ul, ol {
|
||||
margin-left: 2em;
|
||||
}
|
||||
@ -166,25 +166,20 @@ dd + dt.pre {
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-family: Helvetica, Arial, sans-serif;
|
||||
color: #000;
|
||||
color: #301004;
|
||||
text-rendering: optimizeLegibility;
|
||||
font-weight: 700;
|
||||
position: relative;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
header h1 {
|
||||
font-family: Georgia, FreeSerif, Times, serif;
|
||||
font-size: 30px;
|
||||
font-weight: normal;
|
||||
line-height: 36px;
|
||||
color: #480;
|
||||
margin: 15px 0 11px;
|
||||
line-height: 2.0em;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 29px;
|
||||
line-height: 33px;
|
||||
margin: 2em 0 15px;
|
||||
#apicontent {
|
||||
padding-top: 1.0em;
|
||||
}
|
||||
|
||||
#toc + h1 {
|
||||
@ -193,9 +188,8 @@ h1 {
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.4em;
|
||||
line-height: 1.0909em;
|
||||
margin: 1.5em 0 0.5em;
|
||||
font-size: 1.5em;
|
||||
margin: 1.0em 0 0.5em;
|
||||
}
|
||||
|
||||
h2 + h2 {
|
||||
@ -203,9 +197,8 @@ h2 + h2 {
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.3em;
|
||||
line-height: 1.1282em;
|
||||
margin: 2.2em 0 0.5em;
|
||||
font-size: 1.0em;
|
||||
margin: 1.5em 0 0.5em;
|
||||
}
|
||||
|
||||
h3 + h3 {
|
||||
@ -218,7 +211,6 @@ h2, h3, h4 {
|
||||
}
|
||||
|
||||
h1 span, h2 span, h3 span, h4 span {
|
||||
font-size: 25px;
|
||||
position: absolute;
|
||||
display: block;
|
||||
top: 0;
|
||||
@ -234,19 +226,9 @@ h1 span a, h2 span a, h3 span a, h4 span a {
|
||||
font-size: 0.8em;
|
||||
color: #000;
|
||||
text-decoration: none;
|
||||
font-family: Helvetica, Arial, sans-serif;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h1 span a.top, h2 span a.top, h3 span a.top, h4 span a.top {
|
||||
/* XXX Get an image and clean up these two links
|
||||
* so that they look nice next to one another.
|
||||
* http://www.chrisglass.com/work/nodejs/website/v05/docs.html
|
||||
* -isaacs
|
||||
*/
|
||||
display: none;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 1.125em;
|
||||
line-height: 1.4em;
|
||||
@ -258,28 +240,29 @@ h6 {
|
||||
}
|
||||
|
||||
pre, tt, code {
|
||||
font-size: 14px;
|
||||
line-height: 1.5438em;
|
||||
line-height: 1.5em;
|
||||
font-family: Monaco, Consolas, "Lucida Console", monospace;
|
||||
margin: 0; padding: 0;
|
||||
}
|
||||
|
||||
.pre {
|
||||
font-family: Monaco, Consolas, "Lucida Console", monospace;
|
||||
line-height: 1.5438em;
|
||||
font-size: 0.95em;
|
||||
line-height: 1.5em;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
pre {
|
||||
padding: 1em 1.6em 1em 1.2em;
|
||||
padding: 1.0em 1.5em;
|
||||
vertical-align: top;
|
||||
background: #f8f8f8;
|
||||
border: 1px solid #e8e8e8;
|
||||
border-width: 1px 1px 1px 6px;
|
||||
margin: -0.5em 0 1.1em;
|
||||
background: #f2f5f0;
|
||||
margin: 0.166666em -4.0em 1.0em 0em;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
pre > code {
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
pre + h3 {
|
||||
margin-top: 2.225em;
|
||||
}
|
||||
@ -289,76 +272,77 @@ code.pre {
|
||||
}
|
||||
|
||||
#intro {
|
||||
width: 775px;
|
||||
margin: 0 auto;
|
||||
text-align: center;
|
||||
color: #d2d8ba;
|
||||
/* preload platform-icons.png */
|
||||
background-image: url(http://nodejs.org/images/platform-icons.png);
|
||||
background-repeat: no-repeat;
|
||||
background-position: -999em -999em;
|
||||
margin-top: 1.25em;
|
||||
margin-left: 1.0em;
|
||||
}
|
||||
|
||||
#intro.interior #logo {
|
||||
margin-left: -298px;
|
||||
border: 0;
|
||||
#intro a {
|
||||
color: #333;
|
||||
font-size: 1.25em;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
hr {
|
||||
background: none;
|
||||
border: medium none;
|
||||
border-bottom: 1px solid #ccc;
|
||||
margin: 1em 0;
|
||||
border-bottom: 1px solid #7a7a7a;
|
||||
margin: 0em 0em 1em 0;
|
||||
}
|
||||
|
||||
#toc {
|
||||
font-size: 15px;
|
||||
line-height: 1.5em;
|
||||
line-height: 22px;
|
||||
padding-top: 4px;
|
||||
}
|
||||
|
||||
#toc h2 {
|
||||
font-size: 15px;
|
||||
line-height: 21px;
|
||||
margin: 0 0 0.5em;
|
||||
color: #C73E09;
|
||||
margin-top: 0;
|
||||
font-size: 1.0em;
|
||||
line-height: 0;
|
||||
margin: 1.5em 0;
|
||||
}
|
||||
|
||||
#toc h2 a {
|
||||
float: right;
|
||||
#toc ul {
|
||||
font-size: 0.8125em;
|
||||
}
|
||||
|
||||
#toc hr {
|
||||
margin: 1em 0 2em;
|
||||
}
|
||||
|
||||
#toc ul,
|
||||
#api-section-index #apicontent ul li,
|
||||
#api-section-index #apicontent ul {
|
||||
font-family: Georgia, FreeSerif, Times, serif;
|
||||
color: #666 !important;
|
||||
}
|
||||
#toc ul ul { font-size: 1.0em; }
|
||||
|
||||
#toc ul a {
|
||||
text-decoration: none;
|
||||
border-bottom: 1px dotted #480;
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
#toc ul li {
|
||||
margin-bottom: 0.6666em;
|
||||
list-style: square outside;
|
||||
}
|
||||
|
||||
#toc li > ul {
|
||||
margin-top: 0.6666em;
|
||||
}
|
||||
|
||||
#toc ul a:hover,
|
||||
#toc ul a:focus {
|
||||
border-bottom: 1px dotted #fff;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
#apicontent li {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
#apicontent li:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
p tt,
|
||||
p code, span.type {
|
||||
background: #f8f8ff;
|
||||
border: 1px solid #dedede;
|
||||
padding: 0 0.2em;
|
||||
p code,
|
||||
li code {
|
||||
font-size: 0.9em;
|
||||
color: #040404;
|
||||
}
|
||||
|
||||
span.type {
|
||||
color: #222;
|
||||
}
|
||||
|
||||
#content {
|
||||
width: 953px;
|
||||
margin: 0 auto;
|
||||
overflow: visible;
|
||||
clear: both;
|
||||
@ -366,197 +350,73 @@ p code, span.type {
|
||||
}
|
||||
|
||||
#column1.interior {
|
||||
width: 749px;
|
||||
float: right;
|
||||
padding-top: 7px;
|
||||
padding-top: 11px;
|
||||
font-size: 18px;
|
||||
width: 702px;
|
||||
border-left: 13em solid #f2f5f0;
|
||||
padding-left: 2.0em;
|
||||
}
|
||||
|
||||
#column2.interior {
|
||||
width: 140px;
|
||||
width: 234px;
|
||||
float: left;
|
||||
margin-top: -55px;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
#column2.interior ul {
|
||||
margin-left: 0;
|
||||
#column2 ul {
|
||||
list-style: none;
|
||||
margin-left: 0em;
|
||||
margin-top: 1.25em;
|
||||
background: #f2f5f0;
|
||||
margin-bottom: 0;
|
||||
padding-bottom: 2.5em;
|
||||
}
|
||||
|
||||
#column2.interior li {
|
||||
list-style-type: none;
|
||||
#column2 ul li {
|
||||
padding-left: 1.4em;
|
||||
margin-bottom: 0.5em;
|
||||
padding-bottom: 0.5em;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
#column2.interior li a {
|
||||
display: block;
|
||||
padding: 0 0 0 35px;
|
||||
color: #878b78;
|
||||
text-transform: uppercase;
|
||||
text-decoration: none;
|
||||
font-size: 11px;
|
||||
line-height: 23px;
|
||||
#column2 ul li:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
#column2.interior li a.home { background: url(http://nodejs.org/images/icons-interior.png) no-repeat -156px 3px; }
|
||||
#column2.interior li a.download { background: url(http://nodejs.org/images/icons-interior.png) no-repeat -156px -21px; }
|
||||
#column2.interior li a.about { background: url(http://nodejs.org/images/icons-interior.png) no-repeat -156px -45px; }
|
||||
#column2.interior li a.npm { background: url(http://nodejs.org/images/icons-interior.png) no-repeat -156px -69px; }
|
||||
#column2.interior li a.docs { background: url(http://nodejs.org/images/icons-interior.png) no-repeat -156px -93px; }
|
||||
#column2.interior li a.blog { background: url(http://nodejs.org/images/icons-interior.png) no-repeat -156px -117px; }
|
||||
#column2.interior li a.community { background: url(http://nodejs.org/images/icons-interior.png) no-repeat -156px -141px; }
|
||||
#column2.interior li a.logos { background: url(http://nodejs.org/images/icons-interior.png) no-repeat -156px -165px; }
|
||||
#column2.interior li a.jobs { background: url(http://nodejs.org/images/icons-interior.png) no-repeat -156px -189px; }
|
||||
|
||||
#column2.interior li a.home.current { background-position: 2px 3px; }
|
||||
#column2.interior li a.download.current { background-position: 2px -21px; }
|
||||
#column2.interior li a.about.current { background-position: 2px -45px; }
|
||||
#column2.interior li a.npm.current { background-position: 2px -69px; }
|
||||
#column2.interior li a.docs.current { background-position: 2px -93px; }
|
||||
#column2.interior li a.blog.current { background-position: 2px -117px; }
|
||||
#column2.interior li a.community.current { background-position: 2px -141px; }
|
||||
#column2.interior li a.logos.current { background-position: 2px -165px; }
|
||||
#column2.interior li a.jobs.current { background-position: 2px -189px; }
|
||||
|
||||
#column2.interior li a.home:hover { background-position: -331px 3px; }
|
||||
#column2.interior li a.download:hover { background-position: -331px -21px; }
|
||||
#column2.interior li a.about:hover { background-position: -331px -45px; }
|
||||
#column2.interior li a.npm:hover { background-position: -331px -69px; }
|
||||
#column2.interior li a.docs:hover { background-position: -331px -93px; }
|
||||
#column2.interior li a.blog:hover { background-position: -331px -117px; }
|
||||
#column2.interior li a.community:hover { background-position: -331px -141px; }
|
||||
#column2.interior li a.logos:hover { background-position: -331px -165px; }
|
||||
#column2.interior li a.jobs:hover { background-position: -331px -189px; }
|
||||
|
||||
#column2.interior li a.current {
|
||||
color: #8cc84b;
|
||||
font-weight: bold;
|
||||
#column2 ul li a {
|
||||
color: #7a7a7a;
|
||||
}
|
||||
|
||||
#column2.interior li a:hover {
|
||||
color: #000000;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#column2.interior li + li {
|
||||
border-top: 1px solid #c1c7ac;
|
||||
}
|
||||
|
||||
#column2.interior p.twitter {
|
||||
padding-top: 20px;
|
||||
}
|
||||
|
||||
#column2.interior p.twitter a {
|
||||
background: url(http://nodejs.org/images/twitter-bird.png) no-repeat 0 4px;
|
||||
padding-left: 37px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#column2.interior p.twitter a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a.totop {
|
||||
font-family: "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Verdana, Tahoma, sans-serif;
|
||||
font-weight: bold;
|
||||
text-indent: -9999999px;
|
||||
background: url(http://nodejs.org/images/anchor.png) no-repeat top left;
|
||||
margin-right: 7px;
|
||||
display: block;
|
||||
width: 13px;
|
||||
border-bottom: 1px solid #cccccc;
|
||||
}
|
||||
|
||||
a.anchor {
|
||||
font-family: "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Verdana, Tahoma, sans-serif;
|
||||
font-weight: bold;
|
||||
text-indent: -9999999px;
|
||||
background: url(http://nodejs.org/images/anchor.png) no-repeat top right;
|
||||
display: block;
|
||||
width: 13px;
|
||||
border-bottom: 1px solid #cccccc;
|
||||
#column2 ul li a.active {
|
||||
color: #533;
|
||||
border-bottom: 1px solid #533;
|
||||
}
|
||||
|
||||
#footer {
|
||||
width: 942px;
|
||||
margin: 150px auto 55px auto;
|
||||
padding: 0;
|
||||
min-height: 300px;
|
||||
background: #333;
|
||||
color: white;
|
||||
}
|
||||
|
||||
#footer .joyent-logo {
|
||||
display:block;
|
||||
position:absolute;
|
||||
overflow:hidden;
|
||||
text-indent:-999em;
|
||||
height:100px;
|
||||
width:190px;
|
||||
z-index:999;
|
||||
span > .mark,
|
||||
span > .mark:visited {
|
||||
font-size: 18px;
|
||||
color: #ccc;
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
right: 0px;
|
||||
}
|
||||
|
||||
#footer p {
|
||||
font-size: 11px;
|
||||
line-height: 1em;
|
||||
padding: 0 0 0 195px;
|
||||
color: #666;
|
||||
span > .mark:hover {
|
||||
color: #FE7110;
|
||||
}
|
||||
|
||||
#footer p,
|
||||
#footer li {
|
||||
font-family: "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Verdana, Tahoma, sans-serif;
|
||||
th, td {
|
||||
padding: 0.75em 1.0em 0.75em 1.0em;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
#footer a {
|
||||
text-decoration: none;
|
||||
border: none;
|
||||
color: #480;
|
||||
}
|
||||
|
||||
#footer a:hover {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
#footer p a {
|
||||
border-bottom: 1px dotted #480;
|
||||
color: #878b78;
|
||||
}
|
||||
|
||||
#footer ul {
|
||||
background: url(http://nodejs.org/images/footer-logo-alt.png) left 17px no-repeat;
|
||||
padding: 23px 0 0 195px;
|
||||
height: 26px;
|
||||
margin-left: -1px;
|
||||
border-top: 1px solid #626557;
|
||||
}
|
||||
|
||||
#footer ul li {
|
||||
list-style-type: none;
|
||||
float: left;
|
||||
font-size: 12px;
|
||||
margin: 0 !important;
|
||||
padding: 0;
|
||||
height: 12px;
|
||||
}
|
||||
|
||||
#footer ul li a {
|
||||
margin: 0;
|
||||
padding: 0 6px 0 0;
|
||||
display: block;
|
||||
height: 12px;
|
||||
line-height: 12px;
|
||||
}
|
||||
|
||||
#footer ul li + li {
|
||||
margin-left: 3px;
|
||||
}
|
||||
|
||||
#footer ul li + li a {
|
||||
padding: 0 6px 0 6px;
|
||||
border-left: 1px solid #878b78;
|
||||
}
|
||||
|
||||
#footer ul li a.twitter {
|
||||
background: url(http://nodejs.org/images/twitter-bird.png) no-repeat 5px 0px;
|
||||
padding-left: 25px;
|
||||
th > *:last-child,
|
||||
td > *:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/* simpler clearfix */
|
||||
@ -567,3 +427,40 @@ a.anchor {
|
||||
clear: both;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1024px) {
|
||||
#content {
|
||||
font-size: 2.1em;
|
||||
}
|
||||
#column1.interior {
|
||||
border-left: 0;
|
||||
padding-left: 0.5em;
|
||||
padding-right: 0.5em;
|
||||
width: auto;
|
||||
}
|
||||
pre {
|
||||
margin-right: 0;
|
||||
}
|
||||
#column2 {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1024px) and (orientation: portrait) {
|
||||
#content {
|
||||
font-size: 2.4em;
|
||||
}
|
||||
#column1.interior {
|
||||
border-left: 0;
|
||||
padding-left: 0.5em;
|
||||
padding-right: 0.5em;
|
||||
width: auto;
|
||||
}
|
||||
pre {
|
||||
margin-right: 0;
|
||||
}
|
||||
#column2 {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2,36 +2,26 @@
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>__SECTION__ Node.js __VERSION__ Manual & Documentation</title>
|
||||
<title>__SECTION__ io.js __VERSION__ Manual & Documentation</title>
|
||||
<link href='http://fonts.googleapis.com/css?family=Lato:400,700,400italic' rel='stylesheet' type='text/css'>
|
||||
<link rel="stylesheet" href="assets/style.css">
|
||||
<link rel="stylesheet" href="assets/sh.css">
|
||||
<link rel="canonical" href="http://nodejs.org/api/__FILENAME__.html">
|
||||
<link rel="canonical" href="http://iojs.org/api/__FILENAME__.html">
|
||||
</head>
|
||||
<body class="alt apidoc" id="api-section-__FILENAME__">
|
||||
<div id="intro" class="interior">
|
||||
<a href="/" title="Go back to the home page">
|
||||
<img id="logo" src="http://nodejs.org/images/logo-light.png" alt="node.js">
|
||||
</a>
|
||||
</div>
|
||||
<div id="content" class="clearfix">
|
||||
<div id="column2" class="interior">
|
||||
<ul>
|
||||
<li><a href="/" class="home">Home</a></li>
|
||||
<li><a href="/download/" class="download">Download</a></li>
|
||||
<li><a href="/about/" class="about">About</a></li>
|
||||
<li><a href="http://npmjs.org/" class="npm">npm Registry</a></li>
|
||||
<li><a href="http://nodejs.org/api/" class="docs current">Docs</a></li>
|
||||
<li><a href="http://blog.nodejs.org" class="blog">Blog</a></li>
|
||||
<li><a href="/community/" class="community">Community</a></li>
|
||||
<li><a href="/logos/" class="logos">Logos</a></li>
|
||||
<li><a href="http://jobs.nodejs.org/" class="jobs">Jobs</a></li>
|
||||
</ul>
|
||||
<p class="twitter"><a href="http://twitter.com/nodejs">@nodejs</a></p>
|
||||
<div id="intro" class="interior">
|
||||
<a href="/" title="Go back to the home page">
|
||||
io.js (1)
|
||||
</a>
|
||||
</div>
|
||||
__GTOC__
|
||||
</div>
|
||||
|
||||
<div id="column1" class="interior">
|
||||
<div id="column1" data-id="__ID__" class="interior">
|
||||
<header>
|
||||
<h1>Node.js __VERSION__ Manual & Documentation</h1>
|
||||
<h1>io.js __VERSION__ Documentation</h1>
|
||||
<div id="gtoc">
|
||||
<p>
|
||||
<a href="index.html" name="toc">Index</a> |
|
||||
@ -53,34 +43,10 @@
|
||||
</div>
|
||||
</div>
|
||||
<div id="footer">
|
||||
<a href="http://joyent.com" class="joyent-logo">Joyent</a>
|
||||
<ul class="clearfix">
|
||||
<li><a href="/">Node.js</a></li>
|
||||
<li><a href="/download/">Download</a></li>
|
||||
<li><a href="/about/">About</a></li>
|
||||
<li><a href="http://npmjs.org/">npm Registry</a></li>
|
||||
<li><a href="http://nodejs.org/api/">Docs</a></li>
|
||||
<li><a href="http://blog.nodejs.org">Blog</a></li>
|
||||
<li><a href="/community/">Community</a></li>
|
||||
<li><a href="/logos/">Logos</a></li>
|
||||
<li><a href="http://jobs.nodejs.org/">Jobs</a></li>
|
||||
<li><a href="http://twitter.com/nodejs" class="twitter">@nodejs</a></li>
|
||||
</ul>
|
||||
|
||||
<p>Copyright <a href="http://joyent.com/">Joyent, Inc</a>, Node.js is a <a href="/trademark-policy.pdf">trademark</a> of Joyent, Inc. View <a href="https://raw.github.com/joyent/node/__VERSION__/LICENSE">license</a>.</p>
|
||||
</div>
|
||||
|
||||
<script src="../sh_main.js"></script>
|
||||
<script src="../sh_javascript.min.js"></script>
|
||||
<script>highlight(undefined, undefined, 'pre');</script>
|
||||
<script>
|
||||
window._gaq = [['_setAccount', 'UA-10874194-2'], ['_trackPageview']];
|
||||
(function(d, t) {
|
||||
var g = d.createElement(t),
|
||||
s = d.getElementsByTagName(t)[0];
|
||||
g.src = '//www.google-analytics.com/ga.js';
|
||||
s.parentNode.insertBefore(g, s);
|
||||
}(document, 'script'));
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -20,6 +20,7 @@
|
||||
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
// USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
var processIncludes = require('./preprocess.js');
|
||||
var marked = require('marked');
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
@ -52,48 +53,10 @@ console.error('Input file = %s', inputFile);
|
||||
fs.readFile(inputFile, 'utf8', function(er, input) {
|
||||
if (er) throw er;
|
||||
// process the input for @include lines
|
||||
processIncludes(input, next);
|
||||
processIncludes(inputFile, input, next);
|
||||
});
|
||||
|
||||
|
||||
var includeExpr = /^@include\s+([A-Za-z0-9-_]+)(?:\.)?([a-zA-Z]*)$/gmi;
|
||||
var includeData = {};
|
||||
function processIncludes(input, cb) {
|
||||
var includes = input.match(includeExpr);
|
||||
if (includes === null) return cb(null, input);
|
||||
var errState = null;
|
||||
console.error(includes);
|
||||
var incCount = includes.length;
|
||||
if (incCount === 0) cb(null, input);
|
||||
includes.forEach(function(include) {
|
||||
var fname = include.replace(/^@include\s+/, '');
|
||||
if (!fname.match(/\.markdown$/)) fname += '.markdown';
|
||||
|
||||
if (includeData.hasOwnProperty(fname)) {
|
||||
input = input.split(include).join(includeData[fname]);
|
||||
incCount--;
|
||||
if (incCount === 0) {
|
||||
return cb(null, input);
|
||||
}
|
||||
}
|
||||
|
||||
var fullFname = path.resolve(path.dirname(inputFile), fname);
|
||||
fs.readFile(fullFname, 'utf8', function(er, inc) {
|
||||
if (errState) return;
|
||||
if (er) return cb(errState = er);
|
||||
processIncludes(inc, function(er, inc) {
|
||||
if (errState) return;
|
||||
if (er) return cb(errState = er);
|
||||
incCount--;
|
||||
includeData[fname] = inc;
|
||||
input = input.split(include+'\n').join(includeData[fname]+'\n');
|
||||
if (incCount === 0) {
|
||||
return cb(null, input);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function next(er, input) {
|
||||
|
@ -22,17 +22,63 @@
|
||||
var fs = require('fs');
|
||||
var marked = require('marked');
|
||||
var path = require('path');
|
||||
var preprocess = require('./preprocess.js');
|
||||
|
||||
module.exports = toHTML;
|
||||
|
||||
// TODO(chrisdickinson): never stop vomitting / fix this.
|
||||
var gtocPath = path.resolve(path.join(__dirname, '..', '..', 'doc', 'api', '_toc.markdown'));
|
||||
var gtocLoading = null;
|
||||
var gtocData = null;
|
||||
|
||||
function toHTML(input, filename, template, cb) {
|
||||
var lexed = marked.lexer(input);
|
||||
fs.readFile(template, 'utf8', function(er, template) {
|
||||
if (er) return cb(er);
|
||||
render(lexed, filename, template, cb);
|
||||
if (gtocData) {
|
||||
return onGtocLoaded();
|
||||
}
|
||||
|
||||
if (gtocLoading === null) {
|
||||
gtocLoading = [onGtocLoaded];
|
||||
return loadGtoc(function(err, data) {
|
||||
if (err) throw err;
|
||||
gtocData = data;
|
||||
gtocLoading.forEach(function(xs) {
|
||||
xs();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
if (gtocLoading) {
|
||||
return gtocLoading.push(onGtocLoaded);
|
||||
}
|
||||
|
||||
function onGtocLoaded() {
|
||||
var lexed = marked.lexer(input);
|
||||
fs.readFile(template, 'utf8', function(er, template) {
|
||||
if (er) return cb(er);
|
||||
render(lexed, filename, template, cb);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function loadGtoc(cb) {
|
||||
fs.readFile(gtocPath, 'utf8', function(err, data) {
|
||||
if (err) return cb(err);
|
||||
|
||||
preprocess(gtocPath, data, function(err, data) {
|
||||
if (err) return cb(err);
|
||||
|
||||
data = marked(data).replace(/<a href="(.*?)"/gm, function(a, m) {
|
||||
return '<a class="nav-' + toID(m) + '" href="' + m + '"';
|
||||
});
|
||||
return cb(null, data);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function toID(filename) {
|
||||
return filename.replace('.html', '').replace(/[^\w\-]/g, '-').replace(/-+/g, '-');
|
||||
}
|
||||
|
||||
function render(lexed, filename, template, cb) {
|
||||
// get the section
|
||||
var section = getSection(lexed);
|
||||
@ -46,10 +92,17 @@ function render(lexed, filename, template, cb) {
|
||||
buildToc(lexed, filename, function(er, toc) {
|
||||
if (er) return cb(er);
|
||||
|
||||
var id = toID(path.basename(filename));
|
||||
|
||||
template = template.replace(/__ID__/g, id);
|
||||
template = template.replace(/__FILENAME__/g, filename);
|
||||
template = template.replace(/__SECTION__/g, section);
|
||||
template = template.replace(/__VERSION__/g, process.version);
|
||||
template = template.replace(/__TOC__/g, toc);
|
||||
template = template.replace(
|
||||
/__GTOC__/g,
|
||||
gtocData.replace('class="nav-' + id, 'class="nav-' + id + ' active')
|
||||
);
|
||||
|
||||
// content has to be the last thing we do with
|
||||
// the lexed tokens, because it's destructive.
|
||||
|
57
tools/doc/preprocess.js
Normal file
57
tools/doc/preprocess.js
Normal file
@ -0,0 +1,57 @@
|
||||
module.exports = preprocess;
|
||||
|
||||
var path = require('path');
|
||||
var fs = require('fs');
|
||||
|
||||
var includeExpr = /^@include\s+([A-Za-z0-9-_]+)(?:\.)?([a-zA-Z]*)$/gmi;
|
||||
var includeData = {};
|
||||
|
||||
function preprocess(inputFile, input, cb) {
|
||||
input = stripComments(input);
|
||||
processIncludes(inputFile, input, function (err, data) {
|
||||
if (err) return cb(err);
|
||||
|
||||
cb(null, data);
|
||||
});
|
||||
}
|
||||
|
||||
function stripComments(input) {
|
||||
return input.replace(/^@\/\/.*$/gmi, '');
|
||||
}
|
||||
|
||||
function processIncludes(inputFile, input, cb) {
|
||||
var includes = input.match(includeExpr);
|
||||
if (includes === null) return cb(null, input);
|
||||
var errState = null;
|
||||
console.error(includes);
|
||||
var incCount = includes.length;
|
||||
if (incCount === 0) cb(null, input);
|
||||
includes.forEach(function(include) {
|
||||
var fname = include.replace(/^@include\s+/, '');
|
||||
if (!fname.match(/\.markdown$/)) fname += '.markdown';
|
||||
|
||||
if (includeData.hasOwnProperty(fname)) {
|
||||
input = input.split(include).join(includeData[fname]);
|
||||
incCount--;
|
||||
if (incCount === 0) {
|
||||
return cb(null, input);
|
||||
}
|
||||
}
|
||||
|
||||
var fullFname = path.resolve(path.dirname(inputFile), fname);
|
||||
fs.readFile(fullFname, 'utf8', function(er, inc) {
|
||||
if (errState) return;
|
||||
if (er) return cb(errState = er);
|
||||
preprocess(inputFile, inc, function(er, inc) {
|
||||
if (errState) return;
|
||||
if (er) return cb(errState = er);
|
||||
incCount--;
|
||||
includeData[fname] = inc;
|
||||
input = input.split(include+'\n').join(includeData[fname]+'\n');
|
||||
if (incCount === 0) {
|
||||
return cb(null, input);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user