summaryrefslogtreecommitdiffstats
path: root/lib/models
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2016-04-29 10:58:25 +0200
committerSamy Pessé <samypesse@gmail.com>2016-04-29 10:58:25 +0200
commit73c190891d4aba49c6fbd43943be4ceb31a78a60 (patch)
treee8c0a595e38329cc0ef835648829555f9206fc89 /lib/models
parent93e701f4712ab9e476061f8f81fb03eda1c2af2a (diff)
downloadgitbook-73c190891d4aba49c6fbd43943be4ceb31a78a60.zip
gitbook-73c190891d4aba49c6fbd43943be4ceb31a78a60.tar.gz
gitbook-73c190891d4aba49c6fbd43943be4ceb31a78a60.tar.bz2
Fix parsing of multilingual books
Diffstat (limited to 'lib/models')
-rw-r--r--lib/models/book.js2
-rw-r--r--lib/models/fs.js3
-rw-r--r--lib/models/languages.js26
3 files changed, 29 insertions, 2 deletions
diff --git a/lib/models/book.js b/lib/models/book.js
index 030223f..8f8ab74 100644
--- a/lib/models/book.js
+++ b/lib/models/book.js
@@ -248,7 +248,7 @@ Book.createFromParent = function createFromParent(parent, language) {
logger: parent.getLogger(),
ignore: Ignore().add(ignore),
language: language,
- fs: FS.reduceScope(parent.getFS(), language)
+ fs: FS.reduceScope(parent.getContentFS(), language)
});
};
diff --git a/lib/models/fs.js b/lib/models/fs.js
index f124da8..ab65dd5 100644
--- a/lib/models/fs.js
+++ b/lib/models/fs.js
@@ -33,7 +33,8 @@ FS.prototype.getRoot = function() {
*/
FS.prototype.isInScope = function(filename) {
var rootPath = this.getRoot();
- filename = path.resolve(rootPath, filename);
+ filename = path.join(rootPath, filename);
+
return PathUtil.isInRoot(rootPath, filename);
};
diff --git a/lib/models/languages.js b/lib/models/languages.js
index c64857f..6c19cba 100644
--- a/lib/models/languages.js
+++ b/lib/models/languages.js
@@ -1,6 +1,7 @@
var Immutable = require('immutable');
var File = require('./file');
+var Language = require('./language');
var Languages = Immutable.Record({
file: File(),
@@ -34,4 +35,29 @@ Languages.prototype.getLanguage = function(lang) {
return this.getList().get(lang);
};
+
+/**
+ Create a languages list from a JS object
+
+ @param {File}
+ @param {Array}
+ @return {Language}
+*/
+Languages.createFromList = function(file, langs) {
+ var list = Immutable.OrderedMap();
+
+ langs.forEach(function(lang) {
+ lang = Language({
+ title: lang.title,
+ path: lang.path
+ });
+ list = list.set(lang.getID(), lang);
+ });
+
+ return Languages({
+ file: file,
+ list: list
+ });
+}
+
module.exports = Languages;