diff options
author | Samy Pessé <samypesse@gmail.com> | 2016-04-27 16:22:17 +0200 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2016-04-27 16:22:17 +0200 |
commit | e50422bce588ec5a0b5581bf3963b0995138de4c (patch) | |
tree | 5128b5759c2bed3d9cac21fa8de5ccc1b3ead7bb /lib/output/getModifiers.js | |
parent | 999882e72327e06dd2fd346ca13eccb1c7e8781f (diff) | |
download | gitbook-e50422bce588ec5a0b5581bf3963b0995138de4c.zip gitbook-e50422bce588ec5a0b5581bf3963b0995138de4c.tar.gz gitbook-e50422bce588ec5a0b5581bf3963b0995138de4c.tar.bz2 |
Use code TemplateBlock to highlight code
Diffstat (limited to 'lib/output/getModifiers.js')
-rw-r--r-- | lib/output/getModifiers.js | 42 |
1 files changed, 39 insertions, 3 deletions
diff --git a/lib/output/getModifiers.js b/lib/output/getModifiers.js index 34a0b9e..1dd62ba 100644 --- a/lib/output/getModifiers.js +++ b/lib/output/getModifiers.js @@ -1,25 +1,61 @@ var Modifiers = require('./modifiers'); var resolveFileToURL = require('./helper/resolveFileToURL'); +var Api = require('../api'); +var Plugins = require('../plugins'); +var Promise = require('../utils/promise'); +var defaultBlocks = require('../constants/defaultBlocks'); + +var CODEBLOCK = 'code'; /** - Return default modifier to prepare a page + Return default modifier to prepare a page for + rendering. @return <Array> */ function getModifiers(output, page) { var book = output.getBook(); + var plugins = output.getPlugins(); var glossary = book.getGlossary(); var entries = glossary.getEntries(); - var file = page.getFile(); + // Get TemplateBlock for highlighting + var blocks = Plugins.listBlocks(plugins); + var code = blocks.get(CODEBLOCK) || defaultBlocks.get(CODEBLOCK); + + // Current context + var context = Api.encodeGlobal(output); + return [ + // Normalize IDs on headings Modifiers.addHeadingId, + + // Resolve links (.md -> .html) Modifiers.resolveLinks.bind(null, file.getPath(), resolveFileToURL.bind(null, output) ), - Modifiers.annotateText.bind(null, entries) + + // Annotate text with glossary entries + Modifiers.annotateText.bind(null, entries), + + // Highlight code blocks using "code" block + Modifiers.highlightCode.bind(null, function(lang, source) { + return Promise(code.applyBlock({ + body: source, + kwargs: { + language: lang + } + }, context)) + .then(function(result) { + if (result.html === false) { + return { text: result.body }; + } else { + return { html: result.body }; + } + }); + }) ]; } |