diff options
Diffstat (limited to 'packages/gitbook-markdown/lib')
-rw-r--r-- | packages/gitbook-markdown/lib/index.js | 3 | ||||
-rw-r--r-- | packages/gitbook-markdown/lib/page.js | 36 | ||||
-rw-r--r-- | packages/gitbook-markdown/lib/utils/lang.js | 19 |
3 files changed, 57 insertions, 1 deletions
diff --git a/packages/gitbook-markdown/lib/index.js b/packages/gitbook-markdown/lib/index.js index 4af6ac5..764448b 100644 --- a/packages/gitbook-markdown/lib/index.js +++ b/packages/gitbook-markdown/lib/index.js @@ -5,5 +5,6 @@ module.exports = { summary: require("./summary"), glossary: require("./glossary"), langs: require("./langs"), - readme: require("./readme") + readme: require("./readme"), + page: require("./page") }; diff --git a/packages/gitbook-markdown/lib/page.js b/packages/gitbook-markdown/lib/page.js new file mode 100644 index 0000000..1adfcf8 --- /dev/null +++ b/packages/gitbook-markdown/lib/page.js @@ -0,0 +1,36 @@ +var Q = require('q'); +var _ = require('lodash'); +var kramed = require('kramed'); +var hljs = require('highlight.js'); + +var lnormalize = require('./utils/lang').normalize; + +function parsePage(src) { + var options = _.extend({}, kramed.defaults, { + // Synchronous highlighting with highlight.js + highlight: function (code, lang) { + if(!lang) return code; + + // Normalize lang + lang = lnormalize(lang); + + try { + return hljs.highlight(lang, code).value; + } catch(e) { } + + return code; + } + }); + + return { + sections: [ + { + type: "normal", + content: kramed(src, options) + } + ] + }; +} + +// Exports +module.exports = parsePage; diff --git a/packages/gitbook-markdown/lib/utils/lang.js b/packages/gitbook-markdown/lib/utils/lang.js new file mode 100644 index 0000000..9da737b --- /dev/null +++ b/packages/gitbook-markdown/lib/utils/lang.js @@ -0,0 +1,19 @@ +var MAP = { + 'py': 'python', + 'js': 'javascript', + 'rb': 'ruby', + 'csharp': 'cs', +}; + +function normalize(lang) { + if(!lang) { return null; } + + var lower = lang.toLowerCase(); + return MAP[lower] || lower; +} + +// Exports +module.exports = { + normalize: normalize, + MAP: MAP +}; |