Skip to content

Commit

Permalink
Implementando métodos no processo de tradução reversa (#154)
Browse files Browse the repository at this point in the history
* Implementando métodos na tradução reversa (3/43)
* Implementa método constrast na tradução reversa (4/43)
* Implementa metodo cubic-bezier na tradução reversa
* Implementa metodo fit-content na tradução reversa
* Implementando metodos na tradução reversa (12/43)
* Implementa metodo linear-gradient na tradução reversa
* Implementando métodos Hex, Hsl e Hsla na traducao reversa
* Implementando métodos Skew, SkewX e SkewY na traducao reversa
* Implementa metodo invert na tradução reversa
* Implementa metodo clamp na tradução reversa
* Implementa metodo linear na tradução reversa
* Implementa metodo minmax na tradução reversa
* Corrige nomenclatura de seletor no dicionário reverso
* Implementa metodo opacity na tradução reversa
* Implementa metodo steps na tradução reversa
* Implementando métodos css no processo de tradução reversa (28/43)
* Implementando métodos de cor rgb e rgba na tradução reversa
* Implementando métodos rotacionar na tradução reversa
* Implementando metodos na tradução reversa (37/43)
* FInaliza implementação de metodos na tradução reversa
* Implementa listas de base para os testes unitarios dos metodos
* Implementa testes unitarios do metodo blur
* Implementa testes unitarios do metodo brightness
* Implementa testes unitarios do metodo calc
* Implementa testes unitarios do metodo constrast
* Implementando testes unitarios dos metodos reversos (8/43)
* Implementando testes unitarios dos metodos reversos (14/43)
* Implementando testes unitarios dos metodos reversos (16/43)
* Implementando testes unitarios dos metodos reversos (23/43)
* Listando cores em inglês para alimentar o Lexador Reverso
* Implementa testes do metodo drop-shadow() com valores de cor
* Inclui valores de posição na listagem de qualitativos
* Testes unitários do método ray() com valores de posição
* Testes unitários do grupo de métodos rotate()
* Implementando testes unitarios dos metodos reversos (35/43)
* Testes unitários - grupo de métodos translate()
* Ajusta Av. Sintatico reverso para corrigir metodo translate3d
* Exclui lógica de quantificador graus nos métodos reversos
* Otimiza métodos a partir da cobertura de testes
* Corrige método url na tradução reversa
* Implementa dicionário suplementar para distinguir nomenclaturas
* Ajusta classe de Seletor Valor Reverso para acessar dicionário suplementar
* Complementa Av SIntatico reverso na operação dos métodos
* Testes unitários - método rotate()
* Testes unitários - método opacity()
* Testes unitários - método perspective()
* Testes unitários - método scale()
* Testes unitários - método translate()
* Testes unitários - método translate() com múltiplos valores
* Corrige constructor de métodos perspective e perspectivar
* Corrige tratamento de quantificador no método translate()
* Testes unitários - método scale() com múltiplos valores
* Conserta estrutura do método minmax() e implementa testes complementares
* Exclui lógica de tradução de quantificadores no método rotate()
  • Loading branch information
VitBrandao authored Jan 14, 2025
1 parent 311e9b7 commit 648416b
Show file tree
Hide file tree
Showing 53 changed files with 4,406 additions and 52 deletions.
4 changes: 4 additions & 0 deletions exemplos/exemplo.foles
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,8 @@

%campos {
margem-inferior: 50px;
}

lmht {
cor-fundo: hsl(50, 80%, 80%);
}
47 changes: 47 additions & 0 deletions exemplos/reverso/exemplo-metodos.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
div {
backdrop-filter: blur(10);
gap: calc(100px - 10px);
filter: contrast(50);
animation: cubic-bezier(0, 0, 1, 1);
height: fit-content(10%);
transform: scaleZ(20);
}

p {
backdrop-filter: grayscale(10%);
transform: scale3d(1, 1, 1);
border-image-source: linear-gradient(45deg, blue, red);
height: clamp(1.5rem, 2.5vw, 4rem);
color: rgba(150, 0, 150);
}

html {
background-color: hsla(50 80% 40%);
transform: skewY(15deg);
backdrop-filter: invert(50%);
animation: linear(0, 0.25, 1);
grid-template-columns: minmax(100px, max-content);
}

div {
transition-timing-function: steps(4, jump-both);
backdrop-filter: drop-shadow(5px 5px 15px);
offset-path: ray(200deg);
color: rgb(230, 200, 150);
transform: rotateZ(0);
}

a {
backdrop-filter: hue-rotate(90deg);
transform: translateX(200px);
}

p {
backdrop-filter: sepia(60%);
transform: translateY(50%);
}

div {
backdrop-filter: saturate(5);
transform: translateZ(150);
}
739 changes: 715 additions & 24 deletions fontes/avaliador-sintatico/avaliador-sintatico-reverso.ts

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions fontes/avaliador-sintatico/avaliador-sintatico.ts
Original file line number Diff line number Diff line change
Expand Up @@ -703,28 +703,28 @@ export class AvaliadorSintatico implements AvaliadorSintaticoInterface {

const valorTranslacao1 = this.avancarEDevolverAnterior();

let quantificadorTranlacao1;
let quantificadorTranslacao1;
if (this.simbolos[this.atual].tipo === 'QUANTIFICADOR') {
quantificadorTranlacao1 = this.avancarEDevolverAnterior();
quantificadorTranslacao1 = this.avancarEDevolverAnterior();
} else {
quantificadorTranlacao1 = null;
quantificadorTranslacao1 = null;
}

let valorTranslacao2;
let quantificadorTranlacao2;
let quantificadorTranslacao2;
if (this.simbolos[this.atual].tipo === 'VIRGULA') {
this.consumir(tiposDeSimbolos.VIRGULA, "Esperado vírgula após primeiro argumento do método 'translação'.");
valorTranslacao2 = this.avancarEDevolverAnterior();
quantificadorTranlacao2 = this.avancarEDevolverAnterior();
quantificadorTranslacao2 = this.avancarEDevolverAnterior();
} else {
valorTranslacao2 = null;
quantificadorTranlacao2 = null;
quantificadorTranslacao2 = null;
}

this.consumir(tiposDeSimbolos.PARENTESE_DIREITO, "Esperado parêntese direito após método 'translação'.");
return new SeletorValor(
lexema,
[valorTranslacao1, quantificadorTranlacao1, valorTranslacao2, quantificadorTranlacao2]
[valorTranslacao1, quantificadorTranslacao1, valorTranslacao2, quantificadorTranslacao2]
);

case "translacao":
Expand Down
6 changes: 3 additions & 3 deletions fontes/foles.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ export class FolEs {
converterParaCss(nomeArquivo: string): string {
const resultadoLexador: [string[], ResultadoLexadorInterface] =
this.importador.importar(nomeArquivo, true);

return this.converterParaCssInterno(resultadoLexador[1].simbolos);
}

Expand Down Expand Up @@ -101,6 +101,6 @@ export class FolEs {
}

// const a = new FolEs(false);
// console.log(a.converterParaCss('../exemplos/exemplo4.foles'));
// console.log(a.converterParaFolEs('../exemplos/reverso/exemplo-liquido.css'));/
// console.log(a.converterParaCss('../exemplos/exemplo.foles'));
// console.log(a.converterParaFolEs('../exemplos/reverso/exemplo-metodos.css'));
// console.log(a.converterParaFolEs('../exemplos/reverso/exemplo-codigo.css'));
8 changes: 8 additions & 0 deletions fontes/lexador/lexador-reverso.ts
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,14 @@ export class LexadorReverso implements LexadorInterface {
this.adicionarSimbolo(tiposDeSimbolos.PONTO_E_VIRGULA);
this.avancar();
break;
case '%':
this.adicionarSimbolo(tiposDeSimbolos.QUANTIFICADOR, null, '%');
this.avancar();
break;
case ',':
this.adicionarSimbolo(tiposDeSimbolos.VIRGULA, null,',');
this.avancar();
break;
case ".":
this.adicionarSimbolo(
tiposDeSimbolos.PONTO,
Expand Down
152 changes: 151 additions & 1 deletion fontes/lexador/palavras-reservadas/css.ts
Original file line number Diff line number Diff line change
Expand Up @@ -114,13 +114,14 @@ export default {
// AVALIAR: perspective é a tradução tanto de um modificador quanto de um método
// 'perspective': tiposDeSimbolos.METODO,
'drop-shadow': tiposDeSimbolos.METODO,
'ray': tiposDeSimbolos.METODO,
'rgb': tiposDeSimbolos.METODO,
'rgba': tiposDeSimbolos.METODO,
'rotateZ': tiposDeSimbolos.METODO,
'rotateY': tiposDeSimbolos.METODO,
'hue-rotate': tiposDeSimbolos.METODO,
'rotateX': tiposDeSimbolos.METODO,
'rotate': tiposDeSimbolos.METODO,
// 'rotate': tiposDeSimbolos.METODO,
'saturate': tiposDeSimbolos.METODO,
'sepia': tiposDeSimbolos.METODO,
'translate3d': tiposDeSimbolos.METODO,
Expand Down Expand Up @@ -168,4 +169,153 @@ export default {
// AVALIAR
// "s": tiposDeSimbolos.QUANTIFICADOR,
// "em": tiposDeSimbolos.QUANTIFICADOR,

// QUALITATIVOS
// 1. CORES
"aliceblue": tiposDeSimbolos.QUALITATIVO,
"antiquewhite": tiposDeSimbolos.QUALITATIVO,
"aqua": tiposDeSimbolos.QUALITATIVO,
"aquamarine": tiposDeSimbolos.QUALITATIVO,
"azure": tiposDeSimbolos.QUALITATIVO,
"beige": tiposDeSimbolos.QUALITATIVO,
"bisque": tiposDeSimbolos.QUALITATIVO,
"black": tiposDeSimbolos.QUALITATIVO,
"blanchedalmond": tiposDeSimbolos.QUALITATIVO,
"blue": tiposDeSimbolos.QUALITATIVO,
"blueviolet": tiposDeSimbolos.QUALITATIVO,
"brown": tiposDeSimbolos.QUALITATIVO,
"burlywood": tiposDeSimbolos.QUALITATIVO,
"cadetblue": tiposDeSimbolos.QUALITATIVO,
"chartreuse": tiposDeSimbolos.QUALITATIVO,
"chocolate": tiposDeSimbolos.QUALITATIVO,
"cornflowerblue": tiposDeSimbolos.QUALITATIVO,
"cornsilk": tiposDeSimbolos.QUALITATIVO,
"crimson": tiposDeSimbolos.QUALITATIVO,
"cyan": tiposDeSimbolos.QUALITATIVO,
"darkblue": tiposDeSimbolos.QUALITATIVO,
"darkcyan": tiposDeSimbolos.QUALITATIVO,
"darkgoldenrod": tiposDeSimbolos.QUALITATIVO,
"darkgray": tiposDeSimbolos.QUALITATIVO,
"darkgreen": tiposDeSimbolos.QUALITATIVO,
"darkkhaki": tiposDeSimbolos.QUALITATIVO,
"darkmagenta": tiposDeSimbolos.QUALITATIVO,
"darkolivegreen": tiposDeSimbolos.QUALITATIVO,
"darkorange": tiposDeSimbolos.QUALITATIVO,
"darkorchid": tiposDeSimbolos.QUALITATIVO,
"darkred": tiposDeSimbolos.QUALITATIVO,
"darksalmon": tiposDeSimbolos.QUALITATIVO,
"darkseagreen": tiposDeSimbolos.QUALITATIVO,
"darkslateblue": tiposDeSimbolos.QUALITATIVO,
"darkslategray": tiposDeSimbolos.QUALITATIVO,
"darkturquoise": tiposDeSimbolos.QUALITATIVO,
"darkviolet": tiposDeSimbolos.QUALITATIVO,
"deeppink": tiposDeSimbolos.QUALITATIVO,
"deepskyblue": tiposDeSimbolos.QUALITATIVO,
"dimgray": tiposDeSimbolos.QUALITATIVO,
"dodgerblue": tiposDeSimbolos.QUALITATIVO,
"firebrick": tiposDeSimbolos.QUALITATIVO,
"floralwhite": tiposDeSimbolos.QUALITATIVO,
"forestgreen": tiposDeSimbolos.QUALITATIVO,
"fuchsia": tiposDeSimbolos.QUALITATIVO,
"gainsboro": tiposDeSimbolos.QUALITATIVO,
"ghostwhite": tiposDeSimbolos.QUALITATIVO,
"goldenrod": tiposDeSimbolos.QUALITATIVO,
"gray": tiposDeSimbolos.QUALITATIVO,
"green": tiposDeSimbolos.QUALITATIVO,
"greenyellow": tiposDeSimbolos.QUALITATIVO,
"honeydew": tiposDeSimbolos.QUALITATIVO,
"hotpink": tiposDeSimbolos.QUALITATIVO,
"indianred": tiposDeSimbolos.QUALITATIVO,
"indigo": tiposDeSimbolos.QUALITATIVO,
"ivory": tiposDeSimbolos.QUALITATIVO,
"khaki": tiposDeSimbolos.QUALITATIVO,
"lavender": tiposDeSimbolos.QUALITATIVO,
"lavenderblush": tiposDeSimbolos.QUALITATIVO,
"lawngreen": tiposDeSimbolos.QUALITATIVO,
"lemonchiffon": tiposDeSimbolos.QUALITATIVO,
"lightblue": tiposDeSimbolos.QUALITATIVO,
"lightcoral": tiposDeSimbolos.QUALITATIVO,
"lightcyan": tiposDeSimbolos.QUALITATIVO,
"lightgoldenrodyellow": tiposDeSimbolos.QUALITATIVO,
"lightgray": tiposDeSimbolos.QUALITATIVO,
"lightgreen": tiposDeSimbolos.QUALITATIVO,
"lightpink": tiposDeSimbolos.QUALITATIVO,
"lightsalmon": tiposDeSimbolos.QUALITATIVO,
"lightseagreen": tiposDeSimbolos.QUALITATIVO,
"lightskyblue": tiposDeSimbolos.QUALITATIVO,
"lightslategray": tiposDeSimbolos.QUALITATIVO,
"lightsteelblue": tiposDeSimbolos.QUALITATIVO,
"lightyellow": tiposDeSimbolos.QUALITATIVO,
"lime": tiposDeSimbolos.QUALITATIVO,
"limegreen": tiposDeSimbolos.QUALITATIVO,
"linen": tiposDeSimbolos.QUALITATIVO,
"magenta": tiposDeSimbolos.QUALITATIVO,
"maroon": tiposDeSimbolos.QUALITATIVO,
"mediumaquamarine": tiposDeSimbolos.QUALITATIVO,
"mediumblue": tiposDeSimbolos.QUALITATIVO,
"mediumorchid": tiposDeSimbolos.QUALITATIVO,
"mediumpurple": tiposDeSimbolos.QUALITATIVO,
"mediumseagreen": tiposDeSimbolos.QUALITATIVO,
"mediumslateblue": tiposDeSimbolos.QUALITATIVO,
"mediumspringgreen": tiposDeSimbolos.QUALITATIVO,
"mediumturquoise": tiposDeSimbolos.QUALITATIVO,
"mediumvioletred": tiposDeSimbolos.QUALITATIVO,
"midnightblue": tiposDeSimbolos.QUALITATIVO,
"mintcream": tiposDeSimbolos.QUALITATIVO,
"mistyrose": tiposDeSimbolos.QUALITATIVO,
"moccasin": tiposDeSimbolos.QUALITATIVO,
"navajowhite": tiposDeSimbolos.QUALITATIVO,
"navy": tiposDeSimbolos.QUALITATIVO,
"oldlace": tiposDeSimbolos.QUALITATIVO,
"olive": tiposDeSimbolos.QUALITATIVO,
"olivedrab": tiposDeSimbolos.QUALITATIVO,
"orange": tiposDeSimbolos.QUALITATIVO,
"orangered": tiposDeSimbolos.QUALITATIVO,
"orchid": tiposDeSimbolos.QUALITATIVO,
"palegoldenrod": tiposDeSimbolos.QUALITATIVO,
"palegreen": tiposDeSimbolos.QUALITATIVO,
"paleturquoise": tiposDeSimbolos.QUALITATIVO,
"palevioletred": tiposDeSimbolos.QUALITATIVO,
"papayawhip": tiposDeSimbolos.QUALITATIVO,
"peachpuff": tiposDeSimbolos.QUALITATIVO,
"peru": tiposDeSimbolos.QUALITATIVO,
"pink": tiposDeSimbolos.QUALITATIVO,
"plum": tiposDeSimbolos.QUALITATIVO,
"powderblue": tiposDeSimbolos.QUALITATIVO,
"purple": tiposDeSimbolos.QUALITATIVO,
"red": tiposDeSimbolos.QUALITATIVO,
"rosybrown": tiposDeSimbolos.QUALITATIVO,
"royalblue": tiposDeSimbolos.QUALITATIVO,
"saddlebrown": tiposDeSimbolos.QUALITATIVO,
"salmon": tiposDeSimbolos.QUALITATIVO,
"sandybrown": tiposDeSimbolos.QUALITATIVO,
"seagreen": tiposDeSimbolos.QUALITATIVO,
"seashell": tiposDeSimbolos.QUALITATIVO,
"sienna": tiposDeSimbolos.QUALITATIVO,
"silver": tiposDeSimbolos.QUALITATIVO,
"skyblue": tiposDeSimbolos.QUALITATIVO,
"slateblue": tiposDeSimbolos.QUALITATIVO,
"slategray": tiposDeSimbolos.QUALITATIVO,
"snow": tiposDeSimbolos.QUALITATIVO,
"springgreen": tiposDeSimbolos.QUALITATIVO,
"steelblue": tiposDeSimbolos.QUALITATIVO,
"tan": tiposDeSimbolos.QUALITATIVO,
"teal": tiposDeSimbolos.QUALITATIVO,
"thistle": tiposDeSimbolos.QUALITATIVO,
"tomato": tiposDeSimbolos.QUALITATIVO,
"turquoise": tiposDeSimbolos.QUALITATIVO,
"violet": tiposDeSimbolos.QUALITATIVO,
"wheat": tiposDeSimbolos.QUALITATIVO,
"white": tiposDeSimbolos.QUALITATIVO,
"whitesmoke": tiposDeSimbolos.QUALITATIVO,
"yellow": tiposDeSimbolos.QUALITATIVO,
"yellowgreen": tiposDeSimbolos.QUALITATIVO,

// 2. POSIÇÕES
"closest-side": tiposDeSimbolos.QUALITATIVO,
"closest-corner": tiposDeSimbolos.QUALITATIVO,
"farthest-side": tiposDeSimbolos.QUALITATIVO,
"farthest-corner": tiposDeSimbolos.QUALITATIVO,
"sides": tiposDeSimbolos.QUALITATIVO,
"contain": tiposDeSimbolos.QUALITATIVO,
}
Original file line number Diff line number Diff line change
Expand Up @@ -363,6 +363,45 @@ import { VisibilidadeConteudo } from "../visibilidade-conteudo";
import { VisibilidadeFundo } from "../visibilidade-fundo";
import { Blur } from "../../valores/metodos/css/blur";
import { Brightness } from "../../valores/metodos/css/brightness";
import { Calc } from "../../valores/metodos/css/calc";
import { Contrast } from "../../valores/metodos/css/constrast";
import { CubicBezier } from "../../valores/metodos/css/cubic-bezier";
import { FitContent } from "../../valores/metodos/css/fit-content";
import { Grayscale } from "../../valores/metodos/css/grayscale";
import { Scale3d } from "../../valores/metodos/css/scale3d";
import { Scale } from "../../valores/metodos/css/scale";
import { ScaleX } from "../../valores/metodos/css/scaleX";
import { ScaleY } from "../../valores/metodos/css/scaleY";
import { ScaleZ } from "../../valores/metodos/css/scaleZ";
import { LinearGradient } from "../../valores/metodos/css/linear-gradient";
import { Hsl } from "../../valores/metodos/foles/hsl";
import { Hsla } from "../../valores/metodos/foles/hsla";
import { SkewX } from "../../valores/metodos/css/skewX";
import { SkewY } from "../../valores/metodos/css/skewY";
import { Skew } from "../../valores/metodos/css/skew";
import { Invert } from "../../valores/metodos/css/invert";
import { Clamp } from "../../valores/metodos/css/clamp";
import { Linear } from "../../valores/metodos/foles/linear";
import { MinMax } from "../../valores/metodos/css/minmax";
import { Opacity } from "../../valores/metodos/css/opacity";
import { Steps } from "../../valores/metodos/css/steps";
import { Perspective } from "../../valores/metodos/css/perspective";
import { DropShadow } from "../../valores/metodos/css/drop-shadow";
import { Ray } from "../../valores/metodos/css/ray";
import { Rgb } from "../../valores/metodos/foles/rgb";
import { Rgba } from "../../valores/metodos/foles/rgba";
import { Rotate } from "../../valores/metodos/css/rotate";
import { RotateX } from "../../valores/metodos/css/rotateX";
import { RotateY } from "../../valores/metodos/css/rotateY";
import { RotateZ } from "../../valores/metodos/css/rotateZ";
import { HueRotate } from "../../valores/metodos/css/hue-rotate";
import { Saturate } from "../../valores/metodos/css/saturate";
import { Sepia } from "../../valores/metodos/css/sepia";
import { Translate3d } from "../../valores/metodos/css/translate3d";
import { TranslateZ } from "../../valores/metodos/css/translateZ";
import { TranslateX } from "../../valores/metodos/css/translateX";
import { TranslateY } from "../../valores/metodos/css/translateY";
import { Translate } from "../../valores/metodos/css/translate";

export const DicionarioReversoModificadores: { [nomeCss: string]: any } = {
"word-wrap": AgruparPalavra,
Expand Down Expand Up @@ -585,7 +624,7 @@ export const DicionarioReversoModificadores: { [nomeCss: string]: any } = {
"scroll-margin-top": MargemSuperiorRolagemMouse,
"mask": Mascara,
"background-blend-mode": MesclarFundo,
"grid-template-column": ModeloColunasEmGrade,
"grid-template-columns": ModeloColunasEmGrade,
"grid-template": ModeloEmGrade,
"grid-template-areas": ModeloGeralEmGrade,
"grid-template-rows": ModeloLinhasEmGrade,
Expand Down Expand Up @@ -732,4 +771,43 @@ export const DicionarioReversoModificadores: { [nomeCss: string]: any } = {
// METODOS
"blur": Blur,
"brightness": Brightness,
"calc": Calc,
"clamp": Clamp,
"contrast": Contrast,
"cubic-bezier": CubicBezier,
"drop-shadow": DropShadow,
"fit-content": FitContent,
"grayscale": Grayscale,
"hsl": Hsl,
"hsla": Hsla,
"hue-rotate": HueRotate,
"invert": Invert,
"linear": Linear,
"linear-gradient": LinearGradient,
"minmax": MinMax,
// "opacity": Opacity,
// "perspective": Perspective,
"ray": Ray,
"rgb": Rgb,
"rgba": Rgba,
// "rotate": Rotate,
"rotateX": RotateX,
"rotateY": RotateY,
"rotateZ": RotateZ,
"saturate": Saturate,
"scale3d": Scale3d,
// "scale": Scale,
"scaleX": ScaleX,
"scaleY": ScaleY,
"scaleZ": ScaleZ,
"sepia": Sepia,
"skew": Skew,
"skewX": SkewX,
"skewY": SkewY,
"steps": Steps,
// "translate": Translate,
"translate3d": Translate3d,
"translateX": TranslateX,
"translateY": TranslateY,
"translateZ": TranslateZ,
}
Loading

0 comments on commit 648416b

Please sign in to comment.