summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2016-02-20 16:02:51 +0100
committerSamy Pessé <samypesse@gmail.com>2016-02-20 16:02:51 +0100
commita22539a91eea4101d244cdaeb5c61e31376ff4bc (patch)
treefb3cd337b3082134b797e51431ee40c3a7101ecc
parent89378c3883140ce6e6c74e71651270f19b1ee441 (diff)
downloadgitbook-a22539a91eea4101d244cdaeb5c61e31376ff4bc.zip
gitbook-a22539a91eea4101d244cdaeb5c61e31376ff4bc.tar.gz
gitbook-a22539a91eea4101d244cdaeb5c61e31376ff4bc.tar.bz2
Add new gitbook-markdown and gitbook-asciidoc
-rw-r--r--lib/book.js2
-rw-r--r--lib/cli/watch.js2
-rw-r--r--lib/page/index.js2
-rw-r--r--lib/parsers.js60
-rw-r--r--lib/template/index.js2
-rw-r--r--lib/utils/promise.js12
-rw-r--r--package.json3
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",