simple-plist.js
2.47 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
92
93
94
95
96
97
98
99
100
101
102
var bplistParser = require('bplist-parser'),
bplistCreator = require('bplist-creator'),
plist = require('plist'),
fs = require('fs');
// reveal the underlying modules
exports.plist = plist;
exports.bplistCreator = bplistCreator;
exports.bplistParser = bplistParser;
// Parses the given file and returns its contents as a native JavaScript
// object.
exports.readFileSync = function(aFile) {
var contents = fs.readFileSync(aFile);
if (contents.length === 0) {
console.error("Unable to read file '%s'", aFile);
return {};
}
return exports.parse(contents, aFile);
};
exports.readFile = function(aFile, callback) {
var results;
fs.readFile(aFile, function(err, contents){
if (err) {
callback(err);
}
else {
try {
results = exports.parse(contents, aFile);
callback(null,results);
}
catch(err) {
callback(err);
}
}
});
}
exports.writeFileSync = function(aFile, anObject, options) {
var data = plist.build(anObject);
fs.writeFileSync(aFile, data, options);
};
exports.writeFile = function(aFile, anObject, options, callback) {
if (arguments.length === 3 && typeof options === 'function') {
callback = options;
options = undefined;
}
var data = plist.build(anObject);
fs.writeFile(aFile, data, options, callback);
};
exports.writeBinaryFileSync = function(aFile, anObject, options) {
var data = bplistCreator(anObject);
fs.writeFileSync(aFile, data, options);
};
exports.writeBinaryFile = function(aFile, anObject, options, callback) {
if (arguments.length === 3 && typeof options === 'function') {
callback = options;
options = undefined;
}
var data = bplistCreator(anObject);
fs.writeFile(aFile, data, options, callback);
};
exports.stringify = function(anObject) {
return plist.build(anObject);
};
exports.parse = function(aStringOrBuffer, aFile) {
var results,
firstByte = aStringOrBuffer[0];
try {
if (firstByte === 60 || firstByte === '<') {
results = plist.parse(aStringOrBuffer.toString());
}
else if (firstByte === 98) {
results = bplistParser.parseBuffer(aStringOrBuffer)[0];
}
else {
if (aFile != undefined) {
console.error("Unable to determine format for '%s'", aFile);
}
else {
console.error("Unable to determine format for plist aStringOrBuffer: '%s'", aStringOrBuffer);
}
results = {};
}
}
catch(e) {
throw Error("'%s' has errors", aFile);
}
return results;
}