-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathindex.js
82 lines (75 loc) · 2.34 KB
/
index.js
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
var fs = require("fs");
var path = require("path");
var decode = require("./decode");
exports.dumpsFile = dumpsFile = function dumpsFile(fileObjRep) {
var sectionContents = [];
var sections = Object.getOwnPropertyNames(fileObjRep);
for (var i = 0; i < sections.length; i++) {
var section = sections[i];
var sectionRep = fileObjRep[section];
var lines = ["[" + section + "]"];
var entries = Object.getOwnPropertyNames(sectionRep);
for (var j = 0; j < entries.length; j++) {
var entry = entries[j];
var entryRep = sectionRep[entry];
if (typeof(entryRep) === "object") {
for (var k = 0; k < entryRep.length; k++) {
lines.push(entry + "=" + entryRep[k]);
}
} else {
lines.push(entry + "=" + entryRep);
}
}
sectionContents.push(lines.join("\n"));
}
return sectionContents.join("\n\n") + "\n";
};
exports.dumps = function dumps(objRep) {
var iniRep = {};
var fnames = Object.getOwnPropertyNames(objRep);
for (var i = 0; i < fnames.length; i++) {
var fname = fnames[i];
iniRep[fname] = dumpsFile(objRep[fname]);
}
return iniRep;
};
var parseObj = function parseObj(iniRep) {
var objRep = {};
var fnames = Object.getOwnPropertyNames(iniRep);
for (var i = 0; i < fnames.length; i++) {
objRep[fnames[i]] = decode(iniRep[fnames[i]]);
}
return objRep;
}
var parseDir = function parseDir(dirpath) {
var iniRep = {};
var fnames = fs.readdirSync(dirpath);
for (var i = 0; i < fnames.length; i++) {
var fname = fnames[i];
iniRep[fname] = fs.readFileSync(path.join(dirpath, fname)).toString();
}
return parseObj(iniRep);
};
exports.parse = function parse(dirpathOrIniRep) {
if (typeof(dirpathOrIniRep) === "string") {
return parseDir(dirpathOrIniRep);
} else {
return parseObj(dirpathOrIniRep)
}
};
exports.write = function write(dirpath, objRepOrIniRep) {
if (!fs.existsSync(dirpath)) {
throw new Error("Directory " + dirpath + " does not exist.")
}
var fnames = Object.getOwnPropertyNames(objRepOrIniRep);
for (var i = 0; i < fnames.length; i++) {
var fname = fnames[i];
var outPath = path.join(dirpath, fname);
var fileRep = objRepOrIniRep[fname];
if (typeof(fileRep) === "string") {
fs.writeFileSync(outPath, fileRep);
} else {
fs.writeFileSync(outPath, dumpsFile(fileRep));
}
}
};