Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var fs = require('fs'),
- path = require('path'),
- filePath = path.join(__dirname, 'sie.si');
- function parseInvoices(text){
- let verRe = /^#VER .+?\n\{\n(#TRANS \d{4} \{.*?\} .+?\n)*\}/mg;
- let accountRe = /^#KONTO .+$/mg;
- let objectRe = /^#OBJEKT .+$/mg;
- let transRe = /^#TRANS .+$/mg;
- let accountSplitRe = /^#KONTO (\d{4}) "?(.+)"?$/;
- let objectSplitRe = /^#OBJEKT (\d+) (\d+) "?(.+)"?$/;
- let transSplitRe = /^#TRANS (\d{4}) \{("\d+" )?("\d+" )?\} (.+)$/;
- let verSplitRe = /^#VER (.+) (.+) (.+) (.+)$/m;
- let stripOrBlank = (t) => t != null ? t.replace(/\"|\s/g,"") : "";
- let accounts = text.match(accountRe).map(c => {
- let accSplit = c.match(accountSplitRe);
- return {accountNr: accSplit[1], description: accSplit[2]};
- });
- let objects = text.match(objectRe).map(o => {
- let objSplit = o.match(objectSplitRe);
- return {dim: objSplit[1], id: objSplit[2], name: objSplit[3]};
- });
- let verifications = text.match(verRe).map(v => {
- let verSplit = v.match(verSplitRe);
- let ver = {series: verSplit[1], nr: verSplit[2], date: verSplit[3], text: verSplit[4].replace("\"", ""), trans: []};
- ver.trans = v.match(transRe).map(t => {
- let transSplit = t.match(transSplitRe);
- return {accountNr: transSplit[1], dim: stripOrBlank(transSplit[2]), obj: stripOrBlank(transSplit[3]), amount: transSplit[4] };
- });
- return ver;
- });
- return {
- objects: objects,
- accounts: accounts,
- verifications: verifications
- };
- }
- fs.readFile(filePath, {encoding: 'ascii'}, function(err,data){
- if (!err) {
- var invoices = parseInvoices(data);
- var jsonDocument = JSON.stringify(invoices).replace(/\\"/g,"");
- console.log(jsonDocument);
- } else {
- console.log(err);
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement