initial commit

This commit is contained in:
Thomas Ruoff
2017-02-14 00:43:15 +01:00
commit 1be838f589
5 changed files with 109 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
node_modules

28
index.js Normal file
View File

@@ -0,0 +1,28 @@
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const templates = require('./templates');
app.use(bodyParser.json());
app.post('/generate/:template', (req, res) => {
const templateName = req.params.template;
const options = req.body;
templates.get(templateName, options, (err, template) => {
if (err) {
console.error('Error:', err.code, 'for', req.url);
res.sendStatus(500).end('Something went wrong, call Thomas');
return;
}
let result = template;
res.send(result);
res.end();
});
});
app.listen(5000);

15
package.json Normal file
View File

@@ -0,0 +1,15 @@
{
"name": "pdfer",
"version": "1.0.0",
"description": "Generate pdfs based on a template",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Thomas Ruoff <tomru@mail.id0.link>",
"license": "ISC",
"dependencies": {
"body-parser": "^1.16.1",
"express": "^4.14.1"
}
}

30
templates.js Normal file
View File

@@ -0,0 +1,30 @@
const fs = require('fs');
const path = require('path');
function replaceOption(string, key, value) {
const re = new RegExp(`\\$\{${key}\}`, 'g');
return string.replace(re, value);
}
function cleanUnsetVars(string) {
const re = new RegExp('\\$\{[a-zA-Z-_]+\}', 'g');
return string.replace(re, '');
}
module.exports.get = (templateName, options, callback) => {
const filename = path.join(__dirname, 'templates', templateName + '.template');
fs.readFile(filename, 'utf-8', (err, template) => {
if (err) {
callback(err);
return;
}
const replaced = Object.keys(options).reduce((memo, key) => {
return replaceOption(memo, key, options[key]);
}, template);
const result = cleanUnsetVars(replaced);
callback(null, result);
});
};

35
templates/brief.template Normal file
View File

@@ -0,0 +1,35 @@
\documentclass{scrlttr2}
\LoadLetterOption{${LETTER_OPTION}}
\setkomavar{subject}{${SUBJECT}}
\setkomavar{yourref}{${YOURREF}}
\setkomavar{yourmail}{${YOURMAIL}}
\setkomavar{myref}{${MYREF}}
\setkomavar{customer}{${CUSTOMER}}
\setkomavar{invoice}{${INVOICE}}
% \setkomavar{yourref}[alternative name]{value}
% custom date
%\setkomavar{date}{}
%\setkomavar{signature}{\electronicsignature}
\setkomavar{specialmail}{${SPECIALMAIL}}
\begin{document}
\begin{letter}{${ADDRESS}}
\opening{${OPENING}}
${BODY}
\closing{${CLOSING}}
\ps{${PS}}
\encl{${ENCL}}
\end{letter}
\end{document}