Fields (tab-stops) parser
Parses snippet fields (aka tab-stops) like ${1:foo}
in given string and produces a model that contains clean string without fields and list of fields locations.
Usage example
import parse from '@emmetio/field-parser';
const fieldModel = parse('foo $0 ${1:bar} ${2}${1}');
console.log(fieldModel.string);
console.log(fieldModel.fields);
You can also mark string with fields:
import { mark } from '@emmetio/field-parser';
const marked = mark('foo bar', [
{index: 1, location: 0, length: 3},
{index: 5, location: 4, length: 3},
]);
console.log(marked);
...or parse string and then use built-it mark
method:
import parse from '@emmetio/field-parser';
const fieldModel = parse('foo $0 ${1:bar} ${2}${1}');
fieldModel.forEach(field => field.index += 100);
console.log(fieldModel.mark());