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`.
  • Loading branch information
leonelsanchesdasilva authored Feb 11, 2024
1 parent fad00c4 commit 0b23eca
Show file tree
Hide file tree
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
Expand Up @@ -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)
Expand Down
8 changes: 4 additions & 4 deletions fontes/delegua.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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)';
}
}

Expand All @@ -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(
Expand All @@ -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(
Expand Down
26 changes: 14 additions & 12 deletions fontes/nucleo-execucao.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand All @@ -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";
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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();

Expand Down
1 change: 1 addition & 0 deletions jest.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Up @@ -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",
Expand All @@ -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",
Expand Down
1 change: 1 addition & 0 deletions testes/nucleo-traducao.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down
17 changes: 16 additions & 1 deletion yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -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/[email protected]":
"@designliquido/[email protected]", "@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==
Expand All @@ -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/[email protected]":
version "2.2.5"
resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.5.tgz#b32366c89b43c6f8cefbdefac778b9c828e3ba8c"
Expand Down

0 comments on commit 0b23eca

Please sign in to comment.