@actualwave/path-sequence-to-string
v0.0.8
Published
Create path sequence and convert it to string for display
Maintainers
Readme
Path Sequence to String
Builds a JavaScript property-access path string incrementally from a sequence of segments. Handles all access styles automatically based on the segment type.
const p = createPathSequence('root');
p.append('foo', 0, 'bar-baz'); // root.foo[0]["bar-baz"]Installation
npm install @actualwave/path-sequence-to-stringUsage
createPathSequence(initial?)
Creates a new PathSequence, optionally starting from an initial string.
import { createPathSequence } from '@actualwave/path-sequence-to-string';
const p = createPathSequence('obj');PathSequence
append(first: PathSegment, ...rest: PathSegment[])
Appends one or more segments using the appropriate notation. getLastName() reflects the last segment passed.
| Segment type | Example input | Output |
|---|---|---|
| Valid identifier | 'foo', '_bar', '$el' | .foo, ._bar, .$el |
| Numeric / numeric string | 0, '42' | [0], [42] |
| Non-identifier string | 'foo-bar' | ["foo-bar"] |
| Symbol | Symbol('id') | [Symbol(id)] |
| AsIs | new AsIs('.custom') | .custom (verbatim) |
const p = createPathSequence('root');
p.append('items', 2, 'display-name'); // 'root.items[2]["display-name"]'appendRaw(raw: string)
Appends a raw string with no quoting, brackets, or dot added — the string is inserted verbatim.
p.appendRaw('[Symbol.iterator]'); // 'root.items[2]["display-name"][Symbol.iterator]'clone(nextName?)
Returns a new PathSequence copied from the current one. Optionally appends one more segment to the clone without touching the original.
const base = createPathSequence('root');
base.append('items');
const a = base.clone(); // 'root.items'
const b = base.clone('count'); // 'root.items.count'
// base is still 'root.items'getLastName()
Returns the last segment that was appended.
p.append('foo');
p.getLastName(); // 'foo'toString() / valueOf()
Both return the accumulated path string. PathSequence coerces naturally in template literals and string contexts.
`path is: ${p}` // 'path is: root.foo'AsIs
Wraps any value so it is inserted verbatim (no dot prefix, no bracket wrapping, no quoting). Useful for injecting pre-formatted path fragments.
import { AsIs, createPathSequence } from '@actualwave/path-sequence-to-string';
const p = createPathSequence('root');
p.append(new AsIs('[0].name')); // 'root[0].name'AsIs also coerces naturally via toString and Symbol.toPrimitive.
License
MIT
