@hashgraph/solo
Version:
An opinionated CLI tool to deploy and manage private Hedera Networks.
44 lines (32 loc) • 1.16 kB
text/typescript
// SPDX-License-Identifier: Apache-2.0
import {type Node} from './node.js';
import {ConfigKeyError} from '../config-key-error.js';
import {type KeyFormatter} from '../key-formatter.js';
import {ConfigKeyFormatter} from '../config-key-formatter.js';
export abstract class LexerNode implements Node {
protected constructor(
public readonly parent: Node | null,
public readonly name: string,
public readonly formatter: KeyFormatter = ConfigKeyFormatter.instance(),
) {
if (parent && !parent.isInternal()) {
throw new ConfigKeyError('Parent must be an instance of InternalNode');
}
}
public abstract isArray(): boolean;
public abstract isArrayIndex(): boolean;
public abstract isInternal(): boolean;
public abstract isLeaf(): boolean;
public abstract isRoot(): boolean;
public path(): string {
const segments: string[] = [];
// eslint-disable-next-line @typescript-eslint/no-this-alias,unicorn/no-this-assignment
let node: Node = this;
while (node) {
segments.push(node.name);
node = node.parent;
}
segments.reverse();
return this.formatter.join(...segments);
}
}