0.1.0 • Published 3 years ago

tm-plist v0.1.0

Weekly downloads
2
License
MIT
Repository
github
Last release
3 years ago

TextMate Plists

A library for parsing the property list file format that is used by the TextMate code editor. TextMate uses a format that is extremely close to so called 'old-style' property lists, aka. ASCII property lists, but there are a few small differences.

The library also contains a basic object model for TextMate grammars.

API

A single function parse that takes a string and returns an object.

const tmplist = require ('tm-plist')

var sample = `{
  key1 = 1;
  key2 = 2;
  array = (4, :true, 5, 6)
}
`
console.log (tmplist.parse (sample))

File format

The partial grammar below was found in the TextMate source code here. Additional information was found in the TextMate 1 documentation here.

The last however implies that unquoted keys cannot start with leading digits even though this does happen in practice. (For example, capture names in TextMate grammar files are stored as dicts with numeric keys.)

The NeXTSTEP format allowed unquoted strings with characters in the set [a-zA-Z0-9_$+/:.\-]. This must be different from the TextMate format because TextMate uses :true and :false as booleans. This library allows unquoted strings with characters in the set [a-zA-Z0-9_$+/.\-].

array:    '(' (element ',')* (element)? ')'
dict:     '{' (key '=' value ';')* '}'
integer:  ('-'|'+')? ('0x'|'0')? [0-9]+
float:    '-'? [0-9]* '.' [0-9]+
boolean:  :true | :false
string:   ["] … ["] | ['] … ['] | [a-zA-Z_-]+
data:     <DEADBEEF>
date:     @2010-05-10 20:34:12 +0000

Licence

MIT. Enjoy!