"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.AjudaComoConstruto = void 0;
/**
 * Ajuda pode ser declaração ou construto. Para construto, o comportamento é
 * um pouco diferente do de ajuda como declaração. Por exemplo, se usado com
 * operadores, sempre resolve como um `texto`.
 */
class AjudaComoConstruto {
    constructor(hashArquivo, linha, elemento, funcao = true) {
        this.hashArquivo = hashArquivo;
        this.linha = linha;
        this.valor = elemento;
        this.funcao = funcao;
    }
    async aceitar(visitante) {
        return await visitante.visitarExpressaoAjuda(this);
    }
    paraTexto() {
        let retorno = `<ajuda `;
        if (this.valor) {
            retorno += `elemento=${this.valor.paraTexto()} `;
        }
        retorno += `funcao=${this.funcao ? 'Sim' : 'Não'} />`;
        return retorno;
    }
    paraTextoSaida() {
        throw new Error("Method not implemented.");
    }
}
exports.AjudaComoConstruto = AjudaComoConstruto;
//# sourceMappingURL=ajuda-como-construto.js.map