diff options
author | Samy Pessé <samypesse@gmail.com> | 2016-02-20 16:02:51 +0100 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2016-02-20 16:02:51 +0100 |
commit | a22539a91eea4101d244cdaeb5c61e31376ff4bc (patch) | |
tree | fb3cd337b3082134b797e51431ee40c3a7101ecc | |
parent | 89378c3883140ce6e6c74e71651270f19b1ee441 (diff) | |
download | gitbook-a22539a91eea4101d244cdaeb5c61e31376ff4bc.zip gitbook-a22539a91eea4101d244cdaeb5c61e31376ff4bc.tar.gz gitbook-a22539a91eea4101d244cdaeb5c61e31376ff4bc.tar.bz2 |
Add new gitbook-markdown and gitbook-asciidoc
-rw-r--r-- | lib/book.js | 2 | ||||
-rw-r--r-- | lib/cli/watch.js | 2 | ||||
-rw-r--r-- | lib/page/index.js | 2 | ||||
-rw-r--r-- | lib/parsers.js | 60 | ||||
-rw-r--r-- | lib/template/index.js | 2 | ||||
-rw-r--r-- | lib/utils/promise.js | 12 | ||||
-rw-r--r-- | package.json | 3 |
7 files changed, 78 insertions, 5 deletions
diff --git a/lib/book.js b/lib/book.js index 40c9686..cbb85c0 100644 --- a/lib/book.js +++ b/lib/book.js @@ -1,7 +1,6 @@ var _ = require('lodash'); var path = require('path'); var Ignore = require('ignore'); -var parsers = require('gitbook-parsers'); var Config = require('./config'); var Readme = require('./backbone/readme'); @@ -13,6 +12,7 @@ var pathUtil = require('./utils/path'); var error = require('./utils/error'); var Promise = require('./utils/promise'); var Logger = require('./utils/logger'); +var parsers = require('./parsers'); /* diff --git a/lib/cli/watch.js b/lib/cli/watch.js index 36c42cc..b98faeb 100644 --- a/lib/cli/watch.js +++ b/lib/cli/watch.js @@ -1,9 +1,9 @@ var _ = require('lodash'); var path = require('path'); var chokidar = require('chokidar'); -var parsers = require('gitbook-parsers'); var Promise = require('../utils/promise'); +var parsers = require('../parsers'); // Watch a folder and resolve promise once a file is modified function watch(dir) { diff --git a/lib/page/index.js b/lib/page/index.js index d8b5fff..2bdc951 100644 --- a/lib/page/index.js +++ b/lib/page/index.js @@ -1,11 +1,11 @@ var _ = require('lodash'); var path = require('path'); -var parsers = require('gitbook-parsers'); var direction = require('direction'); var error = require('../utils/error'); var pathUtil = require('../utils/path'); var location = require('../utils/location'); +var parsers = require('../parsers'); var HTMLPipeline = require('./html'); /* diff --git a/lib/parsers.js b/lib/parsers.js new file mode 100644 index 0000000..6899865 --- /dev/null +++ b/lib/parsers.js @@ -0,0 +1,60 @@ +var _ = require('lodash'); +var path = require('path'); + +var markdownParser = require('gitbook-markdown'); +var asciidocParser = require('gitbook-asciidoc'); + +var Promise = require('./utils/promise'); + +// This list is ordered by priority of parsers to use +var PARSERS = [ + createParser(markdownParser, { + name: 'markdown', + extensions: ['.md', '.markdown', '.mdown'] + }), + createParser(asciidocParser, { + name: 'asciidoc', + extensions: ['.adoc', '.asciidoc'] + }) +]; + + +// Prepare and compose a parser +function createParser(parser, base) { + var nparser = base; + + nparser.glossary = Promise.wrapfn(parser.glossary); + nparser.glossary.toText = Promise.wrapfn(parser.glossary.toText); + + nparser.summary = Promise.wrapfn(parser.summary); + nparser.summary.toText = Promise.wrapfn(parser.summary.toText); + + nparser.langs = Promise.wrapfn(parser.langs); + nparser.langs.toText = Promise.wrapfn(parser.langs.toText); + + nparser.readme = Promise.wrapfn(parser.readme); + + nparser.page = Promise.wrapfn(parser.page); + nparser.page.prepare = Promise.wrapfn(parser.page.prepare || _.identity); + + return nparser; +} + +// Return a specific parser according to an extension +function getParser(ext) { + return _.find(PARSERS, function(input) { + return input.name == ext || _.contains(input.extensions, ext); + }); +} + +// Return parser for a file +function getParserForFile(filename) { + return getParser(path.extname(filename)); +} + +module.exports = { + all: PARSERS, + extensions: _.flatten(_.pluck(PARSERS, 'extensions')), + get: getParser, + getForFile: getParserForFile +}; diff --git a/lib/template/index.js b/lib/template/index.js index d426988..215ebcd 100644 --- a/lib/template/index.js +++ b/lib/template/index.js @@ -1,11 +1,11 @@ var _ = require('lodash'); var path = require('path'); var nunjucks = require('nunjucks'); -var parsers = require('gitbook-parsers'); var escapeStringRegexp = require('escape-string-regexp'); var Promise = require('../utils/promise'); var error = require('../utils/error'); +var parsers = require('../parsers'); var defaultBlocks = require('./blocks'); var Loader = require('./loader'); diff --git a/lib/utils/promise.js b/lib/utils/promise.js index adcc1c3..d49cf27 100644 --- a/lib/utils/promise.js +++ b/lib/utils/promise.js @@ -43,8 +43,20 @@ function map(arr, iter) { }, []); } +// Wrap a fucntion in a promise +function wrap(func) { + return _.wrap(func, function(_func) { + var args = Array.prototype.slice.call(arguments, 1); + return Q() + .then(function() { + return _func.apply(null, args); + }); + }); +} + module.exports = Q; module.exports.reduce = reduce; module.exports.map = map; module.exports.serie = serie; module.exports.some = some; +module.exports.wrapfn = wrap; diff --git a/package.json b/package.json index c9001e9..7163f15 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,8 @@ "resolve": "0.6.3", "mkdirp": "0.5.1", "error": "7.0.2", - "gitbook-parsers": "0.8.9", + "gitbook-markdown": "1.0.0", + "gitbook-asciidoc": "1.0.0", "gitbook-plugin-highlight": "1.0.3", "gitbook-plugin-sharing": "1.0.1", "gitbook-plugin-search": "1.1.0", |