GT2/Ejectable/node_modules/simple-plist/simple-plist.js

91 lines
2.2 KiB
JavaScript

const bplistParser = require('bplist-parser')
const bplistCreator = require('bplist-creator')
const plist = require('plist')
const fs = require('fs')
function parse(aStringOrBuffer, aFile) {
const firstByte = aStringOrBuffer[0]
let results
try {
if (firstByte === 60 || firstByte === '<') {
results = plist.parse(aStringOrBuffer.toString())
} else if (firstByte === 98) {
;[results] = bplistParser.parseBuffer(aStringOrBuffer)
} else if (aFile != null) {
throw new Error(`Unable to determine format for '${aFile}'`)
} else {
throw new Error('Unable to determine format for plist aStringOrBuffer')
}
} catch (error) {
throw new Error(error)
}
return results
}
function readFileSync(aFile) {
const contents = fs.readFileSync(aFile)
if (contents.length === 0) {
return {}
}
return parse(contents, aFile)
}
function readFile(aFile, callback) {
fs.readFile(aFile, (err, contents) => {
if (err) {
return callback(err)
}
let results
try {
results = parse(contents, aFile)
} catch (error) {
return callback(error)
}
return callback(null, results)
})
}
function writeFileSync(aFile, anObject, options) {
const data = plist.build(anObject)
return fs.writeFileSync(aFile, data, options)
}
function writeFile(aFile, anObject, options, callback) {
if (arguments.length === 3 && typeof options === 'function') {
fs.writeFile(aFile, plist.build(anObject), options)
} else {
fs.writeFile(aFile, plist.build(anObject), options, callback)
}
}
function writeBinaryFileSync(aFile, anObject, options) {
return fs.writeFileSync(aFile, bplistCreator(anObject), options)
}
function writeBinaryFile(aFile, anObject, options, callback) {
if (arguments.length === 3 && typeof options === 'function') {
fs.writeFile(aFile, bplistCreator(anObject), options)
} else {
fs.writeFile(aFile, bplistCreator(anObject), options, callback)
}
}
function stringify(anObject) {
return plist.build(anObject)
}
module.exports = {
bplistCreator,
bplistParser,
parse,
plist,
readFile,
readFileSync,
stringify,
writeBinaryFile,
writeBinaryFileSync,
writeFile,
writeFileSync,
}