@designliquido/delegua
Version:
Linguagem de programação simples e moderna usando português estruturado.
65 lines • 2.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const excecoes_1 = require("../excecoes");
const construtos_1 = require("../construtos");
const mapaPropriedadesTuplas = {
Dupla: ['primeiro', 'segundo'],
Trio: ['primeiro', 'segundo', 'terceiro'],
Quarteto: ['primeiro', 'segundo', 'terceiro', 'quarto'],
Quinteto: ['primeiro', 'segundo', 'terceiro', 'quarto', 'quinto'],
Sexteto: ['primeiro', 'segundo', 'terceiro', 'quarto', 'quinto', 'sexto'],
Septeto: ['primeiro', 'segundo', 'terceiro', 'quarto', 'quinto', 'sexto', 'setimo'],
Octeto: ['primeiro', 'segundo', 'terceiro', 'quarto', 'quinto', 'sexto', 'setimo', 'oitavo'],
Noneto: [
'primeiro',
'segundo',
'terceiro',
'quarto',
'quinto',
'sexto',
'setimo',
'oitavo',
'nono',
],
Deceto: [
'primeiro',
'segundo',
'terceiro',
'quarto',
'quinto',
'sexto',
'setimo',
'oitavo',
'nono',
'decimo',
],
};
exports.default = {
paraVetor: {
tipoRetorno: 'vetor',
argumentos: [],
implementacao: (interpretador, tupla) => {
const objetoTupla = interpretador.resolverValor(tupla);
if (!(objetoTupla instanceof construtos_1.Tupla || objetoTupla instanceof construtos_1.TuplaN)) {
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(null, 'A função "paraVetor" só pode ser chamada em tuplas.', interpretador.linhaDeclaracaoAtual));
}
let elementosBrutos = [];
if (objetoTupla instanceof construtos_1.TuplaN) {
elementosBrutos = objetoTupla.elementos;
}
else {
const nomeClasse = objetoTupla.constructor.name;
if (mapaPropriedadesTuplas.hasOwnProperty(nomeClasse)) {
const props = mapaPropriedadesTuplas[nomeClasse];
elementosBrutos = props.map((prop) => objetoTupla[prop]);
}
}
const valoresResolvidos = elementosBrutos.map((elemento) => interpretador.resolverValor(elemento));
return Promise.resolve(valoresResolvidos);
},
assinaturaFormato: 'tupla.paraVetor()',
documentacao: '# `tupla.paraVetor()` \n \n' + 'Converte a tupla atual em um array.',
exemploCodigo: 'tupla.paraVetor()',
},
};
//# sourceMappingURL=primitivas-tupla.js.map