qwebs
Version:
Web application framework
51 lines (42 loc) • 1.68 kB
JavaScript
/*!
* qwebs
* Copyright(c) 2015 Benoît Claveau <benoit.claveau@gmail.com>
* MIT Licensed
*/
;
const path = require("path");
const walk = require("../utils/walk.js");
const fs = require("fs");
const DataError = require("../dataerror");
class Repository {
constructor(folder) {
if (!folder) throw new DataError({ message: "Folder is not defined.", data: { folder: folder }});
let files = walk.get(folder);
for (let filepath of files) {
let route = filepath.substring(folder.length);
let ext = path.extname(route).substr(1); //get extension without .
route = route.slice(0, -(ext.length + 1)); //get file name withous extension and .
let routes = route.split("/");
let data = this;
for (let token of routes) {
if(!token) continue; //if filepath start with /
data[token] = data[token] || {};
data = data[token];
}
//TODO change encoding according to the extension
if(data[ext]) throw new DataError({ message: "File already exists.", date: { file: filepath }});
this.readFile(filepath, ext).then(content => {
data[ext] = content;
});
};
};
readFile(filepath, ext) {
return new Promise((resolve, reject) => {
fs.readFile(filepath, "utf8", (err, data) => {
if (err) reject(err);
else resolve(data);
});
});
};
};
exports = module.exports = Repository;