Skip to content

Commit

Permalink
Merge a9e1381 into 5a1975d
Browse files Browse the repository at this point in the history
  • Loading branch information
TN1ck committed May 25, 2014
2 parents 5a1975d + a9e1381 commit 6e3f63d
Show file tree
Hide file tree
Showing 5 changed files with 96 additions and 12 deletions.
2 changes: 2 additions & 0 deletions bin/markdown-pdf
Expand Up @@ -10,6 +10,7 @@ program.version(require('../package.json').version)
.option('-p, --phantom-path [path]', "Path to phantom binary")
.option('-h, --runnings-path [path]', "Path to runnings (header, footer)")
.option('-s, --css-path [path]', "Path to custom CSS file")
.option('-z, --highlight-css-path [path]', "Path to custom highlight-CSS file")
.option('-f, --paper-format [format]', "'A3', 'A4', 'A5', 'Legal', 'Letter' or 'Tabloid'")
.option('-r, --paper-orientation [orientation]', "'portrait' or 'landscape'")
.option('-b, --paper-border [measurement]', "Supported dimension units are: 'mm', 'cm', 'in', 'px'")
Expand All @@ -23,6 +24,7 @@ var opts = {
phantomPath: program.phantomPath
, runningsPath: program.runningsPath
, cssPath: program.cssPath
, highlightCssPath: program.highlightCssPath
, paperFormat: program.paperFormat
, paperOrientation: program.paperOrientation
, paperBorder: program.paperBorder
Expand Down
61 changes: 61 additions & 0 deletions highlight.css
@@ -0,0 +1,61 @@
.hll { background-color: #ffffcc }
.c { color: #999988; font-style: italic } /* Comment */
.err { color: #a61717; background-color: #e3d2d2 } /* Error */
.k { color: #000000; font-weight: bold } /* Keyword */
.o { color: #000000; font-weight: bold } /* Operator */
.cm { color: #999988; font-style: italic } /* Comment.Multiline */
.cp { color: #999999; font-weight: bold; font-style: italic } /* Comment.Preproc */
.c1 { color: #999988; font-style: italic } /* Comment.Single */
.cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
.gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.ge { color: #000000; font-style: italic } /* Generic.Emph */
.gr { color: #aa0000 } /* Generic.Error */
.gh { color: #999999 } /* Generic.Heading */
.gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.go { color: #888888 } /* Generic.Output */
.gp { color: #555555 } /* Generic.Prompt */
.gs { font-weight: bold } /* Generic.Strong */
.gu { color: #aaaaaa } /* Generic.Subheading */
.gt { color: #aa0000 } /* Generic.Traceback */
.kc { color: #000000; font-weight: bold } /* Keyword.Constant */
.kd { color: #000000; font-weight: bold } /* Keyword.Declaration */
.kn { color: #000000; font-weight: bold } /* Keyword.Namespace */
.kp { color: #000000; font-weight: bold } /* Keyword.Pseudo */
.kr { color: #000000; font-weight: bold } /* Keyword.Reserved */
.kt { color: #445588; font-weight: bold } /* Keyword.Type */
.m { color: #009999 } /* Literal.Number */
.s { color: #d01040 } /* Literal.String */
.na { color: #008080 } /* Name.Attribute */
.nb { color: #0086B3 } /* Name.Builtin */
.nc { color: #445588; font-weight: bold } /* Name.Class */
.no { color: #008080 } /* Name.Constant */
.nd { color: #3c5d5d; font-weight: bold } /* Name.Decorator */
.ni { color: #800080 } /* Name.Entity */
.ne { color: #990000; font-weight: bold } /* Name.Exception */
.nf { color: #990000; font-weight: bold } /* Name.Function */
.nl { color: #990000; font-weight: bold } /* Name.Label */
.nn { color: #555555 } /* Name.Namespace */
.nt { color: #000080 } /* Name.Tag */
.nv { color: #008080 } /* Name.Variable */
.ow { color: #000000; font-weight: bold } /* Operator.Word */
.w { color: #bbbbbb } /* Text.Whitespace */
.mf { color: #009999 } /* Literal.Number.Float */
.mh { color: #009999 } /* Literal.Number.Hex */
.mi { color: #009999 } /* Literal.Number.Integer */
.mo { color: #009999 } /* Literal.Number.Oct */
.sb { color: #d01040 } /* Literal.String.Backtick */
.sc { color: #d01040 } /* Literal.String.Char */
.sd { color: #d01040 } /* Literal.String.Doc */
.s2 { color: #d01040 } /* Literal.String.Double */
.se { color: #d01040 } /* Literal.String.Escape */
.sh { color: #d01040 } /* Literal.String.Heredoc */
.si { color: #d01040 } /* Literal.String.Interpol */
.sx { color: #d01040 } /* Literal.String.Other */
.sr { color: #009926 } /* Literal.String.Regex */
.s1 { color: #d01040 } /* Literal.String.Single */
.ss { color: #990073 } /* Literal.String.Symbol */
.bp { color: #999999 } /* Name.Builtin.Pseudo */
.vc { color: #008080 } /* Name.Variable.Class */
.vg { color: #008080 } /* Name.Variable.Global */
.vi { color: #008080 } /* Name.Variable.Instance */
.il { color: #009999 } /* Literal.Number.Integer.Long */
21 changes: 13 additions & 8 deletions lib-phantom/markdown-pdf.js
Expand Up @@ -3,7 +3,7 @@ var system = require("system")
, fs = require("fs")

// Read in arguments
var args = ["in", "out", "runningsPath", "cssPath", "paperFormat", "paperOrientation", "paperBorder", "renderDelay", "jsonPath"].reduce(function (args, name, i) {
var args = ["in", "out", "runningsPath", "cssPath", "highlightCssPath", "paperFormat", "paperOrientation", "paperBorder", "renderDelay", "jsonPath"].reduce(function (args, name, i) {
args[name] = system.args[i + 1]
return args
}, {})
Expand All @@ -17,17 +17,22 @@ page.open(page.libraryPath + "/../html5bp/index.html", function (status) {
}

// Add custom CSS to the page
page.evaluate(function(cssPath) {
page.evaluate(function(cssPaths) {

var head = document.querySelector("head")
var css = document.createElement("link")

css.rel = "stylesheet"
css.href = cssPath

head.appendChild(css)
cssPaths.forEach(function(cssPath) {

var css = document.createElement("link")

css.rel = "stylesheet"
css.href = cssPath

head.appendChild(css)

});

}, args.cssPath)
}, [args.cssPath, args.highlightCssPath])

// Add the HTML to the page
page.evaluate(function(html) {
Expand Down
21 changes: 18 additions & 3 deletions lib/markdown-pdf.js
Expand Up @@ -3,6 +3,7 @@ var fs = require("fs")
, through = require("through")
, extend = require("extend")
, marked = require("marked")
, pygments = require('pygmentize-bundled')
, tmp = require("tmp")
, childProcess = require("child_process")
, duplexer = require("duplexer")
Expand All @@ -15,6 +16,7 @@ function markdownpdf (opts) {
opts.phantomPath = opts.phantomPath || require("phantomjs").path
opts.runningsPath = path.resolve(__dirname + "/..", opts.runningsPath || '') || __dirname + "/runnings.js"
opts.cssPath = opts.cssPath || __dirname + "/../pdf.css"
opts.highlightCssPath = opts.highlightCssPath || __dirname + "/../highlight.css"
opts.paperFormat = opts.paperFormat || "A4"
opts.paperOrientation = opts.paperOrientation || "portrait"
opts.paperBorder = opts.paperBorder || "1cm"
Expand All @@ -24,15 +26,27 @@ function markdownpdf (opts) {

var md = ""

// set options for marked
var markedOptions = {
highlight: function (code, lang, callback) {

pygments({ lang: lang.toLowerCase(), format: 'html' }, code, function (err, result) {
callback(err, result ? result.toString() : code)
})
}
}

// Argh! marked, why you no stream?
var mdToHtml = through(
function write (data) {
md += data
},
function end () {
var html = marked(md)
this.queue(html)
this.queue(null)
var queue = this.queue;
marked(md, markedOptions, function(err, html) {
queue(html)
queue(null)
})
}
)

Expand Down Expand Up @@ -62,6 +76,7 @@ function markdownpdf (opts) {
, tmpPdfPath
, opts.runningsPath
, opts.cssPath
, opts.highlightCssPath
, opts.paperFormat
, opts.paperOrientation
, opts.paperBorder
Expand Down
3 changes: 2 additions & 1 deletion package.json
Expand Up @@ -34,7 +34,8 @@
"through": "~2.3.4",
"extend": "~1.2.1",
"duplexer": "~0.1.1",
"stream-from-to": "~1.4.0"
"stream-from-to": "~1.4.0",
"pygmentize-bundled": "~2.1.1"
},
"devDependencies": {
"mocha": "~1.17.1",
Expand Down

0 comments on commit 6e3f63d

Please sign in to comment.