summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/models/__tests__/glossary.js31
-rw-r--r--lib/models/__tests__/summary.js9
-rw-r--r--lib/models/glossary.js23
-rw-r--r--lib/models/summary.js24
-rw-r--r--lib/plugins/__tests__/findInstalled.js2
5 files changed, 77 insertions, 12 deletions
diff --git a/lib/models/__tests__/glossary.js b/lib/models/__tests__/glossary.js
index 0345627..2ce224c 100644
--- a/lib/models/__tests__/glossary.js
+++ b/lib/models/__tests__/glossary.js
@@ -5,18 +5,18 @@ describe('Glossary', function() {
var Glossary = require('../glossary');
var GlossaryEntry = require('../glossaryEntry');
- describe('createFromEntries', function() {
- var glossary = Glossary.createFromEntries(File(), [
- {
- name: 'Hello World',
- description: 'Awesome!'
- },
- {
- name: 'JavaScript',
- description: 'This is a cool language'
- }
- ]);
+ var glossary = Glossary.createFromEntries(File(), [
+ {
+ name: 'Hello World',
+ description: 'Awesome!'
+ },
+ {
+ name: 'JavaScript',
+ description: 'This is a cool language'
+ }
+ ]);
+ describe('createFromEntries', function() {
it('must add all entries', function() {
var entries = glossary.getEntries();
expect(entries.size).toBe(2);
@@ -28,6 +28,15 @@ describe('Glossary', function() {
expect(entry instanceof GlossaryEntry).toBeTruthy();
});
});
+
+ describe('toText', function() {
+ pit('return as markdown', function() {
+ return glossary.toText('.md')
+ .then(function(text) {
+ expect(text).toContain('# Glossary');
+ });
+ });
+ });
});
diff --git a/lib/models/__tests__/summary.js b/lib/models/__tests__/summary.js
index b808307..e7b496e 100644
--- a/lib/models/__tests__/summary.js
+++ b/lib/models/__tests__/summary.js
@@ -68,6 +68,15 @@ describe('Summary', function() {
expect(article.getTitle()).toBe('My Second Article');
});
});
+
+ describe('toText', function() {
+ pit('return as markdown', function() {
+ return summary.toText('.md')
+ .then(function(text) {
+ expect(text).toContain('# Summary');
+ });
+ });
+ });
});
diff --git a/lib/models/glossary.js b/lib/models/glossary.js
index 51aa370..bb4407d 100644
--- a/lib/models/glossary.js
+++ b/lib/models/glossary.js
@@ -1,7 +1,9 @@
var Immutable = require('immutable');
+var error = require('../utils/error');
var File = require('./file');
var GlossaryEntry = require('./glossaryEntry');
+var parsers = require('../parsers');
var Glossary = Immutable.Record({
file: File(),
@@ -30,6 +32,27 @@ Glossary.prototype.getEntry = function(name) {
};
/**
+ Render glossary as text
+
+ @return {Promise<String>}
+*/
+Glossary.prototype.toText = function(parser) {
+ var file = this.getFile();
+ var entries = this.getEntries();
+
+ parser = parser? parsers.getByExt(parser) : file.getParser();
+
+ if (!parser) {
+ throw error.FileNotParsableError({
+ filename: file.getPath()
+ });
+ }
+
+ return parser.glossary.toText(entries.toJS());
+};
+
+
+/**
Add/Replace an entry to a glossary
@param {Glossary} glossary
diff --git a/lib/models/summary.js b/lib/models/summary.js
index d8d0603..079c535 100644
--- a/lib/models/summary.js
+++ b/lib/models/summary.js
@@ -1,8 +1,10 @@
var Immutable = require('immutable');
+var error = require('../utils/error');
var File = require('./file');
var SummaryPart = require('./summaryPart');
var SummaryArticle = require('./summaryArticle');
+var parsers = require('../parsers');
var Summary = Immutable.Record({
file: File(),
@@ -64,6 +66,28 @@ Summary.prototype.getByPath = function(filePath) {
};
/**
+ Render summary as text
+
+ @return {Promise<String>}
+*/
+Summary.prototype.toText = function(parser) {
+ var file = this.getFile();
+ var parts = this.getParts();
+
+ parser = parser? parsers.getByExt(parser) : file.getParser();
+
+ if (!parser) {
+ throw error.FileNotParsableError({
+ filename: file.getPath()
+ });
+ }
+
+ return parser.summary.toText({
+ parts: parts.toJS()
+ });
+};
+
+/**
Create a new summary for a list of parts
@param {Lust|Array} parts
diff --git a/lib/plugins/__tests__/findInstalled.js b/lib/plugins/__tests__/findInstalled.js
index fca8295..ce9da0a 100644
--- a/lib/plugins/__tests__/findInstalled.js
+++ b/lib/plugins/__tests__/findInstalled.js
@@ -9,7 +9,7 @@ describe('findInstalled', function() {
pit('must list default plugins for gitbook directory', function() {
return findInstalled(path.resolve(__dirname, '../../../'))
.then(function(plugins) {
- expect(plugins.size).toBe(7);
+ expect(plugins.size > 7).toBeTruthy();
expect(plugins.has('fontsettings')).toBe(true);
expect(plugins.has('search')).toBe(true);