mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-09-12 05:48:57 +00:00
Fix parsing of multilingual books
This commit is contained in:
+1
-1
@@ -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)
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
+2
-1
@@ -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);
|
||||
};
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -4,16 +4,26 @@ var createMockFS = require('../../fs/mock');
|
||||
describe('parseBook', function() {
|
||||
var parseBook = require('../parseBook');
|
||||
|
||||
pit('should parse glossary if exists', function() {
|
||||
pit('should parse multilingual book', function() {
|
||||
var fs = createMockFS({
|
||||
'README.md': 'Hello World',
|
||||
'GLOSSARY.md': '# Glossary\n\n## Hello\nDescription for hello'
|
||||
'LANGS.md': '# Languages\n\n* [en](en)\n* [fr](fr)',
|
||||
'en': {
|
||||
'README.md': 'Hello'
|
||||
},
|
||||
'fr': {
|
||||
'README.md': 'Bonjour'
|
||||
}
|
||||
});
|
||||
var book = Book.createForFS(fs);
|
||||
|
||||
return parseBook(book)
|
||||
.then(function(resultBook) {
|
||||
var languages = resultBook.getLanguages();
|
||||
var books = resultBook.getBooks();
|
||||
|
||||
expect(resultBook.isMultilingual()).toBe(true);
|
||||
expect(languages.getList().size).toBe(2);
|
||||
expect(books.size).toBe(2);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -62,7 +62,7 @@ function parseBook(book) {
|
||||
.then(parseConfig)
|
||||
.then(parseLanguages)
|
||||
.then(function(resultBook) {
|
||||
if (book.isMultilingual()) {
|
||||
if (resultBook.isMultilingual()) {
|
||||
return parseMultilingualBook(resultBook);
|
||||
} else {
|
||||
return parseBookContent(resultBook);
|
||||
|
||||
@@ -14,6 +14,7 @@ function findForBook(book) {
|
||||
return Promise.all([
|
||||
findInstalled(path.resolve(__dirname, '../..')),
|
||||
findInstalled(book.getRoot())
|
||||
// todo: list for parent of multilingual
|
||||
])
|
||||
.then(function(results) {
|
||||
return Immutable.List(results)
|
||||
|
||||
Reference in New Issue
Block a user