import {InkObject} from './Object';
import {Path} from './Path';

export class VariableReference extends InkObject{

	public name: string | null;
	public pathForCount: Path | null = null;

	get containerForCount(){
		if (this.pathForCount === null)
			return null;
		return this.ResolvePath(this.pathForCount).container;
	}
	get pathStringForCount(){
		if(this.pathForCount === null)
			return null;

		return this.CompactPathString(this.pathForCount);
	}
	set pathStringForCount(value: string | null){
		if (value === null)
			this.pathForCount = null;
		else
			this.pathForCount = new Path(value);
	}

	constructor(name: string | null = null){
		super();
		this.name = name;
	}

	public toString(){
		if (this.name != null) {
			return 'var(' + this.name + ')';
		} else {
			let pathStr = this.pathStringForCount;
			return 'read_count(' + pathStr + ')';
		}
	}
}
