mirror of
https://github.com/tomasvarg/gallerymaker.git
synced 2026-03-01 08:28:48 +00:00
Page creation from templates and generated content; added write/copyFile helpers
This commit is contained in:
parent
1ef87937e6
commit
58c7b149dd
2
src/client/index.css
Normal file
2
src/client/index.css
Normal file
@ -0,0 +1,2 @@
|
||||
body { font-family: Tahoma, sans-serif; margin: 0; }
|
||||
h1 { font-size: 24px; padding-left: 20px; }
|
||||
11
src/client/index.html
Normal file
11
src/client/index.html
Normal file
@ -0,0 +1,11 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Gallery</title>
|
||||
<link href="index.css" rel="stylesheet" type="text/css">
|
||||
<script src="index.js" type="text/javascript"></script>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
||||
10
src/client/index.js
Normal file
10
src/client/index.js
Normal file
@ -0,0 +1,10 @@
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
addEventListener('DOMContentLoaded', init);
|
||||
|
||||
function init() {
|
||||
console.log('index initialized');
|
||||
}
|
||||
|
||||
}());
|
||||
18
src/client/index.polymer.html
Normal file
18
src/client/index.polymer.html
Normal file
@ -0,0 +1,18 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Gallery</title>
|
||||
<script src="lib/webcomponents-lite.js"></script>
|
||||
<script>
|
||||
/*
|
||||
window.Polymer = window.Polymer || {};
|
||||
window.Polymer.dom = 'shadow';
|
||||
*/
|
||||
</script>
|
||||
<link rel="import" href="gallery-wc.html">
|
||||
</head>
|
||||
<body>
|
||||
<gallery-wc></treegrid-wc>
|
||||
</body>
|
||||
</html>
|
||||
53
src/index.js
53
src/index.js
@ -11,10 +11,13 @@ var cmd = process.argv[2]
|
||||
var idir = process.argv[3];
|
||||
var odir = sanitize(process.argv[4] || idir + '.web');
|
||||
|
||||
var clientDir = path.join(__dirname, 'client');
|
||||
|
||||
var conf = {
|
||||
width: 700,
|
||||
quality: 80,
|
||||
debug: true
|
||||
debug: true,
|
||||
template: 'index.html'
|
||||
};
|
||||
var EOL = "\n";
|
||||
var DEPTH = 2;
|
||||
@ -99,16 +102,10 @@ function prepareImages() {
|
||||
})
|
||||
.then(cont => {
|
||||
log('Image preparation done!');
|
||||
return new Promise((resolve, reject) => {
|
||||
fs.writeFile(path.join(odir, 'content.json'), JSON.stringify(cont), err => {
|
||||
if (err) reject('Writing content file failed: ' + err)
|
||||
log('Written content file!')
|
||||
resolve(cont);
|
||||
});
|
||||
})
|
||||
return utils.writeFile(JSON.stringify(cont), 'content.json', odir);
|
||||
})
|
||||
.then(cont => {
|
||||
log('content:', util.inspect(cont, { showHidden: false, depth: null }));
|
||||
log('Content:', util.inspect(cont, { showHidden: false, depth: null }));
|
||||
return cont;
|
||||
})
|
||||
.catch(err => {
|
||||
@ -126,19 +123,15 @@ function generateList(cont) {
|
||||
return cont
|
||||
})
|
||||
.then(cont => getListEntryHtml(cont.cont))
|
||||
.then(html => {
|
||||
log('Image list prepared!');
|
||||
return new Promise((resolve, reject) => {
|
||||
fs.writeFile(path.join(odir, 'list.html'), html, err => {
|
||||
if (err) reject('Writing content file failed: ' + err)
|
||||
log('Written content file!')
|
||||
resolve(html);
|
||||
});
|
||||
})
|
||||
})
|
||||
.then(html => {
|
||||
log("html:\n" + html);
|
||||
return html;
|
||||
.then(html => getPageHtml(html))
|
||||
.then(html => Promise.all([
|
||||
utils.writeFile(html, 'list.html', odir),
|
||||
utils.copyFile(clientDir, 'index.css', odir),
|
||||
utils.copyFile(clientDir, 'index.js', odir)
|
||||
]))
|
||||
.then(res => {
|
||||
log('Generated files:', res);
|
||||
return res[0];
|
||||
})
|
||||
.catch(err => {
|
||||
console.log(err);
|
||||
@ -163,6 +156,22 @@ function getListEntryHtml(cont, dir, depth) {
|
||||
return html;
|
||||
}
|
||||
|
||||
function getPageHtml(htmlPart, pageFname) {
|
||||
pageFname = pageFname || conf.template;
|
||||
return new Promise((resolve, reject) => {
|
||||
var pageFile = path.join(clientDir, pageFname);
|
||||
fs.readFile(pageFile, 'utf-8', (err, data) => {
|
||||
if (err) reject(err);
|
||||
else if (!data) reject('File empty: ' + pageFile);
|
||||
resolve(data);
|
||||
});
|
||||
})
|
||||
.then((pageHtml) => {
|
||||
return pageHtml.substring(0, pageHtml.search('[ ]*</body>')) + htmlPart
|
||||
+ pageHtml.substr(pageHtml.search('[ ]*</body>'));
|
||||
});
|
||||
}
|
||||
|
||||
function generateGallery(cont) {
|
||||
log('Generating gallery');
|
||||
|
||||
|
||||
27
src/utils.js
27
src/utils.js
@ -1,7 +1,14 @@
|
||||
/* global Promise */
|
||||
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
|
||||
module.exports = {
|
||||
indent: indent,
|
||||
stringContains: stringContains,
|
||||
diaStrip: diaStrip
|
||||
diaStrip: diaStrip,
|
||||
writeFile: writeFile,
|
||||
copyFile: copyFile
|
||||
};
|
||||
|
||||
function indent(depth, baseDepth, multip, ch, empty) {
|
||||
@ -113,3 +120,21 @@ function diaStrip(str) {
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
function writeFile(data, fname, dir) {
|
||||
return new Promise((resolve, reject) => fs.writeFile(path.join(dir, fname), data, err => {
|
||||
if (err) reject('Writing content file failed: ' + err)
|
||||
resolve(fname);
|
||||
}));
|
||||
}
|
||||
|
||||
function copyFile(srcDir, fname, destDir) {
|
||||
return new Promise((resolve, reject) => {
|
||||
var rs = fs.createReadStream(path.join(srcDir, fname));
|
||||
var ws = fs.createWriteStream(path.join(destDir, fname));
|
||||
rs.on('error', err => reject('File reading failed: ' + err));
|
||||
ws.on('error', err => reject('File writing failed: ' + err));
|
||||
ws.on('finish', () => resolve(fname));
|
||||
rs.pipe(ws);
|
||||
});
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user