Files
gitbook/lib/backbone/file.js
T
2016-01-28 18:39:44 +01:00

65 lines
1.5 KiB
JavaScript

var _ = require('lodash');
function BackboneFile(book) {
if (!(this instanceof BackboneFile)) return new BackboneFile(book);
this.book = book;
this.log = this.book.log;
// Filename in the book
this.filename = '';
this.parser;
_.bindAll(this);
}
// Type of the backbone file
BackboneFile.prototype.type = '';
// Parse a backbone file
BackboneFile.prototype.parse = function() {
// To be implemented by each child
};
// Return true if backbone file exists
BackboneFile.prototype.exists = function() {
return Boolean(this.filename);
};
// Locate a backbone file, could be .md, .asciidoc, etc
BackboneFile.prototype.locate = function() {
var that = this;
var filename = this.book.config.getStructure(this.type, true);
this.log.debug.ln('locating', this.type, ':', filename);
return this.book.findParsableFile(filename)
.then(function(result) {
if (!result) return;
that.filename = result.path;
that.parser = result.parser;
});
};
// Read and parse the file
BackboneFile.prototype.load = function() {
var that = this;
this.log.debug.ln('loading', this.type, ':', that.filename);
return this.locate()
.then(function() {
if (!that.filename) return;
that.log.debug.ln(that.type, 'located at', that.filename);
return that.book.readFile(that.filename)
// Parse it
.then(function(content) {
return that.parse(content);
});
});
};
module.exports = BackboneFile;