-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdat.js
More file actions
92 lines (79 loc) · 2 KB
/
dat.js
File metadata and controls
92 lines (79 loc) · 2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
"use strict"
const fs = require( "fs" );
function format( _amount )
{
var number = parseInt( _amount / 100 );
var decimal = ( _amount % 100 )
if ( decimal < 10 )
return number + ".0" + decimal;
else
return number + "." + decimal;
}
// Read legacy dat file
function readDat( _file, _arrFields )
{
return fs.readFileSync( _file, 'utf8' )
.split( /[\r\n]+/ )
.filter( (e) => e )
.map( (e) =>
{
var r = {};
// Filter out 'comment' lines
if ( e.trim()[0] === "#" )
return null;
var ef = e.split( ":" );
_arrFields.forEach( (f,i) =>
{
// Convert value into numeric 'cents' field
if ( f === "value" )
r[ f ] = Math.round( parseFloat( ef[i] ) * 100 );
else
r[ f ] = ef[i];
} )
return r;
} ).filter( l => l );
}
function writeDat( _file, _data, _arrFields )
{
var data = "#" + _arrFields.join( " " ) + "\n";
_data.forEach( d =>
{
let sep = "";
_arrFields.forEach( f =>
{
if ( f === "value" )
data += sep + format( d[ f ] );
else
data += sep + d[ f ];
sep = ":";
} );
data += "\n";
} );
fs.writeFileSync( _file, data );
}
function tempExists( _data )
{
return fs.existsSync( "temp.dat" );
}
function writeTemp( _data )
{
// Append _data to temp file
fs.writeFileSync( "temp.dat", _data, { flag: "a" } );
}
function appendTemp( _file )
{
// Append the temp file contents to _file
fs.writeFileSync( _file, fs.readFileSync( "temp.dat" ), { flag: "a" } );
}
function deleteTemp( )
{
fs.unlinkSync( "temp.dat" );
}
module.exports = {
readDat: readDat,
writeDat: writeDat,
tempExists: tempExists,
writeTemp: writeTemp,
appendTemp: appendTemp,
deleteTemp: deleteTemp
};