-
Notifications
You must be signed in to change notification settings - Fork 1
/
ceson.js
64 lines (29 loc) · 1.02 KB
/
ceson.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
/*jslint indent: 2, maxlen: 80, node: true */
/* -*- tab-width: 2 -*- */
'use strict';
var EX = module.exports, parseCeson = require('./parse'),
fs = require('fs');
EX.parse = parseCeson;
EX.parseCallbackData = function (readErr, data, deliver) {
if ((!deliver) && (typeof this === 'function')) { deliver = this; }
if (readErr) { return deliver(readErr); }
try {
data = parseCeson(data, deliver.parseOpts);
} catch (parseErr) {
return deliver(parseErr);
}
return deliver(null, data);
};
EX.parseFile = function (fileOpts, deliver) {
if (typeof fileOpts === 'string') { fileOpts = { path: fileOpts }; }
if (fileOpts.encoding === undefined) { fileOpts.encoding = 'UTF-8'; }
deliver = deliver.bind(fileOpts);
deliver.parseOpts = fileOpts;
fs.readFile(fileOpts.path, fileOpts, EX.parseCallbackData.bind(deliver));
};
EX.stringify = function (data) {
return JSON.stringify(data, null, 2
).replace(/(\n\s*[\]\}])/g, ',$1'
).replace(/(\[|\{)\n\s*/g, '$1 ');
};
/* scroll */