Skip to content

Commit

Permalink
Usando novos pacotes de dialetos, que deixarão de fazer parte do núcl…
Browse files Browse the repository at this point in the history
…eo de Delégua + ajustes. (#36)

* Usando novos pacotes de dialetos, que deixarão de fazer parte do núcleo de Delégua.

* - Removendo o lodash como dependência deste pacote;
- Melhorando mock do teste unitário.

* Atualização do pacote do dialeto VisuAlg para a versão 0.0.1.

* Mock do `process.exit` também no núcleo de tradução.
Não falha local, mas falha no build do GitHub.

* Trocando o mock de `process.exit`.

* Removendo o `process.exit` completamente.
Fechando a interface de leitura que segurava a execução aberta.

* Alterando a referência dos componentes para `@designliquido/portugol-studio`.
leonelsanchesdasilva authored Feb 11, 2024
1 parent fad00c4 commit 0b23eca
Showing 7 changed files with 41 additions and 21 deletions.
2 changes: 1 addition & 1 deletion execucao.ts
Original file line number Diff line number Diff line change
@@ -59,7 +59,7 @@ const principal = async () => {
}

if (opcoes.codigo) {
await delegua.executarCodigoComoArgumento(
return await delegua.executarCodigoComoArgumento(
opcoes.codigo || codigoOuNomeArquivo,
opcoes.dialeto,
Boolean(opcoes.performance)
8 changes: 4 additions & 4 deletions fontes/delegua.ts
Original file line number Diff line number Diff line change
@@ -40,7 +40,7 @@ export class Delegua implements DeleguaInterface {

return JSON.parse(sistemaArquivos.readFileSync(manifesto, { encoding: 'utf8' })).version || '0.26';
} catch (error: any) {
return '0.24 (desenvolvimento)';
return '0.32 (desenvolvimento)';
}
}

@@ -51,7 +51,7 @@ export class Delegua implements DeleguaInterface {
): Promise<void> {
const nucleoExecucao = new NucleoExecucao(this.versao(), this.funcaoDeRetorno, this.funcaoDeRetornoMesmaLinha);
nucleoExecucao.configurarDialeto(dialeto, performance);
await nucleoExecucao.executarCodigoComoArgumento(codigo);
return await nucleoExecucao.executarCodigoComoArgumento(codigo);
}

async executarCodigoPorArquivo(
@@ -61,13 +61,13 @@ export class Delegua implements DeleguaInterface {
): Promise<any> {
const nucleoExecucao = new NucleoExecucao(this.versao(), this.funcaoDeRetorno, this.funcaoDeRetornoMesmaLinha);
nucleoExecucao.configurarDialeto(dialeto, performance);
await nucleoExecucao.carregarEExecutarArquivo(caminhoRelativoArquivo);
return await nucleoExecucao.carregarEExecutarArquivo(caminhoRelativoArquivo);
}

async iniciarLair(dialeto: string = 'delegua'): Promise<void> {
const nucleoExecucao = new NucleoExecucao(this.versao(), this.funcaoDeRetorno, this.funcaoDeRetornoMesmaLinha);
nucleoExecucao.configurarDialeto(dialeto, false);
await nucleoExecucao.iniciarLairDelegua();
return await nucleoExecucao.iniciarLairDelegua();
}

traduzirArquivo(
26 changes: 14 additions & 12 deletions fontes/nucleo-execucao.ts
Original file line number Diff line number Diff line change
@@ -26,18 +26,13 @@ import {
AvaliadorSintaticoPitugues,
AvaliadorSintaticoMapler,
AvaliadorSintaticoPortugolIpt,
AvaliadorSintaticoPortugolStudio,
AvaliadorSintaticoVisuAlg,
AvaliadorSintaticoPotigol,
} from "@designliquido/delegua/fontes/avaliador-sintatico/dialetos";
import {
InterpretadorBirl,
InterpretadorEguaClassico,
InterpretadorMapler,
InterpretadorPortugolIpt,
InterpretadorPortugolStudioComDepuracao,
InterpretadorPortugolStudio,
InterpretadorVisuAlg,
InterpretadorPotigol,
} from "@designliquido/delegua/fontes/interpretador/dialetos";
import { InterpretadorPotigolComDepuracao } from '@designliquido/delegua/fontes/interpretador/dialetos/potigol/interpretador-potigol-com-depuracao';
@@ -48,10 +43,17 @@ import {
LexadorPitugues,
LexadorMapler,
LexadorPortugolIpt,
LexadorPortugolStudio,
LexadorVisuAlg,
LexadorPotigol,
} from "@designliquido/delegua/fontes/lexador/dialetos";

import { LexadorPortugolStudio } from "@designliquido/portugol-studio/lexador";
import { AvaliadorSintaticoPortugolStudio } from '@designliquido/portugol-studio/avaliador-sintatico';
import { InterpretadorPortugolStudio, InterpretadorPortugolStudioComDepuracao } from '@designliquido/portugol-studio/interpretador';

import { LexadorVisuAlg } from '@designliquido/visualg/fontes/lexador';
import { AvaliadorSintaticoVisuAlg } from '@designliquido/visualg/fontes/avaliador-sintatico';
import { InterpretadorVisuAlg } from '@designliquido/visualg/fontes/interpretador';

import { Interpretador } from "./interpretador";
import { InterpretadorMaplerComDepuracaoImportacao } from "./interpretador/dialetos/interpretador-mapler-com-depuracao-importacao";
import { InterpretadorVisuAlgComDepuracaoImportacao } from "./interpretador/dialetos/interpretador-visualg-com-depuracao-importacao";
@@ -379,7 +381,7 @@ export class NucleoExecucao
// Se a interface de entrada e saída ainda não está definida, definimos agora.
// A interface pode ser definida por um teste unitário antes da execução
// aqui, por exemplo.
let interfaceLeitura: any;
let interfaceLeitura: readline.Interface | any;
if (!this.interpretador.interfaceEntradaSaida) {
interfaceLeitura = readline.createInterface({
input: process.stdin,
@@ -408,19 +410,19 @@ export class NucleoExecucao
errosExecucao = erros;
}

if (interfaceLeitura && interfaceLeitura.hasOwnProperty("close")) {
if (interfaceLeitura && (interfaceLeitura instanceof readline.Interface || interfaceLeitura.hasOwnProperty("close"))) {
interfaceLeitura.close();
}

if (errosExecucao.length > 0) process.exit(70); // Código com exceções não tratadas
process.exit(0);
if (errosExecucao.length > 0) process.exitCode = 70; // Código com exceções não tratadas
return;
}

/**
* LAIR (Leia-Avalie-Imprima-Repita) é o modo em que Delégua executa em modo console,
* ou seja, esperando como entrada linhas de código fornecidas pelo usuário.
*/
iniciarLairDelegua(): void {
async iniciarLairDelegua(): Promise<void> {
const lexadorJson = new LexadorJson();
const formatadorJson = new FormatadorJson();

1 change: 1 addition & 0 deletions jest.config.ts
Original file line number Diff line number Diff line change
@@ -7,5 +7,6 @@ export default async (): Promise<Config.InitialOptions> => {
preset: 'ts-jest',
testEnvironment: 'node',
coverageReporters: ['json-summary', 'lcov', 'text', 'text-summary'],
detectOpenHandles: true
};
};
7 changes: 4 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -3,7 +3,7 @@
"version": "0.32.2",
"description": "Linguagem Delégua com capacidades para ecossistema Node.js.",
"scripts": {
"empacotar": "rimraf ./dist && tsc && copyfiles -V ./bin/delegua ./bin/delegua.cmd ./dist && copyfiles -V ./package.json ./dist/bin && copyfiles -V ./README.md ./dist && copyfiles -V ./LICENSE ./dist",
"empacotar": "yarn rimraf ./dist && tsc && yarn copyfiles -V ./bin/delegua ./bin/delegua.cmd ./dist && yarn copyfiles -V ./package.json ./dist/bin && yarn copyfiles -V ./README.md ./dist && yarn copyfiles -V ./LICENSE ./dist",
"testes-unitarios": "jest --coverage",
"testes:egua": "./bin/delegua-ts exemplos/dialetos/egua-classico/testes.egua",
"testes:delegua:bhaskara": "./bin/delegua-ts exemplos/dialetos/egua-classico/bhaskara.egua",
@@ -13,10 +13,11 @@
},
"dependencies": {
"@designliquido/delegua": "0.32.2",
"@designliquido/portugol-studio": "^0.0.0",
"@designliquido/visualg": "^0.0.1",
"chalk": "4.1.2",
"commander": "^9.4.1",
"json-colorizer": "^2.2.2",
"lodash.clonedeep": "^4.5.0"
"json-colorizer": "^2.2.2"
},
"devDependencies": {
"@designliquido/delegua-estatistica": "^0.0.5",
1 change: 1 addition & 0 deletions testes/nucleo-traducao.test.ts
Original file line number Diff line number Diff line change
@@ -5,6 +5,7 @@ describe('Núcleo de tradução', () => {
let retornoSaida: string = '';
const funcaoDeRetorno = (saida: string) => retornoSaida += saida;
const nucleoTraducao = new NucleoTraducao(funcaoDeRetorno);

nucleoTraducao.iniciarTradutor('javascript-para-delegua');
nucleoTraducao.traduzirArquivo('./exemplos/tradutores/javascript-para-delegua.js', false);

17 changes: 16 additions & 1 deletion yarn.lock
Original file line number Diff line number Diff line change
@@ -337,7 +337,7 @@
resolved "https://registry.yarnpkg.com/@designliquido/delegua-tempo/-/delegua-tempo-0.0.1.tgz#964834d127354857cda1c388f5de9327735b6747"
integrity sha512-/O1/eXlTXPTWSZGZ862i6uHHKCW0cmP6KnOV29zK4d4hgn03QjcNDeFKVC9L9vz3OJ6pPY0d/S8ANJkgBnnoaQ==

"@designliquido/delegua@0.32.2":
"@designliquido/delegua@0.32.2", "@designliquido/delegua@^0.32.2":
version "0.32.2"
resolved "https://registry.yarnpkg.com/@designliquido/delegua/-/delegua-0.32.2.tgz#97dbffc39b17fd280ada32e141da7547a80edbfa"
integrity sha512-2iEW78j+SMt57uvDeC366RuDcOWkmU2wQ1lMhbGvF8JnbrjK4vijXk/aEHtsr03M0wGnjUERoGx4l/jCWmedFA==
@@ -347,6 +347,21 @@
esprima "^4.0.1"
lodash.clonedeep "^4.5.0"

"@designliquido/portugol-studio@^0.0.0":
version "0.0.0"
resolved "https://registry.yarnpkg.com/@designliquido/portugol-studio/-/portugol-studio-0.0.0.tgz#cf40e6f0c2837b32e35e84332211b5c56073ccc7"
integrity sha512-al4IR4HZRw5q9Ujsf6B6I+3Sy3G2jEhYCeli90iZKfxq7meNBmwqXiUvWdrX1RpM6scwWDO1UDVHTlASYyan9g==
dependencies:
"@designliquido/delegua" "^0.32.2"

"@designliquido/visualg@^0.0.1":
version "0.0.1"
resolved "https://registry.yarnpkg.com/@designliquido/visualg/-/visualg-0.0.1.tgz#650e24ad914aeae0465a72b6a9eea6cb1c2b6619"
integrity sha512-SV2O9g51iN6VM/dmYkml23BUYbKEwT9eIVja/koGTrKcG3tRfL5vMaiWSdghSLuBmBgtmOPJ6Tenj3y1nc66Rg==
dependencies:
"@designliquido/delegua" "^0.32.2"
lodash "^4.17.21"

"@iarna/toml@2.2.5":
version "2.2.5"
resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.5.tgz#b32366c89b43c6f8cefbdefac778b9c828e3ba8c"

0 comments on commit 0b23eca

Please sign in to comment.