mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-09-16 15:45:13 +00:00
71 lines
1.3 KiB
JavaScript
71 lines
1.3 KiB
JavaScript
var Immutable = require('immutable');
|
|
var yaml = require('js-yaml');
|
|
|
|
var File = require('./file');
|
|
|
|
var Page = Immutable.Record({
|
|
file: File(),
|
|
|
|
// Attributes extracted from the YAML header
|
|
attributes: Immutable.Map(),
|
|
|
|
// Content of the page
|
|
content: String(),
|
|
|
|
// Direction of the text
|
|
dir: String('ltr')
|
|
});
|
|
|
|
Page.prototype.getFile = function() {
|
|
return this.get('file');
|
|
};
|
|
|
|
Page.prototype.getAttributes = function() {
|
|
return this.get('attributes');
|
|
};
|
|
|
|
Page.prototype.getContent = function() {
|
|
return this.get('content');
|
|
};
|
|
|
|
Page.prototype.getDir = function() {
|
|
return this.get('dir');
|
|
};
|
|
|
|
/**
|
|
* Return page as text
|
|
* @return {String}
|
|
*/
|
|
Page.prototype.toText = function() {
|
|
var attrs = this.getAttributes();
|
|
var content = this.getContent();
|
|
|
|
if (attrs.size === 0) {
|
|
return content;
|
|
}
|
|
|
|
var frontMatter = '---\n' + yaml.safeDump(attrs.toJS(), { skipInvalid: true }) + '---\n\n';
|
|
return (frontMatter + content);
|
|
};
|
|
|
|
/**
|
|
* Return path of the page
|
|
* @return {String}
|
|
*/
|
|
Page.prototype.getPath = function() {
|
|
return this.getFile().getPath();
|
|
};
|
|
|
|
/**
|
|
* Create a page for a file
|
|
* @param {File} file
|
|
* @return {Page}
|
|
*/
|
|
Page.createForFile = function(file) {
|
|
return new Page({
|
|
file: file
|
|
});
|
|
};
|
|
|
|
module.exports = Page;
|