From 314a966891486b2bf4ce8c2d384025489d25ef50 Mon Sep 17 00:00:00 2001 From: VitBrandao Date: Tue, 10 Dec 2024 16:19:42 -0300 Subject: [PATCH] =?UTF-8?q?Implementando=20metodos=20na=20tradu=C3=A7?= =?UTF-8?q?=C3=A3o=20reversa=20(37/43)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- exemplos/reverso/exemplo-metodos.css | 10 +++++-- .../avaliador-sintatico-reverso.ts | 29 +++++++++++++++++++ .../dicionario-reverso-modificadores.ts | 4 +++ fontes/valores/metodos/css/saturate.ts | 23 +++++++++++++++ fontes/valores/metodos/css/sepia.ts | 23 +++++++++++++++ 5 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 fontes/valores/metodos/css/saturate.ts create mode 100644 fontes/valores/metodos/css/sepia.ts diff --git a/exemplos/reverso/exemplo-metodos.css b/exemplos/reverso/exemplo-metodos.css index ec3b299b..908a7bc5 100644 --- a/exemplos/reverso/exemplo-metodos.css +++ b/exemplos/reverso/exemplo-metodos.css @@ -31,10 +31,14 @@ div { transform: rotateZ(0); } +a { + backdrop-filter: hue-rotate(90deg); +} + p { - backdrop-filter: brightness(10); + backdrop-filter: sepia(60%); } -a { - backdrop-filter: hue-rotate(90deg); +div { + backdrop-filter: saturate(5); } \ No newline at end of file diff --git a/fontes/avaliador-sintatico/avaliador-sintatico-reverso.ts b/fontes/avaliador-sintatico/avaliador-sintatico-reverso.ts index f6a4133b..8ff8e49c 100644 --- a/fontes/avaliador-sintatico/avaliador-sintatico-reverso.ts +++ b/fontes/avaliador-sintatico/avaliador-sintatico-reverso.ts @@ -718,6 +718,35 @@ export class AvaliadorSintaticoReverso implements AvaliadorSintaticoInterface { [valorRotacionarY, quantificadorRotacionarY] ); + case "saturate": + this.consumir(tiposDeSimbolos.PARENTESE_ESQUERDO, "Esperado parêntese esquerdo após método 'saturate'."); + const valorSaturar = this.avancarEDevolverAnterior(); + let quantificadorSaturar; + if (this.simbolos[this.atual].tipo === 'QUANTIFICADOR') { + quantificadorSaturar = this.avancarEDevolverAnterior(); + } else { + quantificadorSaturar = null; + } + this.consumir(tiposDeSimbolos.PARENTESE_DIREITO, "Esperado parêntese direito após método 'saturate'."); + return new SeletorValorReverso( + lexema, + [valorSaturar, quantificadorSaturar] + ); + + case "sepia": + this.consumir(tiposDeSimbolos.PARENTESE_ESQUERDO, "Esperado parêntese esquerdo após método 'sepia'."); + const valorSepia = this.avancarEDevolverAnterior(); + let quantificadorSepia; + if (this.simbolos[this.atual].tipo === 'QUANTIFICADOR') { + quantificadorSepia = this.avancarEDevolverAnterior(); + } else { + quantificadorSepia = null; + } + this.consumir(tiposDeSimbolos.PARENTESE_DIREITO, "Esperado parêntese direito após método 'sepia'."); + return new SeletorValorReverso( + lexema, + [valorSepia, quantificadorSepia] + ); } } diff --git a/fontes/modificadores/dicionario/dicionario-reverso-modificadores.ts b/fontes/modificadores/dicionario/dicionario-reverso-modificadores.ts index 940ff708..5b8b252e 100644 --- a/fontes/modificadores/dicionario/dicionario-reverso-modificadores.ts +++ b/fontes/modificadores/dicionario/dicionario-reverso-modificadores.ts @@ -395,6 +395,8 @@ 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"; export const DicionarioReversoModificadores: { [nomeCss: string]: any } = { "word-wrap": AgruparPalavra, @@ -787,11 +789,13 @@ export const DicionarioReversoModificadores: { [nomeCss: string]: any } = { "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, diff --git a/fontes/valores/metodos/css/saturate.ts b/fontes/valores/metodos/css/saturate.ts new file mode 100644 index 00000000..f2e0782b --- /dev/null +++ b/fontes/valores/metodos/css/saturate.ts @@ -0,0 +1,23 @@ +import { Simbolo } from "../../../lexador"; +import { MetodoCss } from "./metodo-css"; + +export class Saturate extends MetodoCss { + valor: number; + quantificador: string; + traducao: string; + + constructor(valor: Simbolo, quantificador: Simbolo) { + super(); + this.valor = Number(valor.lexema); + this.quantificador = quantificador ? quantificador.lexema : null; + this.traducao = 'saturate'; + } + + paraTexto() { + if (this.quantificador) { + return `saturar(${this.valor}${this.quantificador})` + } + + return `saturar(${this.valor})` + } +} \ No newline at end of file diff --git a/fontes/valores/metodos/css/sepia.ts b/fontes/valores/metodos/css/sepia.ts new file mode 100644 index 00000000..6e81e68e --- /dev/null +++ b/fontes/valores/metodos/css/sepia.ts @@ -0,0 +1,23 @@ +import { Simbolo } from "../../../lexador"; +import { MetodoCss } from "./metodo-css"; + +export class Sepia extends MetodoCss { + valor: number; + quantificador: string; + traducao: string; + + constructor(valor: Simbolo, quantificador: Simbolo) { + super(); + this.valor = Number(valor.lexema); + this.quantificador = quantificador ? quantificador.lexema : null; + this.traducao = 'sepia'; + } + + paraTexto() { + if (this.quantificador) { + return `sepia(${this.valor}${this.quantificador})` + } + + return `sepia(${this.valor})` + } +} \ No newline at end of file