diff options
Diffstat (limited to 'lib/parse/renderer.js')
-rw-r--r-- | lib/parse/renderer.js | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/lib/parse/renderer.js b/lib/parse/renderer.js index 4b5c945..64c5602 100644 --- a/lib/parse/renderer.js +++ b/lib/parse/renderer.js @@ -1,14 +1,18 @@ var url = require('url'); var inherits = require('util').inherits; +var path = require('path'); + var marked = require('marked'); -function GitBookRenderer(options) { +function GitBookRenderer(options, extra_options) { if(!(this instanceof GitBookRenderer)) { - return new GitBookRenderer(options); + return new GitBookRenderer(options, extra_options); } GitBookRenderer.super_.call(this, options); + + this._extra_options = extra_options; } inherits(GitBookRenderer, marked.Renderer); @@ -39,6 +43,16 @@ GitBookRenderer.prototype.link = function(href, title, text) { // Parsed version of the url var parsed = url.parse(href); + var o = this._extra_options; + // Relative link, rewrite it to point to github repo + if(parsed.path[0] != '/' && o && o.repo && o.dir) { + href = 'https://github.com/' + o.repo + '/blob' + path.normalize(path.join( + '/', + o.dir, + href + )); + parsed = url.parse(href); + } // Generate HTML for link var out = '<a href="' + href + '"'; |