Package Exports
- simple-plist
- simple-plist/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (simple-plist) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
simple-plist
A simple API for interacting with binary and plain text plist data.
Installation
# via npm
npm install simple-plist
# via yarn
yarn add simple-plist
Synchronous API
import * as plist from "simple-plist";
let data;
// read
data = plist.readFileSync("/path/to/some.plist");
// write xml
plist.writeFileSync("/path/to/plaintext.plist", data);
// write binary
plist.writeBinaryFileSync("/path/to/binary.plist", data);
Asynchronous API
Note: all of the async examples can optionally be converted to promises using node's
util.promisify
.
import * as plist from "simple-plist";
let data;
function callback(err, contents) {
if (err) throw err;
data = contents;
}
// read
plist.readFile("/path/to/some.plist", callback);
// write xml
plist.writeFile("/path/to/plaintext.plist", data, callback);
// write binary
plist.writeBinaryFile("/path/to/binary.plist", data, callback);
In Memory
plist.stringify()
const plist = require("simple-plist");
// Convert an object to a plist xml string
plist.stringify({ name: "Joe", answer: 42 });
/*
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>name</key>
<string>Joe</string>
<key>answer</key>
<integer>42</integer>
</dict>
</plist>
*/
plist.parse()
import * as plist from "simple-plist";
const xml = `<plist>
<dict>
<key>name</key>
<string>Joe</string>
</dict>
</plist>`;
plist.parse(xml);
// { "name": "Joe" }
TypeScript Support
All functions have typescript signatures, but there are a few handy generics
that are worth pointing out. Those generics belong to parse
, readFile
,
and readFileSync
. Here's an example:
import { parse, readFile, readFileSync } from "simple-plist";
type Profile = {
name: string;
answer: number;
};
const xml = `<plist>
<dict>
<key>name</key>
<string>Joe</string>
<key>answer</key>
<integer>42</integer>
</dict>
</plist>`;
// typed string parsing
const { answer } = parse<Profile>(xml);
// answer = 42;
// typed file loading
const { name } = readFileSync<Profile>("/path/to/profile.plist");