@designliquido/foles 0.9.5 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1333) hide show
  1. package/execucao.js +9 -2
  2. package/execucao.js.map +1 -1
  3. package/fontes/avaliador-sintatico/avaliador-sintatico-reverso.d.ts +2 -1
  4. package/fontes/avaliador-sintatico/avaliador-sintatico-reverso.js +342 -105
  5. package/fontes/avaliador-sintatico/avaliador-sintatico-reverso.js.map +1 -1
  6. package/fontes/avaliador-sintatico/avaliador-sintatico.d.ts +6 -4
  7. package/fontes/avaliador-sintatico/avaliador-sintatico.js +170 -115
  8. package/fontes/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
  9. package/fontes/declaracoes/declaracao-variavel.d.ts +2 -3
  10. package/fontes/declaracoes/declaracao-variavel.js +2 -3
  11. package/fontes/declaracoes/declaracao-variavel.js.map +1 -1
  12. package/fontes/foles.d.ts +4 -4
  13. package/fontes/foles.js +12 -11
  14. package/fontes/foles.js.map +1 -1
  15. package/fontes/gerador-mapa/index.js +6 -4
  16. package/fontes/gerador-mapa/index.js.map +1 -1
  17. package/fontes/lexador/palavras-reservadas/css.d.ts +21 -13
  18. package/fontes/lexador/palavras-reservadas/css.js +21 -13
  19. package/fontes/lexador/palavras-reservadas/css.js.map +1 -1
  20. package/fontes/lexador/palavras-reservadas/foles.d.ts +368 -0
  21. package/fontes/lexador/palavras-reservadas/foles.js +386 -306
  22. package/fontes/lexador/palavras-reservadas/foles.js.map +1 -1
  23. package/fontes/modificadores/agrupar-palavra.d.ts +2 -1
  24. package/fontes/modificadores/agrupar-palavra.js +5 -4
  25. package/fontes/modificadores/agrupar-palavra.js.map +1 -1
  26. package/fontes/modificadores/agrupar-vazamento.d.ts +2 -1
  27. package/fontes/modificadores/agrupar-vazamento.js +5 -4
  28. package/fontes/modificadores/agrupar-vazamento.js.map +1 -1
  29. package/fontes/modificadores/ajustar-objeto.d.ts +2 -1
  30. package/fontes/modificadores/ajustar-objeto.js +5 -4
  31. package/fontes/modificadores/ajustar-objeto.js.map +1 -1
  32. package/fontes/modificadores/ajustar-tamanho-fonte.d.ts +2 -1
  33. package/fontes/modificadores/ajustar-tamanho-fonte.js +7 -10
  34. package/fontes/modificadores/ajustar-tamanho-fonte.js.map +1 -1
  35. package/fontes/modificadores/ajuste-cor-forcado.d.ts +2 -1
  36. package/fontes/modificadores/ajuste-cor-forcado.js +5 -4
  37. package/fontes/modificadores/ajuste-cor-forcado.js.map +1 -1
  38. package/fontes/modificadores/alinhar-conteudo.d.ts +2 -1
  39. package/fontes/modificadores/alinhar-conteudo.js +6 -4
  40. package/fontes/modificadores/alinhar-conteudo.js.map +1 -1
  41. package/fontes/modificadores/alinhar-encaixe-rolagem-mouse.d.ts +2 -1
  42. package/fontes/modificadores/alinhar-encaixe-rolagem-mouse.js +6 -4
  43. package/fontes/modificadores/alinhar-encaixe-rolagem-mouse.js.map +1 -1
  44. package/fontes/modificadores/alinhar-itens.d.ts +2 -1
  45. package/fontes/modificadores/alinhar-itens.js +6 -4
  46. package/fontes/modificadores/alinhar-itens.js.map +1 -1
  47. package/fontes/modificadores/alinhar-se.d.ts +2 -1
  48. package/fontes/modificadores/alinhar-se.js +6 -4
  49. package/fontes/modificadores/alinhar-se.js.map +1 -1
  50. package/fontes/modificadores/alinhar-texto.d.ts +2 -1
  51. package/fontes/modificadores/alinhar-texto.js +6 -4
  52. package/fontes/modificadores/alinhar-texto.js.map +1 -1
  53. package/fontes/modificadores/alinhar-ultimo-item.d.ts +2 -1
  54. package/fontes/modificadores/alinhar-ultimo-item.js +6 -6
  55. package/fontes/modificadores/alinhar-ultimo-item.js.map +1 -1
  56. package/fontes/modificadores/alinhar-vertical.d.ts +2 -1
  57. package/fontes/modificadores/alinhar-vertical.js +5 -9
  58. package/fontes/modificadores/alinhar-vertical.js.map +1 -1
  59. package/fontes/modificadores/altura-linha.d.ts +2 -1
  60. package/fontes/modificadores/altura-linha.js +5 -10
  61. package/fontes/modificadores/altura-linha.js.map +1 -1
  62. package/fontes/modificadores/altura-maxima.d.ts +2 -1
  63. package/fontes/modificadores/altura-maxima.js +5 -9
  64. package/fontes/modificadores/altura-maxima.js.map +1 -1
  65. package/fontes/modificadores/altura-minima.d.ts +2 -1
  66. package/fontes/modificadores/altura-minima.js +5 -9
  67. package/fontes/modificadores/altura-minima.js.map +1 -1
  68. package/fontes/modificadores/altura.d.ts +2 -1
  69. package/fontes/modificadores/altura.js +5 -9
  70. package/fontes/modificadores/altura.js.map +1 -1
  71. package/fontes/modificadores/animacao.d.ts +2 -1
  72. package/fontes/modificadores/animacao.js +7 -7
  73. package/fontes/modificadores/animacao.js.map +1 -1
  74. package/fontes/modificadores/ao-mudar.d.ts +2 -1
  75. package/fontes/modificadores/ao-mudar.js +7 -6
  76. package/fontes/modificadores/ao-mudar.js.map +1 -1
  77. package/fontes/modificadores/aparencia.d.ts +2 -1
  78. package/fontes/modificadores/aparencia.js +10 -6
  79. package/fontes/modificadores/aparencia.js.map +1 -1
  80. package/fontes/modificadores/area-mascara.d.ts +2 -1
  81. package/fontes/modificadores/area-mascara.js +7 -6
  82. package/fontes/modificadores/area-mascara.js.map +1 -1
  83. package/fontes/modificadores/atraso-animacao.d.ts +2 -1
  84. package/fontes/modificadores/atraso-animacao.js +5 -9
  85. package/fontes/modificadores/atraso-animacao.js.map +1 -1
  86. package/fontes/modificadores/atraso-transicao.d.ts +2 -1
  87. package/fontes/modificadores/atraso-transicao.js +7 -11
  88. package/fontes/modificadores/atraso-transicao.js.map +1 -1
  89. package/fontes/modificadores/atributos/cores.js +171 -171
  90. package/fontes/modificadores/atributos/cores.js.map +1 -1
  91. package/fontes/modificadores/atributos/gerais.js +126 -121
  92. package/fontes/modificadores/atributos/gerais.js.map +1 -1
  93. package/fontes/modificadores/atributos/posicoes.js +1 -1
  94. package/fontes/modificadores/atributos/posicoes.js.map +1 -1
  95. package/fontes/modificadores/borda-direita.d.ts +2 -1
  96. package/fontes/modificadores/borda-direita.js +7 -11
  97. package/fontes/modificadores/borda-direita.js.map +1 -1
  98. package/fontes/modificadores/borda-em-bloco.d.ts +2 -1
  99. package/fontes/modificadores/borda-em-bloco.js +7 -11
  100. package/fontes/modificadores/borda-em-bloco.js.map +1 -1
  101. package/fontes/modificadores/borda-em-linha.d.ts +2 -1
  102. package/fontes/modificadores/borda-em-linha.js +7 -11
  103. package/fontes/modificadores/borda-em-linha.js.map +1 -1
  104. package/fontes/modificadores/borda-esquerda.d.ts +2 -1
  105. package/fontes/modificadores/borda-esquerda.js +7 -11
  106. package/fontes/modificadores/borda-esquerda.js.map +1 -1
  107. package/fontes/modificadores/borda-inferior.d.ts +2 -1
  108. package/fontes/modificadores/borda-inferior.js +7 -11
  109. package/fontes/modificadores/borda-inferior.js.map +1 -1
  110. package/fontes/modificadores/borda-mascara.d.ts +2 -1
  111. package/fontes/modificadores/borda-mascara.js +11 -20
  112. package/fontes/modificadores/borda-mascara.js.map +1 -1
  113. package/fontes/modificadores/borda-superior.d.ts +2 -1
  114. package/fontes/modificadores/borda-superior.js +7 -11
  115. package/fontes/modificadores/borda-superior.js.map +1 -1
  116. package/fontes/modificadores/borda.d.ts +2 -1
  117. package/fontes/modificadores/borda.js +7 -11
  118. package/fontes/modificadores/borda.js.map +1 -1
  119. package/fontes/modificadores/calha-barra-rolagem.d.ts +2 -1
  120. package/fontes/modificadores/calha-barra-rolagem.js +5 -4
  121. package/fontes/modificadores/calha-barra-rolagem.js.map +1 -1
  122. package/fontes/modificadores/caminho-recorte.d.ts +8 -0
  123. package/fontes/modificadores/caminho-recorte.js +29 -0
  124. package/fontes/modificadores/caminho-recorte.js.map +1 -0
  125. package/fontes/modificadores/celulas-vazias.d.ts +2 -1
  126. package/fontes/modificadores/celulas-vazias.js +5 -4
  127. package/fontes/modificadores/celulas-vazias.js.map +1 -1
  128. package/fontes/modificadores/citacoes.d.ts +2 -1
  129. package/fontes/modificadores/citacoes.js +11 -8
  130. package/fontes/modificadores/citacoes.js.map +1 -1
  131. package/fontes/modificadores/coluna-em-grade.d.ts +2 -1
  132. package/fontes/modificadores/coluna-em-grade.js +8 -6
  133. package/fontes/modificadores/coluna-em-grade.js.map +1 -1
  134. package/fontes/modificadores/colunas.d.ts +2 -1
  135. package/fontes/modificadores/colunas.js +7 -11
  136. package/fontes/modificadores/colunas.js.map +1 -1
  137. package/fontes/modificadores/combinar-texto-vertical.d.ts +2 -1
  138. package/fontes/modificadores/combinar-texto-vertical.js +6 -4
  139. package/fontes/modificadores/combinar-texto-vertical.js.map +1 -1
  140. package/fontes/modificadores/comportamento-em-bloco-rolagem-mouse.d.ts +2 -1
  141. package/fontes/modificadores/comportamento-em-bloco-rolagem-mouse.js +6 -4
  142. package/fontes/modificadores/comportamento-em-bloco-rolagem-mouse.js.map +1 -1
  143. package/fontes/modificadores/comportamento-em-linha-rolagem-mouse.d.ts +2 -1
  144. package/fontes/modificadores/comportamento-em-linha-rolagem-mouse.js +6 -4
  145. package/fontes/modificadores/comportamento-em-linha-rolagem-mouse.js.map +1 -1
  146. package/fontes/modificadores/comportamento-horizontal-rolagem-mouse.d.ts +2 -1
  147. package/fontes/modificadores/comportamento-horizontal-rolagem-mouse.js +6 -4
  148. package/fontes/modificadores/comportamento-horizontal-rolagem-mouse.js.map +1 -1
  149. package/fontes/modificadores/comportamento-rolagem-mouse.d.ts +2 -1
  150. package/fontes/modificadores/comportamento-rolagem-mouse.js +7 -6
  151. package/fontes/modificadores/comportamento-rolagem-mouse.js.map +1 -1
  152. package/fontes/modificadores/comportamento-rolagem.d.ts +2 -1
  153. package/fontes/modificadores/comportamento-rolagem.js +5 -4
  154. package/fontes/modificadores/comportamento-rolagem.js.map +1 -1
  155. package/fontes/modificadores/comportamento-vertical-rolagem-mouse.d.ts +2 -1
  156. package/fontes/modificadores/comportamento-vertical-rolagem-mouse.js +6 -4
  157. package/fontes/modificadores/comportamento-vertical-rolagem-mouse.js.map +1 -1
  158. package/fontes/modificadores/composicao-mascara.d.ts +2 -1
  159. package/fontes/modificadores/composicao-mascara.js +5 -4
  160. package/fontes/modificadores/composicao-mascara.js.map +1 -1
  161. package/fontes/modificadores/configuracoes-variacao-fonte.d.ts +2 -1
  162. package/fontes/modificadores/configuracoes-variacao-fonte.js +11 -10
  163. package/fontes/modificadores/configuracoes-variacao-fonte.js.map +1 -1
  164. package/fontes/modificadores/contar-coluna.d.ts +2 -1
  165. package/fontes/modificadores/contar-coluna.js +5 -7
  166. package/fontes/modificadores/contar-coluna.js.map +1 -1
  167. package/fontes/modificadores/contem.d.ts +2 -1
  168. package/fontes/modificadores/contem.js +5 -4
  169. package/fontes/modificadores/contem.js.map +1 -1
  170. package/fontes/modificadores/conteudo.d.ts +2 -3
  171. package/fontes/modificadores/conteudo.js +7 -17
  172. package/fontes/modificadores/conteudo.js.map +1 -1
  173. package/fontes/modificadores/contorno.d.ts +2 -1
  174. package/fontes/modificadores/contorno.js +7 -11
  175. package/fontes/modificadores/contorno.js.map +1 -1
  176. package/fontes/modificadores/coordenadas.d.ts +2 -1
  177. package/fontes/modificadores/coordenadas.js +5 -9
  178. package/fontes/modificadores/coordenadas.js.map +1 -1
  179. package/fontes/modificadores/cor-barra-rolagem.d.ts +2 -1
  180. package/fontes/modificadores/cor-barra-rolagem.js +5 -5
  181. package/fontes/modificadores/cor-barra-rolagem.js.map +1 -1
  182. package/fontes/modificadores/cor-borda-direita.d.ts +2 -1
  183. package/fontes/modificadores/cor-borda-direita.js +5 -4
  184. package/fontes/modificadores/cor-borda-direita.js.map +1 -1
  185. package/fontes/modificadores/cor-borda-em-bloco.d.ts +2 -1
  186. package/fontes/modificadores/cor-borda-em-bloco.js +5 -4
  187. package/fontes/modificadores/cor-borda-em-bloco.js.map +1 -1
  188. package/fontes/modificadores/cor-borda-em-linha.d.ts +2 -1
  189. package/fontes/modificadores/cor-borda-em-linha.js +5 -4
  190. package/fontes/modificadores/cor-borda-em-linha.js.map +1 -1
  191. package/fontes/modificadores/cor-borda-esquerda.d.ts +2 -1
  192. package/fontes/modificadores/cor-borda-esquerda.js +5 -4
  193. package/fontes/modificadores/cor-borda-esquerda.js.map +1 -1
  194. package/fontes/modificadores/cor-borda-inferior.d.ts +2 -1
  195. package/fontes/modificadores/cor-borda-inferior.js +5 -4
  196. package/fontes/modificadores/cor-borda-inferior.js.map +1 -1
  197. package/fontes/modificadores/cor-borda-superior.d.ts +2 -1
  198. package/fontes/modificadores/cor-borda-superior.js +5 -4
  199. package/fontes/modificadores/cor-borda-superior.js.map +1 -1
  200. package/fontes/modificadores/cor-borda.d.ts +2 -1
  201. package/fontes/modificadores/cor-borda.js +7 -6
  202. package/fontes/modificadores/cor-borda.js.map +1 -1
  203. package/fontes/modificadores/cor-contorno.d.ts +2 -1
  204. package/fontes/modificadores/cor-contorno.js +5 -4
  205. package/fontes/modificadores/cor-contorno.js.map +1 -1
  206. package/fontes/modificadores/cor-cursor.d.ts +2 -1
  207. package/fontes/modificadores/cor-cursor.js +5 -4
  208. package/fontes/modificadores/cor-cursor.js.map +1 -1
  209. package/fontes/modificadores/cor-destaque.d.ts +2 -1
  210. package/fontes/modificadores/cor-destaque.js +5 -4
  211. package/fontes/modificadores/cor-destaque.js.map +1 -1
  212. package/fontes/modificadores/cor-enfase-texto.d.ts +2 -1
  213. package/fontes/modificadores/cor-enfase-texto.js +5 -4
  214. package/fontes/modificadores/cor-enfase-texto.js.map +1 -1
  215. package/fontes/modificadores/cor-fim-borda-em-bloco.d.ts +2 -1
  216. package/fontes/modificadores/cor-fim-borda-em-bloco.js +5 -4
  217. package/fontes/modificadores/cor-fim-borda-em-bloco.js.map +1 -1
  218. package/fontes/modificadores/cor-fim-borda-em-linha.d.ts +2 -1
  219. package/fontes/modificadores/cor-fim-borda-em-linha.js +5 -4
  220. package/fontes/modificadores/cor-fim-borda-em-linha.js.map +1 -1
  221. package/fontes/modificadores/cor-fundo.d.ts +2 -1
  222. package/fontes/modificadores/cor-fundo.js +5 -4
  223. package/fontes/modificadores/cor-fundo.js.map +1 -1
  224. package/fontes/modificadores/cor-inicio-borda-em-bloco.d.ts +2 -1
  225. package/fontes/modificadores/cor-inicio-borda-em-bloco.js +5 -4
  226. package/fontes/modificadores/cor-inicio-borda-em-bloco.js.map +1 -1
  227. package/fontes/modificadores/cor-inicio-borda-em-linha.d.ts +2 -1
  228. package/fontes/modificadores/cor-inicio-borda-em-linha.js +5 -4
  229. package/fontes/modificadores/cor-inicio-borda-em-linha.js.map +1 -1
  230. package/fontes/modificadores/cor.d.ts +2 -1
  231. package/fontes/modificadores/cor.js +5 -4
  232. package/fontes/modificadores/cor.js.map +1 -1
  233. package/fontes/modificadores/cursor.d.ts +2 -1
  234. package/fontes/modificadores/cursor.js +5 -4
  235. package/fontes/modificadores/cursor.js.map +1 -1
  236. package/fontes/modificadores/{decoracao-cor-texto .d.ts → decoracao-cor-texto.d.ts} +2 -1
  237. package/fontes/modificadores/{decoracao-cor-texto .js → decoracao-cor-texto.js} +6 -5
  238. package/fontes/modificadores/decoracao-cor-texto.js.map +1 -0
  239. package/fontes/modificadores/decoracao-espessura-texto.d.ts +2 -1
  240. package/fontes/modificadores/decoracao-espessura-texto.js +5 -9
  241. package/fontes/modificadores/decoracao-espessura-texto.js.map +1 -1
  242. package/fontes/modificadores/decoracao-estilo-texto.d.ts +2 -1
  243. package/fontes/modificadores/decoracao-estilo-texto.js +6 -4
  244. package/fontes/modificadores/decoracao-estilo-texto.js.map +1 -1
  245. package/fontes/modificadores/decoracao-linha-texto.d.ts +2 -1
  246. package/fontes/modificadores/decoracao-linha-texto.js +5 -4
  247. package/fontes/modificadores/decoracao-linha-texto.js.map +1 -1
  248. package/fontes/modificadores/decoracao-texto-sublinhado.d.ts +2 -1
  249. package/fontes/modificadores/decoracao-texto-sublinhado.js +6 -4
  250. package/fontes/modificadores/decoracao-texto-sublinhado.js.map +1 -1
  251. package/fontes/modificadores/decoracao-texto.d.ts +2 -1
  252. package/fontes/modificadores/decoracao-texto.js +8 -7
  253. package/fontes/modificadores/decoracao-texto.js.map +1 -1
  254. package/fontes/modificadores/definir-contador.d.ts +2 -1
  255. package/fontes/modificadores/definir-contador.js +7 -6
  256. package/fontes/modificadores/definir-contador.js.map +1 -1
  257. package/fontes/modificadores/design-tabela.d.ts +2 -1
  258. package/fontes/modificadores/design-tabela.js +5 -4
  259. package/fontes/modificadores/design-tabela.js.map +1 -1
  260. package/fontes/modificadores/deslocamento-em-ancora.d.ts +2 -1
  261. package/fontes/modificadores/deslocamento-em-ancora.js +5 -9
  262. package/fontes/modificadores/deslocamento-em-ancora.js.map +1 -1
  263. package/fontes/modificadores/deslocamento-texto-sublinhado.d.ts +2 -1
  264. package/fontes/modificadores/deslocamento-texto-sublinhado.js +5 -9
  265. package/fontes/modificadores/deslocamento-texto-sublinhado.js.map +1 -1
  266. package/fontes/modificadores/deslocamento.d.ts +2 -1
  267. package/fontes/modificadores/deslocamento.js +9 -12
  268. package/fontes/modificadores/deslocamento.js.map +1 -1
  269. package/fontes/modificadores/deslocar-contorno.d.ts +2 -1
  270. package/fontes/modificadores/deslocar-contorno.js +5 -9
  271. package/fontes/modificadores/deslocar-contorno.js.map +1 -1
  272. package/fontes/modificadores/deslocar-pontuacao.d.ts +2 -1
  273. package/fontes/modificadores/deslocar-pontuacao.js +5 -4
  274. package/fontes/modificadores/deslocar-pontuacao.js.map +1 -1
  275. package/fontes/modificadores/dicionario/dicionario-modificadores.js +3 -1
  276. package/fontes/modificadores/dicionario/dicionario-modificadores.js.map +1 -1
  277. package/fontes/modificadores/dicionario/dicionario-reverso-modificadores.js +30 -19
  278. package/fontes/modificadores/dicionario/dicionario-reverso-modificadores.js.map +1 -1
  279. package/fontes/modificadores/direcao-animacao.d.ts +2 -1
  280. package/fontes/modificadores/direcao-animacao.js +5 -4
  281. package/fontes/modificadores/direcao-animacao.js.map +1 -1
  282. package/fontes/modificadores/direcao.d.ts +2 -1
  283. package/fontes/modificadores/direcao.js +5 -4
  284. package/fontes/modificadores/direcao.js.map +1 -1
  285. package/fontes/modificadores/distancia-deslocamento.d.ts +2 -1
  286. package/fontes/modificadores/distancia-deslocamento.js +5 -11
  287. package/fontes/modificadores/distancia-deslocamento.js.map +1 -1
  288. package/fontes/modificadores/duracao-animacao.d.ts +2 -1
  289. package/fontes/modificadores/duracao-animacao.js +7 -11
  290. package/fontes/modificadores/duracao-animacao.js.map +1 -1
  291. package/fontes/modificadores/duracao-transicao.d.ts +2 -1
  292. package/fontes/modificadores/duracao-transicao.js +5 -9
  293. package/fontes/modificadores/duracao-transicao.js.map +1 -1
  294. package/fontes/modificadores/enfase-texto.d.ts +2 -1
  295. package/fontes/modificadores/enfase-texto.js +14 -10
  296. package/fontes/modificadores/enfase-texto.js.map +1 -1
  297. package/fontes/modificadores/escala.d.ts +2 -1
  298. package/fontes/modificadores/escala.js +5 -9
  299. package/fontes/modificadores/escala.js.map +1 -1
  300. package/fontes/modificadores/espacamento-coluna-em-grade.d.ts +2 -1
  301. package/fontes/modificadores/espacamento-coluna-em-grade.js +5 -9
  302. package/fontes/modificadores/espacamento-coluna-em-grade.js.map +1 -1
  303. package/fontes/modificadores/espacamento-coluna.d.ts +2 -1
  304. package/fontes/modificadores/espacamento-coluna.js +5 -9
  305. package/fontes/modificadores/espacamento-coluna.js.map +1 -1
  306. package/fontes/modificadores/espacamento-em-grade.d.ts +2 -1
  307. package/fontes/modificadores/espacamento-em-grade.js +5 -9
  308. package/fontes/modificadores/espacamento-em-grade.js.map +1 -1
  309. package/fontes/modificadores/espacamento-fonte.d.ts +2 -1
  310. package/fontes/modificadores/espacamento-fonte.js +5 -4
  311. package/fontes/modificadores/espacamento-fonte.js.map +1 -1
  312. package/fontes/modificadores/espacamento-letras.d.ts +2 -1
  313. package/fontes/modificadores/espacamento-letras.js +5 -18
  314. package/fontes/modificadores/espacamento-letras.js.map +1 -1
  315. package/fontes/modificadores/espacamento-linha-em-grade.d.ts +2 -1
  316. package/fontes/modificadores/espacamento-linha-em-grade.js +5 -9
  317. package/fontes/modificadores/espacamento-linha-em-grade.js.map +1 -1
  318. package/fontes/modificadores/espacamento-linhas.d.ts +2 -1
  319. package/fontes/modificadores/espacamento-linhas.js +5 -9
  320. package/fontes/modificadores/espacamento-linhas.js.map +1 -1
  321. package/fontes/modificadores/espacamento-palavras.d.ts +2 -1
  322. package/fontes/modificadores/espacamento-palavras.js +5 -9
  323. package/fontes/modificadores/espacamento-palavras.js.map +1 -1
  324. package/fontes/modificadores/espacamento.d.ts +2 -1
  325. package/fontes/modificadores/espacamento.js +7 -11
  326. package/fontes/modificadores/espacamento.js.map +1 -1
  327. package/fontes/modificadores/espaco-borda.d.ts +2 -1
  328. package/fontes/modificadores/espaco-borda.js +5 -9
  329. package/fontes/modificadores/espaco-borda.js.map +1 -1
  330. package/fontes/modificadores/espaco-em-branco.d.ts +2 -1
  331. package/fontes/modificadores/espaco-em-branco.js +5 -4
  332. package/fontes/modificadores/espaco-em-branco.js.map +1 -1
  333. package/fontes/modificadores/espessura-fonte.d.ts +2 -1
  334. package/fontes/modificadores/espessura-fonte.js +6 -7
  335. package/fontes/modificadores/espessura-fonte.js.map +1 -1
  336. package/fontes/modificadores/esquema-cor.d.ts +2 -1
  337. package/fontes/modificadores/esquema-cor.js +5 -4
  338. package/fontes/modificadores/esquema-cor.js.map +1 -1
  339. package/fontes/modificadores/estender-borda-imagem.d.ts +2 -1
  340. package/fontes/modificadores/estender-borda-imagem.js +5 -9
  341. package/fontes/modificadores/estender-borda-imagem.js.map +1 -1
  342. package/fontes/modificadores/estender-coluna.d.ts +2 -1
  343. package/fontes/modificadores/estender-coluna.js +5 -4
  344. package/fontes/modificadores/estender-coluna.js.map +1 -1
  345. package/fontes/modificadores/esticar-fonte.d.ts +2 -1
  346. package/fontes/modificadores/esticar-fonte.js +5 -9
  347. package/fontes/modificadores/esticar-fonte.js.map +1 -1
  348. package/fontes/modificadores/estilo-borda-direita.d.ts +2 -1
  349. package/fontes/modificadores/estilo-borda-direita.js +5 -4
  350. package/fontes/modificadores/estilo-borda-direita.js.map +1 -1
  351. package/fontes/modificadores/estilo-borda-em-bloco.d.ts +2 -1
  352. package/fontes/modificadores/estilo-borda-em-bloco.js +5 -4
  353. package/fontes/modificadores/estilo-borda-em-bloco.js.map +1 -1
  354. package/fontes/modificadores/estilo-borda-em-linha.d.ts +2 -1
  355. package/fontes/modificadores/estilo-borda-em-linha.js +5 -4
  356. package/fontes/modificadores/estilo-borda-em-linha.js.map +1 -1
  357. package/fontes/modificadores/estilo-borda-esquerda.d.ts +2 -1
  358. package/fontes/modificadores/estilo-borda-esquerda.js +5 -4
  359. package/fontes/modificadores/estilo-borda-esquerda.js.map +1 -1
  360. package/fontes/modificadores/estilo-borda-inferior.d.ts +2 -1
  361. package/fontes/modificadores/estilo-borda-inferior.js +5 -4
  362. package/fontes/modificadores/estilo-borda-inferior.js.map +1 -1
  363. package/fontes/modificadores/estilo-borda-superior.d.ts +2 -1
  364. package/fontes/modificadores/estilo-borda-superior.js +5 -4
  365. package/fontes/modificadores/estilo-borda-superior.js.map +1 -1
  366. package/fontes/modificadores/estilo-borda.d.ts +2 -1
  367. package/fontes/modificadores/estilo-borda.js +8 -7
  368. package/fontes/modificadores/estilo-borda.js.map +1 -1
  369. package/fontes/modificadores/estilo-contorno.d.ts +2 -1
  370. package/fontes/modificadores/estilo-contorno.js +6 -4
  371. package/fontes/modificadores/estilo-contorno.js.map +1 -1
  372. package/fontes/modificadores/estilo-enfase-texto.d.ts +2 -1
  373. package/fontes/modificadores/estilo-enfase-texto.js +12 -8
  374. package/fontes/modificadores/estilo-enfase-texto.js.map +1 -1
  375. package/fontes/modificadores/estilo-fim-borda-em-bloco.d.ts +2 -1
  376. package/fontes/modificadores/estilo-fim-borda-em-bloco.js +6 -4
  377. package/fontes/modificadores/estilo-fim-borda-em-bloco.js.map +1 -1
  378. package/fontes/modificadores/estilo-fim-borda-em-linha.d.ts +2 -1
  379. package/fontes/modificadores/estilo-fim-borda-em-linha.js +6 -4
  380. package/fontes/modificadores/estilo-fim-borda-em-linha.js.map +1 -1
  381. package/fontes/modificadores/estilo-fonte.d.ts +2 -1
  382. package/fontes/modificadores/estilo-fonte.js +7 -11
  383. package/fontes/modificadores/estilo-fonte.js.map +1 -1
  384. package/fontes/modificadores/estilo-inicio-borda-em-bloco.d.ts +2 -1
  385. package/fontes/modificadores/estilo-inicio-borda-em-bloco.js +6 -4
  386. package/fontes/modificadores/estilo-inicio-borda-em-bloco.js.map +1 -1
  387. package/fontes/modificadores/estilo-inicio-borda-em-linha.d.ts +2 -1
  388. package/fontes/modificadores/estilo-inicio-borda-em-linha.js +6 -4
  389. package/fontes/modificadores/estilo-inicio-borda-em-linha.js.map +1 -1
  390. package/fontes/modificadores/estilo-lista-imagem.d.ts +2 -3
  391. package/fontes/modificadores/estilo-lista-imagem.js +5 -15
  392. package/fontes/modificadores/estilo-lista-imagem.js.map +1 -1
  393. package/fontes/modificadores/estilo-lista-posicao.d.ts +2 -1
  394. package/fontes/modificadores/estilo-lista-posicao.js +5 -4
  395. package/fontes/modificadores/estilo-lista-posicao.js.map +1 -1
  396. package/fontes/modificadores/estilo-lista-tipo.d.ts +2 -1
  397. package/fontes/modificadores/estilo-lista-tipo.js +3 -3
  398. package/fontes/modificadores/estilo-lista-tipo.js.map +1 -1
  399. package/fontes/modificadores/estilo-lista.d.ts +2 -1
  400. package/fontes/modificadores/estilo-lista.js +7 -11
  401. package/fontes/modificadores/estilo-lista.js.map +1 -1
  402. package/fontes/modificadores/eventos-ponteiro.d.ts +2 -1
  403. package/fontes/modificadores/eventos-ponteiro.js +5 -4
  404. package/fontes/modificadores/eventos-ponteiro.js.map +1 -1
  405. package/fontes/modificadores/exibicao.d.ts +2 -1
  406. package/fontes/modificadores/exibicao.js +5 -4
  407. package/fontes/modificadores/exibicao.js.map +1 -1
  408. package/fontes/modificadores/fatiar-borda-mascara.d.ts +2 -1
  409. package/fontes/modificadores/fatiar-borda-mascara.js +5 -9
  410. package/fontes/modificadores/fatiar-borda-mascara.js.map +1 -1
  411. package/fontes/modificadores/fatiar-imagem-borda.d.ts +2 -1
  412. package/fontes/modificadores/fatiar-imagem-borda.js +5 -9
  413. package/fontes/modificadores/fatiar-imagem-borda.js.map +1 -1
  414. package/fontes/modificadores/filtro-fundo.d.ts +2 -3
  415. package/fontes/modificadores/filtro-fundo.js +5 -15
  416. package/fontes/modificadores/filtro-fundo.js.map +1 -1
  417. package/fontes/modificadores/filtro.d.ts +2 -3
  418. package/fontes/modificadores/filtro.js +5 -16
  419. package/fontes/modificadores/filtro.js.map +1 -1
  420. package/fontes/modificadores/fim-borda-em-bloco.d.ts +2 -1
  421. package/fontes/modificadores/fim-borda-em-bloco.js +7 -11
  422. package/fontes/modificadores/fim-borda-em-bloco.js.map +1 -1
  423. package/fontes/modificadores/fim-borda-em-linha.d.ts +2 -1
  424. package/fontes/modificadores/fim-borda-em-linha.js +7 -11
  425. package/fontes/modificadores/fim-borda-em-linha.js.map +1 -1
  426. package/fontes/modificadores/fim-coluna-em-grade.d.ts +2 -1
  427. package/fontes/modificadores/fim-coluna-em-grade.js +7 -8
  428. package/fontes/modificadores/fim-coluna-em-grade.js.map +1 -1
  429. package/fontes/modificadores/fim-linha-em-grade.d.ts +2 -1
  430. package/fontes/modificadores/fim-linha-em-grade.js +7 -8
  431. package/fontes/modificadores/fim-linha-em-grade.js.map +1 -1
  432. package/fontes/modificadores/fixar-fundo.d.ts +2 -1
  433. package/fontes/modificadores/fixar-fundo.js +5 -4
  434. package/fontes/modificadores/fixar-fundo.js.map +1 -1
  435. package/fontes/modificadores/flex-agrupar.d.ts +2 -1
  436. package/fontes/modificadores/flex-agrupar.js +5 -4
  437. package/fontes/modificadores/flex-agrupar.js.map +1 -1
  438. package/fontes/modificadores/flex-comprimento.d.ts +2 -1
  439. package/fontes/modificadores/flex-comprimento.js +5 -9
  440. package/fontes/modificadores/flex-comprimento.js.map +1 -1
  441. package/fontes/modificadores/flex-crescimento.d.ts +2 -1
  442. package/fontes/modificadores/flex-crescimento.js +5 -6
  443. package/fontes/modificadores/flex-crescimento.js.map +1 -1
  444. package/fontes/modificadores/flex-direcao.d.ts +2 -1
  445. package/fontes/modificadores/flex-direcao.js +5 -4
  446. package/fontes/modificadores/flex-direcao.js.map +1 -1
  447. package/fontes/modificadores/flex-fluxo.d.ts +2 -1
  448. package/fontes/modificadores/flex-fluxo.js +7 -6
  449. package/fontes/modificadores/flex-fluxo.js.map +1 -1
  450. package/fontes/modificadores/flex-reduzir.d.ts +2 -1
  451. package/fontes/modificadores/flex-reduzir.js +5 -6
  452. package/fontes/modificadores/flex-reduzir.js.map +1 -1
  453. package/fontes/modificadores/flex.d.ts +2 -1
  454. package/fontes/modificadores/flex.js +7 -11
  455. package/fontes/modificadores/flex.js.map +1 -1
  456. package/fontes/modificadores/flutuar.d.ts +2 -1
  457. package/fontes/modificadores/flutuar.js +5 -4
  458. package/fontes/modificadores/flutuar.js.map +1 -1
  459. package/fontes/modificadores/fluxo-em-grade.d.ts +2 -1
  460. package/fontes/modificadores/fluxo-em-grade.js +5 -4
  461. package/fontes/modificadores/fluxo-em-grade.js.map +1 -1
  462. package/fontes/modificadores/fluxo.d.ts +2 -1
  463. package/fontes/modificadores/fluxo.js +5 -4
  464. package/fontes/modificadores/fluxo.js.map +1 -1
  465. package/fontes/modificadores/fonte-texto.d.ts +2 -1
  466. package/fontes/modificadores/fonte-texto.js +8 -12
  467. package/fontes/modificadores/fonte-texto.js.map +1 -1
  468. package/fontes/modificadores/fonte.d.ts +2 -1
  469. package/fontes/modificadores/fonte.js +9 -12
  470. package/fontes/modificadores/fonte.js.map +1 -1
  471. package/fontes/modificadores/forma-externa.d.ts +2 -3
  472. package/fontes/modificadores/forma-externa.js +5 -15
  473. package/fontes/modificadores/forma-externa.js.map +1 -1
  474. package/fontes/modificadores/forma-margem.d.ts +2 -1
  475. package/fontes/modificadores/forma-margem.js +5 -9
  476. package/fontes/modificadores/forma-margem.js.map +1 -1
  477. package/fontes/modificadores/fundo.d.ts +2 -1
  478. package/fontes/modificadores/fundo.js +8 -13
  479. package/fontes/modificadores/fundo.js.map +1 -1
  480. package/fontes/modificadores/girar.d.ts +2 -1
  481. package/fontes/modificadores/girar.js +5 -9
  482. package/fontes/modificadores/girar.js.map +1 -1
  483. package/fontes/modificadores/grade.d.ts +2 -3
  484. package/fontes/modificadores/grade.js +14 -20
  485. package/fontes/modificadores/grade.js.map +1 -1
  486. package/fontes/modificadores/hifens.d.ts +2 -1
  487. package/fontes/modificadores/hifens.js +5 -4
  488. package/fontes/modificadores/hifens.js.map +1 -1
  489. package/fontes/modificadores/imagem-borda.d.ts +2 -3
  490. package/fontes/modificadores/imagem-borda.js +8 -13
  491. package/fontes/modificadores/imagem-borda.js.map +1 -1
  492. package/fontes/modificadores/imagem-fundo.d.ts +2 -2
  493. package/fontes/modificadores/imagem-fundo.js +5 -10
  494. package/fontes/modificadores/imagem-fundo.js.map +1 -1
  495. package/fontes/modificadores/imagem-mascara.d.ts +2 -3
  496. package/fontes/modificadores/imagem-mascara.js +6 -16
  497. package/fontes/modificadores/imagem-mascara.js.map +1 -1
  498. package/fontes/modificadores/impressao-ajuste-cor.d.ts +2 -1
  499. package/fontes/modificadores/impressao-ajuste-cor.js +5 -4
  500. package/fontes/modificadores/impressao-ajuste-cor.js.map +1 -1
  501. package/fontes/modificadores/incrementar-contador.d.ts +2 -1
  502. package/fontes/modificadores/incrementar-contador.js +7 -6
  503. package/fontes/modificadores/incrementar-contador.js.map +1 -1
  504. package/fontes/modificadores/indentacao-texto.d.ts +2 -1
  505. package/fontes/modificadores/indentacao-texto.js +5 -9
  506. package/fontes/modificadores/indentacao-texto.js.map +1 -1
  507. package/fontes/modificadores/index.d.ts +1 -1
  508. package/fontes/modificadores/index.js +1 -1
  509. package/fontes/modificadores/index.js.map +1 -1
  510. package/fontes/modificadores/indice-z.d.ts +2 -1
  511. package/fontes/modificadores/indice-z.js +6 -4
  512. package/fontes/modificadores/indice-z.js.map +1 -1
  513. package/fontes/modificadores/inicio-borda-em-bloco.d.ts +2 -1
  514. package/fontes/modificadores/inicio-borda-em-bloco.js +7 -11
  515. package/fontes/modificadores/inicio-borda-em-bloco.js.map +1 -1
  516. package/fontes/modificadores/inicio-borda-em-linha.d.ts +2 -1
  517. package/fontes/modificadores/inicio-borda-em-linha.js +7 -11
  518. package/fontes/modificadores/inicio-borda-em-linha.js.map +1 -1
  519. package/fontes/modificadores/inicio-borda-mascara.d.ts +2 -1
  520. package/fontes/modificadores/inicio-borda-mascara.js +5 -9
  521. package/fontes/modificadores/inicio-borda-mascara.js.map +1 -1
  522. package/fontes/modificadores/inicio-coluna-em-grade.d.ts +2 -1
  523. package/fontes/modificadores/inicio-coluna-em-grade.js +7 -8
  524. package/fontes/modificadores/inicio-coluna-em-grade.js.map +1 -1
  525. package/fontes/modificadores/inicio-insercao-em-bloco.d.ts +2 -1
  526. package/fontes/modificadores/inicio-insercao-em-bloco.js +5 -9
  527. package/fontes/modificadores/inicio-insercao-em-bloco.js.map +1 -1
  528. package/fontes/modificadores/inicio-insercao-em-linha.d.ts +2 -1
  529. package/fontes/modificadores/inicio-insercao-em-linha.js +5 -9
  530. package/fontes/modificadores/inicio-insercao-em-linha.js.map +1 -1
  531. package/fontes/modificadores/inicio-linha-em-grade.d.ts +2 -1
  532. package/fontes/modificadores/inicio-linha-em-grade.js +7 -8
  533. package/fontes/modificadores/inicio-linha-em-grade.js.map +1 -1
  534. package/fontes/modificadores/inicio-margem-em-bloco.d.ts +2 -1
  535. package/fontes/modificadores/inicio-margem-em-bloco.js +5 -9
  536. package/fontes/modificadores/inicio-margem-em-bloco.js.map +1 -1
  537. package/fontes/modificadores/inicio-margem-em-linha.d.ts +2 -1
  538. package/fontes/modificadores/inicio-margem-em-linha.js +5 -9
  539. package/fontes/modificadores/inicio-margem-em-linha.js.map +1 -1
  540. package/fontes/modificadores/inicio-recuo-em-bloco.d.ts +2 -1
  541. package/fontes/modificadores/inicio-recuo-em-bloco.js +5 -9
  542. package/fontes/modificadores/inicio-recuo-em-bloco.js.map +1 -1
  543. package/fontes/modificadores/inicio-recuo-em-linha.d.ts +2 -1
  544. package/fontes/modificadores/inicio-recuo-em-linha.js +5 -9
  545. package/fontes/modificadores/inicio-recuo-em-linha.js.map +1 -1
  546. package/fontes/modificadores/insercao-em-bloco-fim.d.ts +2 -1
  547. package/fontes/modificadores/insercao-em-bloco-fim.js +5 -9
  548. package/fontes/modificadores/insercao-em-bloco-fim.js.map +1 -1
  549. package/fontes/modificadores/insercao-em-bloco.d.ts +2 -1
  550. package/fontes/modificadores/insercao-em-bloco.js +5 -9
  551. package/fontes/modificadores/insercao-em-bloco.js.map +1 -1
  552. package/fontes/modificadores/insercao-em-linha-fim.d.ts +2 -1
  553. package/fontes/modificadores/insercao-em-linha-fim.js +5 -9
  554. package/fontes/modificadores/insercao-em-linha-fim.js.map +1 -1
  555. package/fontes/modificadores/insercao-em-linha.d.ts +2 -1
  556. package/fontes/modificadores/insercao-em-linha.js +5 -9
  557. package/fontes/modificadores/insercao-em-linha.js.map +1 -1
  558. package/fontes/modificadores/insercao.d.ts +2 -1
  559. package/fontes/modificadores/insercao.js +7 -11
  560. package/fontes/modificadores/insercao.js.map +1 -1
  561. package/fontes/modificadores/isolamento.d.ts +2 -1
  562. package/fontes/modificadores/isolamento.js +5 -4
  563. package/fontes/modificadores/isolamento.js.map +1 -1
  564. package/fontes/modificadores/justificar-conteudo.d.ts +2 -1
  565. package/fontes/modificadores/justificar-conteudo.js +6 -4
  566. package/fontes/modificadores/justificar-conteudo.js.map +1 -1
  567. package/fontes/modificadores/justificar-itens.d.ts +2 -1
  568. package/fontes/modificadores/justificar-itens.js +6 -4
  569. package/fontes/modificadores/justificar-itens.js.map +1 -1
  570. package/fontes/modificadores/justificar-se.d.ts +2 -1
  571. package/fontes/modificadores/justificar-se.js +6 -4
  572. package/fontes/modificadores/justificar-se.js.map +1 -1
  573. package/fontes/modificadores/justificar-texto.d.ts +2 -1
  574. package/fontes/modificadores/justificar-texto.js +5 -4
  575. package/fontes/modificadores/justificar-texto.js.map +1 -1
  576. package/fontes/modificadores/largura-barra-rolagem.d.ts +2 -1
  577. package/fontes/modificadores/largura-barra-rolagem.js +5 -4
  578. package/fontes/modificadores/largura-barra-rolagem.js.map +1 -1
  579. package/fontes/modificadores/largura-borda-direita.d.ts +2 -1
  580. package/fontes/modificadores/largura-borda-direita.js +5 -9
  581. package/fontes/modificadores/largura-borda-direita.js.map +1 -1
  582. package/fontes/modificadores/largura-borda-em-bloco.d.ts +2 -1
  583. package/fontes/modificadores/largura-borda-em-bloco.js +5 -9
  584. package/fontes/modificadores/largura-borda-em-bloco.js.map +1 -1
  585. package/fontes/modificadores/largura-borda-em-linha.d.ts +2 -1
  586. package/fontes/modificadores/largura-borda-em-linha.js +5 -9
  587. package/fontes/modificadores/largura-borda-em-linha.js.map +1 -1
  588. package/fontes/modificadores/largura-borda-esquerda.d.ts +2 -1
  589. package/fontes/modificadores/largura-borda-esquerda.js +5 -9
  590. package/fontes/modificadores/largura-borda-esquerda.js.map +1 -1
  591. package/fontes/modificadores/largura-borda-inferior.d.ts +2 -1
  592. package/fontes/modificadores/largura-borda-inferior.js +5 -9
  593. package/fontes/modificadores/largura-borda-inferior.js.map +1 -1
  594. package/fontes/modificadores/largura-borda-mascara.d.ts +2 -1
  595. package/fontes/modificadores/largura-borda-mascara.js +5 -10
  596. package/fontes/modificadores/largura-borda-mascara.js.map +1 -1
  597. package/fontes/modificadores/largura-borda-superior.d.ts +2 -1
  598. package/fontes/modificadores/largura-borda-superior.js +5 -9
  599. package/fontes/modificadores/largura-borda-superior.js.map +1 -1
  600. package/fontes/modificadores/largura-borda.d.ts +2 -1
  601. package/fontes/modificadores/largura-borda.js +7 -11
  602. package/fontes/modificadores/largura-borda.js.map +1 -1
  603. package/fontes/modificadores/largura-coluna.d.ts +2 -1
  604. package/fontes/modificadores/largura-coluna.js +5 -9
  605. package/fontes/modificadores/largura-coluna.js.map +1 -1
  606. package/fontes/modificadores/largura-contorno.d.ts +2 -1
  607. package/fontes/modificadores/largura-contorno.js +5 -9
  608. package/fontes/modificadores/largura-contorno.js.map +1 -1
  609. package/fontes/modificadores/largura-fim-borda-em-bloco.d.ts +2 -1
  610. package/fontes/modificadores/largura-fim-borda-em-bloco.js +5 -9
  611. package/fontes/modificadores/largura-fim-borda-em-bloco.js.map +1 -1
  612. package/fontes/modificadores/largura-fim-borda-em-linha.d.ts +2 -1
  613. package/fontes/modificadores/largura-fim-borda-em-linha.js +5 -9
  614. package/fontes/modificadores/largura-fim-borda-em-linha.js.map +1 -1
  615. package/fontes/modificadores/largura-imagem-borda.d.ts +2 -1
  616. package/fontes/modificadores/largura-imagem-borda.js +5 -9
  617. package/fontes/modificadores/largura-imagem-borda.js.map +1 -1
  618. package/fontes/modificadores/largura-inicio-borda-em-bloco.d.ts +2 -1
  619. package/fontes/modificadores/largura-inicio-borda-em-bloco.js +5 -9
  620. package/fontes/modificadores/largura-inicio-borda-em-bloco.js.map +1 -1
  621. package/fontes/modificadores/largura-inicio-borda-em-linha.d.ts +2 -1
  622. package/fontes/modificadores/largura-inicio-borda-em-linha.js +5 -9
  623. package/fontes/modificadores/largura-inicio-borda-em-linha.js.map +1 -1
  624. package/fontes/modificadores/largura-maxima.d.ts +2 -1
  625. package/fontes/modificadores/largura-maxima.js +5 -9
  626. package/fontes/modificadores/largura-maxima.js.map +1 -1
  627. package/fontes/modificadores/largura-minima.d.ts +2 -1
  628. package/fontes/modificadores/largura-minima.js +5 -9
  629. package/fontes/modificadores/largura-minima.js.map +1 -1
  630. package/fontes/modificadores/largura.d.ts +2 -1
  631. package/fontes/modificadores/largura.js +5 -9
  632. package/fontes/modificadores/largura.js.map +1 -1
  633. package/fontes/modificadores/limite-forma-imagem.d.ts +2 -1
  634. package/fontes/modificadores/limite-forma-imagem.js +16 -9
  635. package/fontes/modificadores/limite-forma-imagem.js.map +1 -1
  636. package/fontes/modificadores/linha-em-grade.d.ts +2 -1
  637. package/fontes/modificadores/linha-em-grade.js +7 -6
  638. package/fontes/modificadores/linha-em-grade.js.map +1 -1
  639. package/fontes/modificadores/linhas-inferiores.d.ts +2 -1
  640. package/fontes/modificadores/linhas-inferiores.js +5 -6
  641. package/fontes/modificadores/linhas-inferiores.js.map +1 -1
  642. package/fontes/modificadores/linhas-superiores.d.ts +2 -1
  643. package/fontes/modificadores/linhas-superiores.js +5 -6
  644. package/fontes/modificadores/linhas-superiores.js.map +1 -1
  645. package/fontes/modificadores/margem-direita-rolagem-mouse.d.ts +2 -1
  646. package/fontes/modificadores/margem-direita-rolagem-mouse.js +5 -9
  647. package/fontes/modificadores/margem-direita-rolagem-mouse.js.map +1 -1
  648. package/fontes/modificadores/margem-direita.d.ts +2 -1
  649. package/fontes/modificadores/margem-direita.js +5 -9
  650. package/fontes/modificadores/margem-direita.js.map +1 -1
  651. package/fontes/modificadores/margem-em-bloco-fim.d.ts +2 -1
  652. package/fontes/modificadores/margem-em-bloco-fim.js +5 -9
  653. package/fontes/modificadores/margem-em-bloco-fim.js.map +1 -1
  654. package/fontes/modificadores/margem-em-bloco-rolagem-mouse.d.ts +2 -1
  655. package/fontes/modificadores/margem-em-bloco-rolagem-mouse.js +5 -9
  656. package/fontes/modificadores/margem-em-bloco-rolagem-mouse.js.map +1 -1
  657. package/fontes/modificadores/margem-em-bloco.d.ts +2 -1
  658. package/fontes/modificadores/margem-em-bloco.js +7 -11
  659. package/fontes/modificadores/margem-em-bloco.js.map +1 -1
  660. package/fontes/modificadores/margem-em-linha-fim.d.ts +2 -1
  661. package/fontes/modificadores/margem-em-linha-fim.js +5 -9
  662. package/fontes/modificadores/margem-em-linha-fim.js.map +1 -1
  663. package/fontes/modificadores/margem-em-linha-rolagem-mouse.d.ts +2 -1
  664. package/fontes/modificadores/margem-em-linha-rolagem-mouse.js +5 -9
  665. package/fontes/modificadores/margem-em-linha-rolagem-mouse.js.map +1 -1
  666. package/fontes/modificadores/margem-em-linha.d.ts +2 -1
  667. package/fontes/modificadores/margem-em-linha.js +7 -11
  668. package/fontes/modificadores/margem-em-linha.js.map +1 -1
  669. package/fontes/modificadores/margem-esquerda-rolagem-mouse.d.ts +2 -1
  670. package/fontes/modificadores/margem-esquerda-rolagem-mouse.js +5 -9
  671. package/fontes/modificadores/margem-esquerda-rolagem-mouse.js.map +1 -1
  672. package/fontes/modificadores/margem-esquerda.d.ts +2 -1
  673. package/fontes/modificadores/margem-esquerda.js +5 -9
  674. package/fontes/modificadores/margem-esquerda.js.map +1 -1
  675. package/fontes/modificadores/margem-inferior-rolagem-mouse.d.ts +2 -1
  676. package/fontes/modificadores/margem-inferior-rolagem-mouse.js +5 -9
  677. package/fontes/modificadores/margem-inferior-rolagem-mouse.js.map +1 -1
  678. package/fontes/modificadores/margem-inferior.d.ts +2 -1
  679. package/fontes/modificadores/margem-inferior.js +5 -9
  680. package/fontes/modificadores/margem-inferior.js.map +1 -1
  681. package/fontes/modificadores/margem-rolagem-mouse.d.ts +2 -1
  682. package/fontes/modificadores/margem-rolagem-mouse.js +7 -11
  683. package/fontes/modificadores/margem-rolagem-mouse.js.map +1 -1
  684. package/fontes/modificadores/margem-superior-rolagem-mouse.d.ts +2 -1
  685. package/fontes/modificadores/margem-superior-rolagem-mouse.js +5 -9
  686. package/fontes/modificadores/margem-superior-rolagem-mouse.js.map +1 -1
  687. package/fontes/modificadores/margem-superior.d.ts +2 -1
  688. package/fontes/modificadores/margem-superior.js +5 -9
  689. package/fontes/modificadores/margem-superior.js.map +1 -1
  690. package/fontes/modificadores/margem.d.ts +2 -1
  691. package/fontes/modificadores/margem.js +7 -11
  692. package/fontes/modificadores/margem.js.map +1 -1
  693. package/fontes/modificadores/mascara.d.ts +2 -1
  694. package/fontes/modificadores/mascara.js +7 -6
  695. package/fontes/modificadores/mascara.js.map +1 -1
  696. package/fontes/modificadores/mesclar-fundo.d.ts +2 -1
  697. package/fontes/modificadores/mesclar-fundo.js +5 -4
  698. package/fontes/modificadores/mesclar-fundo.js.map +1 -1
  699. package/fontes/modificadores/modelo-colunas-em-grade.d.ts +2 -1
  700. package/fontes/modificadores/modelo-colunas-em-grade.js +6 -9
  701. package/fontes/modificadores/modelo-colunas-em-grade.js.map +1 -1
  702. package/fontes/modificadores/modelo-em-grade.d.ts +2 -1
  703. package/fontes/modificadores/modelo-em-grade.js +8 -11
  704. package/fontes/modificadores/modelo-em-grade.js.map +1 -1
  705. package/fontes/modificadores/modelo-geral-em-grade.d.ts +2 -1
  706. package/fontes/modificadores/modelo-geral-em-grade.js +5 -4
  707. package/fontes/modificadores/modelo-geral-em-grade.js.map +1 -1
  708. package/fontes/modificadores/modelo-linhas-em-grade.d.ts +2 -1
  709. package/fontes/modificadores/modelo-linhas-em-grade.js +6 -9
  710. package/fontes/modificadores/modelo-linhas-em-grade.js.map +1 -1
  711. package/fontes/modificadores/modo-borda-mascara.d.ts +2 -1
  712. package/fontes/modificadores/modo-borda-mascara.js +5 -4
  713. package/fontes/modificadores/modo-borda-mascara.js.map +1 -1
  714. package/fontes/modificadores/modo-escrita.d.ts +2 -1
  715. package/fontes/modificadores/modo-escrita.js +5 -4
  716. package/fontes/modificadores/modo-escrita.js.map +1 -1
  717. package/fontes/modificadores/modo-mascara.d.ts +2 -1
  718. package/fontes/modificadores/modo-mascara.js +5 -4
  719. package/fontes/modificadores/modo-mascara.js.map +1 -1
  720. package/fontes/modificadores/modo-mescla.d.ts +2 -1
  721. package/fontes/modificadores/modo-mescla.js +5 -4
  722. package/fontes/modificadores/modo-mescla.js.map +1 -1
  723. package/fontes/modificadores/modo-preenchimento-animacao.d.ts +2 -1
  724. package/fontes/modificadores/modo-preenchimento-animacao.js +6 -4
  725. package/fontes/modificadores/modo-preenchimento-animacao.js.map +1 -1
  726. package/fontes/modificadores/nome-animacao.d.ts +2 -1
  727. package/fontes/modificadores/nome-animacao.js +14 -9
  728. package/fontes/modificadores/nome-animacao.js.map +1 -1
  729. package/fontes/modificadores/opacidade.d.ts +2 -1
  730. package/fontes/modificadores/opacidade.js +20 -11
  731. package/fontes/modificadores/opacidade.js.map +1 -1
  732. package/fontes/modificadores/ordem-pintura.d.ts +2 -1
  733. package/fontes/modificadores/ordem-pintura.js +5 -4
  734. package/fontes/modificadores/ordem-pintura.js.map +1 -1
  735. package/fontes/modificadores/ordenar.d.ts +2 -1
  736. package/fontes/modificadores/ordenar.js +5 -6
  737. package/fontes/modificadores/ordenar.js.map +1 -1
  738. package/fontes/modificadores/orientacao-imagem.d.ts +2 -1
  739. package/fontes/modificadores/orientacao-imagem.js +5 -4
  740. package/fontes/modificadores/orientacao-imagem.js.map +1 -1
  741. package/fontes/modificadores/orientacao-texto.d.ts +2 -1
  742. package/fontes/modificadores/orientacao-texto.js +5 -4
  743. package/fontes/modificadores/orientacao-texto.js.map +1 -1
  744. package/fontes/modificadores/origem-borda-mascara.d.ts +2 -3
  745. package/fontes/modificadores/origem-borda-mascara.js +5 -15
  746. package/fontes/modificadores/origem-borda-mascara.js.map +1 -1
  747. package/fontes/modificadores/origem-fundo.d.ts +2 -1
  748. package/fontes/modificadores/origem-fundo.js +5 -4
  749. package/fontes/modificadores/origem-fundo.js.map +1 -1
  750. package/fontes/modificadores/origem-imagem-borda.d.ts +2 -3
  751. package/fontes/modificadores/origem-imagem-borda.js +5 -15
  752. package/fontes/modificadores/origem-imagem-borda.js.map +1 -1
  753. package/fontes/modificadores/origem-mascara.d.ts +2 -1
  754. package/fontes/modificadores/origem-mascara.js +5 -4
  755. package/fontes/modificadores/origem-mascara.js.map +1 -1
  756. package/fontes/modificadores/origem-perspectiva.d.ts +2 -1
  757. package/fontes/modificadores/origem-perspectiva.js +5 -11
  758. package/fontes/modificadores/origem-perspectiva.js.map +1 -1
  759. package/fontes/modificadores/parar-encaixe-rolagem-mouse.d.ts +2 -1
  760. package/fontes/modificadores/parar-encaixe-rolagem-mouse.js +6 -4
  761. package/fontes/modificadores/parar-encaixe-rolagem-mouse.js.map +1 -1
  762. package/fontes/modificadores/perspectiva.d.ts +2 -1
  763. package/fontes/modificadores/perspectiva.js +5 -8
  764. package/fontes/modificadores/perspectiva.js.map +1 -1
  765. package/fontes/modificadores/posicao-deslocamento.d.ts +2 -1
  766. package/fontes/modificadores/posicao-deslocamento.js +26 -9
  767. package/fontes/modificadores/posicao-deslocamento.js.map +1 -1
  768. package/fontes/modificadores/posicao-direita.d.ts +2 -1
  769. package/fontes/modificadores/posicao-direita.js +6 -12
  770. package/fontes/modificadores/posicao-direita.js.map +1 -1
  771. package/fontes/modificadores/posicao-enfase-texto.d.ts +2 -1
  772. package/fontes/modificadores/posicao-enfase-texto.js +5 -4
  773. package/fontes/modificadores/posicao-enfase-texto.js.map +1 -1
  774. package/fontes/modificadores/posicao-esquerda.d.ts +2 -1
  775. package/fontes/modificadores/posicao-esquerda.js +5 -9
  776. package/fontes/modificadores/posicao-esquerda.js.map +1 -1
  777. package/fontes/modificadores/posicao-fundo.d.ts +2 -1
  778. package/fontes/modificadores/posicao-fundo.js +12 -16
  779. package/fontes/modificadores/posicao-fundo.js.map +1 -1
  780. package/fontes/modificadores/posicao-horizontal-fundo.d.ts +2 -1
  781. package/fontes/modificadores/posicao-horizontal-fundo.js +5 -9
  782. package/fontes/modificadores/posicao-horizontal-fundo.js.map +1 -1
  783. package/fontes/modificadores/posicao-inferior.d.ts +2 -1
  784. package/fontes/modificadores/posicao-inferior.js +5 -9
  785. package/fontes/modificadores/posicao-inferior.js.map +1 -1
  786. package/fontes/modificadores/posicao-legenda.d.ts +2 -1
  787. package/fontes/modificadores/posicao-legenda.js +5 -4
  788. package/fontes/modificadores/posicao-legenda.js.map +1 -1
  789. package/fontes/modificadores/posicao-mascara.d.ts +2 -1
  790. package/fontes/modificadores/posicao-mascara.js +5 -4
  791. package/fontes/modificadores/posicao-mascara.js.map +1 -1
  792. package/fontes/modificadores/posicao-objeto.d.ts +2 -1
  793. package/fontes/modificadores/posicao-objeto.js +5 -4
  794. package/fontes/modificadores/posicao-objeto.js.map +1 -1
  795. package/fontes/modificadores/posicao-superior.d.ts +2 -1
  796. package/fontes/modificadores/posicao-superior.js +5 -9
  797. package/fontes/modificadores/posicao-superior.js.map +1 -1
  798. package/fontes/modificadores/posicao-texto-sublinhado.d.ts +2 -1
  799. package/fontes/modificadores/posicao-texto-sublinhado.js +6 -4
  800. package/fontes/modificadores/posicao-texto-sublinhado.js.map +1 -1
  801. package/fontes/modificadores/posicao-vertical-fundo.d.ts +2 -1
  802. package/fontes/modificadores/posicao-vertical-fundo.js +5 -9
  803. package/fontes/modificadores/posicao-vertical-fundo.js.map +1 -1
  804. package/fontes/modificadores/posicao.d.ts +2 -1
  805. package/fontes/modificadores/posicao.js +5 -4
  806. package/fontes/modificadores/posicao.js.map +1 -1
  807. package/fontes/modificadores/posicionar-conteudo.d.ts +2 -1
  808. package/fontes/modificadores/posicionar-conteudo.js +7 -6
  809. package/fontes/modificadores/posicionar-conteudo.js.map +1 -1
  810. package/fontes/modificadores/posicionar-itens.d.ts +2 -1
  811. package/fontes/modificadores/posicionar-itens.js +7 -6
  812. package/fontes/modificadores/posicionar-itens.js.map +1 -1
  813. package/fontes/modificadores/posicionar-se.d.ts +2 -1
  814. package/fontes/modificadores/posicionar-se.js +7 -6
  815. package/fontes/modificadores/posicionar-se.js.map +1 -1
  816. package/fontes/modificadores/preencher-coluna.d.ts +2 -1
  817. package/fontes/modificadores/preencher-coluna.js +5 -4
  818. package/fontes/modificadores/preencher-coluna.js.map +1 -1
  819. package/fontes/modificadores/proporcao-tela.d.ts +2 -1
  820. package/fontes/modificadores/proporcao-tela.js +7 -6
  821. package/fontes/modificadores/proporcao-tela.js.map +1 -1
  822. package/fontes/modificadores/propriedade-transicao.d.ts +2 -1
  823. package/fontes/modificadores/propriedade-transicao.js +7 -6
  824. package/fontes/modificadores/propriedade-transicao.js.map +1 -1
  825. package/fontes/modificadores/quebra-decoracao-caixa.d.ts +2 -1
  826. package/fontes/modificadores/quebra-decoracao-caixa.js +6 -4
  827. package/fontes/modificadores/quebra-decoracao-caixa.js.map +1 -1
  828. package/fontes/modificadores/quebrar-antes.d.ts +2 -1
  829. package/fontes/modificadores/quebrar-antes.js +5 -4
  830. package/fontes/modificadores/quebrar-antes.js.map +1 -1
  831. package/fontes/modificadores/quebrar-apos.d.ts +2 -1
  832. package/fontes/modificadores/quebrar-apos.js +5 -4
  833. package/fontes/modificadores/quebrar-apos.js.map +1 -1
  834. package/fontes/modificadores/quebrar-dentro.d.ts +2 -1
  835. package/fontes/modificadores/quebrar-dentro.js +5 -4
  836. package/fontes/modificadores/quebrar-dentro.js.map +1 -1
  837. package/fontes/modificadores/quebrar-linha.d.ts +2 -1
  838. package/fontes/modificadores/quebrar-linha.js +5 -4
  839. package/fontes/modificadores/quebrar-linha.js.map +1 -1
  840. package/fontes/modificadores/quebrar-pagina-antes.d.ts +2 -1
  841. package/fontes/modificadores/quebrar-pagina-antes.js +5 -4
  842. package/fontes/modificadores/quebrar-pagina-antes.js.map +1 -1
  843. package/fontes/modificadores/quebrar-pagina-apos.d.ts +2 -1
  844. package/fontes/modificadores/quebrar-pagina-apos.js +5 -4
  845. package/fontes/modificadores/quebrar-pagina-apos.js.map +1 -1
  846. package/fontes/modificadores/quebrar-pagina-dentro.d.ts +2 -1
  847. package/fontes/modificadores/quebrar-pagina-dentro.js +5 -4
  848. package/fontes/modificadores/quebrar-pagina-dentro.js.map +1 -1
  849. package/fontes/modificadores/quebrar-palavra.d.ts +2 -1
  850. package/fontes/modificadores/quebrar-palavra.js +5 -4
  851. package/fontes/modificadores/quebrar-palavra.js.map +1 -1
  852. package/fontes/modificadores/raio-borda.d.ts +2 -1
  853. package/fontes/modificadores/raio-borda.js +7 -11
  854. package/fontes/modificadores/raio-borda.js.map +1 -1
  855. package/fontes/modificadores/raio-direito-borda-inferior.d.ts +2 -1
  856. package/fontes/modificadores/raio-direito-borda-inferior.js +5 -9
  857. package/fontes/modificadores/raio-direito-borda-inferior.js.map +1 -1
  858. package/fontes/modificadores/raio-direito-borda-superior.d.ts +2 -1
  859. package/fontes/modificadores/raio-direito-borda-superior.js +5 -9
  860. package/fontes/modificadores/raio-direito-borda-superior.js.map +1 -1
  861. package/fontes/modificadores/raio-esquerdo-borda-inferior.d.ts +2 -1
  862. package/fontes/modificadores/raio-esquerdo-borda-inferior.js +5 -9
  863. package/fontes/modificadores/raio-esquerdo-borda-inferior.js.map +1 -1
  864. package/fontes/modificadores/raio-esquerdo-borda-superior.d.ts +2 -1
  865. package/fontes/modificadores/raio-esquerdo-borda-superior.js +5 -9
  866. package/fontes/modificadores/raio-esquerdo-borda-superior.js.map +1 -1
  867. package/fontes/modificadores/recolher-borda.d.ts +2 -1
  868. package/fontes/modificadores/recolher-borda.js +5 -4
  869. package/fontes/modificadores/recolher-borda.js.map +1 -1
  870. package/fontes/modificadores/recortar-fundo.d.ts +2 -1
  871. package/fontes/modificadores/recortar-fundo.js +5 -4
  872. package/fontes/modificadores/recortar-fundo.js.map +1 -1
  873. package/fontes/modificadores/recortar-margem-vazada.d.ts +2 -1
  874. package/fontes/modificadores/recortar-margem-vazada.js +5 -9
  875. package/fontes/modificadores/recortar-margem-vazada.js.map +1 -1
  876. package/fontes/modificadores/recortar.d.ts +2 -1
  877. package/fontes/modificadores/recortar.js +5 -4
  878. package/fontes/modificadores/recortar.js.map +1 -1
  879. package/fontes/modificadores/recuo-direito-rolagem-mouse.d.ts +2 -1
  880. package/fontes/modificadores/recuo-direito-rolagem-mouse.js +5 -9
  881. package/fontes/modificadores/recuo-direito-rolagem-mouse.js.map +1 -1
  882. package/fontes/modificadores/recuo-direito.d.ts +2 -1
  883. package/fontes/modificadores/recuo-direito.js +5 -11
  884. package/fontes/modificadores/recuo-direito.js.map +1 -1
  885. package/fontes/modificadores/recuo-em-bloco-fim.d.ts +2 -1
  886. package/fontes/modificadores/recuo-em-bloco-fim.js +5 -9
  887. package/fontes/modificadores/recuo-em-bloco-fim.js.map +1 -1
  888. package/fontes/modificadores/recuo-em-bloco-rolagem-mouse.d.ts +2 -1
  889. package/fontes/modificadores/recuo-em-bloco-rolagem-mouse.js +7 -11
  890. package/fontes/modificadores/recuo-em-bloco-rolagem-mouse.js.map +1 -1
  891. package/fontes/modificadores/recuo-em-bloco.d.ts +2 -1
  892. package/fontes/modificadores/recuo-em-bloco.js +7 -11
  893. package/fontes/modificadores/recuo-em-bloco.js.map +1 -1
  894. package/fontes/modificadores/recuo-em-linha-fim.d.ts +2 -1
  895. package/fontes/modificadores/recuo-em-linha-fim.js +5 -9
  896. package/fontes/modificadores/recuo-em-linha-fim.js.map +1 -1
  897. package/fontes/modificadores/recuo-em-linha-rolagem-mouse.d.ts +2 -1
  898. package/fontes/modificadores/recuo-em-linha-rolagem-mouse.js +7 -11
  899. package/fontes/modificadores/recuo-em-linha-rolagem-mouse.js.map +1 -1
  900. package/fontes/modificadores/recuo-em-linha.d.ts +2 -1
  901. package/fontes/modificadores/recuo-em-linha.js +7 -11
  902. package/fontes/modificadores/recuo-em-linha.js.map +1 -1
  903. package/fontes/modificadores/recuo-esquerdo-rolagem-mouse.d.ts +2 -1
  904. package/fontes/modificadores/recuo-esquerdo-rolagem-mouse.js +5 -9
  905. package/fontes/modificadores/recuo-esquerdo-rolagem-mouse.js.map +1 -1
  906. package/fontes/modificadores/recuo-esquerdo.d.ts +2 -1
  907. package/fontes/modificadores/recuo-esquerdo.js +5 -11
  908. package/fontes/modificadores/recuo-esquerdo.js.map +1 -1
  909. package/fontes/modificadores/recuo-inferior-rolagem-mouse.d.ts +2 -1
  910. package/fontes/modificadores/recuo-inferior-rolagem-mouse.js +5 -9
  911. package/fontes/modificadores/recuo-inferior-rolagem-mouse.js.map +1 -1
  912. package/fontes/modificadores/recuo-inferior.d.ts +2 -1
  913. package/fontes/modificadores/recuo-inferior.js +5 -11
  914. package/fontes/modificadores/recuo-inferior.js.map +1 -1
  915. package/fontes/modificadores/recuo-rolagem-mouse.d.ts +2 -1
  916. package/fontes/modificadores/recuo-rolagem-mouse.js +7 -11
  917. package/fontes/modificadores/recuo-rolagem-mouse.js.map +1 -1
  918. package/fontes/modificadores/recuo-superior-rolagem-mouse.d.ts +2 -1
  919. package/fontes/modificadores/recuo-superior-rolagem-mouse.js +5 -9
  920. package/fontes/modificadores/recuo-superior-rolagem-mouse.js.map +1 -1
  921. package/fontes/modificadores/recuo-superior.d.ts +2 -1
  922. package/fontes/modificadores/recuo-superior.js +5 -11
  923. package/fontes/modificadores/recuo-superior.js.map +1 -1
  924. package/fontes/modificadores/recuo.d.ts +2 -1
  925. package/fontes/modificadores/recuo.js +8 -11
  926. package/fontes/modificadores/recuo.js.map +1 -1
  927. package/fontes/modificadores/recursos-fonte.d.ts +2 -1
  928. package/fontes/modificadores/recursos-fonte.js +15 -24
  929. package/fontes/modificadores/recursos-fonte.js.map +1 -1
  930. package/fontes/modificadores/redimensionar.d.ts +2 -1
  931. package/fontes/modificadores/redimensionar.js +5 -4
  932. package/fontes/modificadores/redimensionar.js.map +1 -1
  933. package/fontes/modificadores/regras-coluna.d.ts +2 -1
  934. package/fontes/modificadores/regras-coluna.js +7 -11
  935. package/fontes/modificadores/regras-coluna.js.map +1 -1
  936. package/fontes/modificadores/regras-cor-coluna.d.ts +2 -1
  937. package/fontes/modificadores/regras-cor-coluna.js +5 -4
  938. package/fontes/modificadores/regras-cor-coluna.js.map +1 -1
  939. package/fontes/modificadores/regras-estilo-coluna.d.ts +2 -1
  940. package/fontes/modificadores/regras-estilo-coluna.js +5 -4
  941. package/fontes/modificadores/regras-estilo-coluna.js.map +1 -1
  942. package/fontes/modificadores/regras-largura-coluna.d.ts +2 -1
  943. package/fontes/modificadores/regras-largura-coluna.js +5 -9
  944. package/fontes/modificadores/regras-largura-coluna.js.map +1 -1
  945. package/fontes/modificadores/reiniciar-contador.d.ts +2 -1
  946. package/fontes/modificadores/reiniciar-contador.js +5 -4
  947. package/fontes/modificadores/reiniciar-contador.js.map +1 -1
  948. package/fontes/modificadores/reiniciar-tudo.d.ts +2 -1
  949. package/fontes/modificadores/reiniciar-tudo.js +6 -9
  950. package/fontes/modificadores/reiniciar-tudo.js.map +1 -1
  951. package/fontes/modificadores/renderizacao-imagem.d.ts +2 -1
  952. package/fontes/modificadores/renderizacao-imagem.js +5 -4
  953. package/fontes/modificadores/renderizacao-imagem.js.map +1 -1
  954. package/fontes/modificadores/renderizacao-texto.d.ts +2 -1
  955. package/fontes/modificadores/renderizacao-texto.js +5 -4
  956. package/fontes/modificadores/renderizacao-texto.js.map +1 -1
  957. package/fontes/modificadores/repeticao-borda-mascara.d.ts +2 -1
  958. package/fontes/modificadores/repeticao-borda-mascara.js +6 -4
  959. package/fontes/modificadores/repeticao-borda-mascara.js.map +1 -1
  960. package/fontes/modificadores/repetir-animacao.d.ts +2 -1
  961. package/fontes/modificadores/repetir-animacao.js +5 -6
  962. package/fontes/modificadores/repetir-animacao.js.map +1 -1
  963. package/fontes/modificadores/repetir-fundo.d.ts +2 -1
  964. package/fontes/modificadores/repetir-fundo.js +5 -4
  965. package/fontes/modificadores/repetir-fundo.js.map +1 -1
  966. package/fontes/modificadores/repetir-imagem-borda.d.ts +2 -1
  967. package/fontes/modificadores/repetir-imagem-borda.js +5 -4
  968. package/fontes/modificadores/repetir-imagem-borda.js.map +1 -1
  969. package/fontes/modificadores/repetir-mascara.d.ts +2 -1
  970. package/fontes/modificadores/repetir-mascara.js +5 -4
  971. package/fontes/modificadores/repetir-mascara.js.map +1 -1
  972. package/fontes/modificadores/rotacao-deslocamento.d.ts +2 -1
  973. package/fontes/modificadores/rotacao-deslocamento.js +5 -10
  974. package/fontes/modificadores/rotacao-deslocamento.js.map +1 -1
  975. package/fontes/modificadores/selecao-usuario.d.ts +2 -1
  976. package/fontes/modificadores/selecao-usuario.js +5 -4
  977. package/fontes/modificadores/selecao-usuario.js.map +1 -1
  978. package/fontes/modificadores/sintetizar-fonte.d.ts +2 -1
  979. package/fontes/modificadores/sintetizar-fonte.js +10 -9
  980. package/fontes/modificadores/sintetizar-fonte.js.map +1 -1
  981. package/fontes/modificadores/sombra-caixa.d.ts +2 -3
  982. package/fontes/modificadores/sombra-caixa.js +5 -10
  983. package/fontes/modificadores/sombra-caixa.js.map +1 -1
  984. package/fontes/modificadores/sombra-texto.d.ts +2 -1
  985. package/fontes/modificadores/sombra-texto.js +5 -9
  986. package/fontes/modificadores/sombra-texto.js.map +1 -1
  987. package/fontes/modificadores/status-animacao.d.ts +2 -1
  988. package/fontes/modificadores/status-animacao.js +5 -4
  989. package/fontes/modificadores/status-animacao.js.map +1 -1
  990. package/fontes/modificadores/substituir-idioma-fonte.d.ts +2 -1
  991. package/fontes/modificadores/substituir-idioma-fonte.js +12 -7
  992. package/fontes/modificadores/substituir-idioma-fonte.js.map +1 -1
  993. package/fontes/modificadores/superclasse/modificador.d.ts +6 -3
  994. package/fontes/modificadores/superclasse/modificador.js +1 -0
  995. package/fontes/modificadores/superclasse/modificador.js.map +1 -1
  996. package/fontes/modificadores/superclasse/seletor-modificador.d.ts +2 -2
  997. package/fontes/modificadores/superclasse/seletor-modificador.js +2 -2
  998. package/fontes/modificadores/superclasse/seletor-modificador.js.map +1 -1
  999. package/fontes/modificadores/superclasse/seletor-reverso-modificador.d.ts +1 -1
  1000. package/fontes/modificadores/superclasse/seletor-reverso-modificador.js +2 -2
  1001. package/fontes/modificadores/superclasse/seletor-reverso-modificador.js.map +1 -1
  1002. package/fontes/modificadores/tabulacao.d.ts +2 -1
  1003. package/fontes/modificadores/tabulacao.js +5 -9
  1004. package/fontes/modificadores/tabulacao.js.map +1 -1
  1005. package/fontes/modificadores/tamanho-caixa.d.ts +2 -1
  1006. package/fontes/modificadores/tamanho-caixa.js +5 -4
  1007. package/fontes/modificadores/tamanho-caixa.js.map +1 -1
  1008. package/fontes/modificadores/tamanho-colunas-em-grade.d.ts +2 -1
  1009. package/fontes/modificadores/tamanho-colunas-em-grade.js +6 -10
  1010. package/fontes/modificadores/tamanho-colunas-em-grade.js.map +1 -1
  1011. package/fontes/modificadores/tamanho-em-bloco.d.ts +2 -1
  1012. package/fontes/modificadores/tamanho-em-bloco.js +5 -9
  1013. package/fontes/modificadores/tamanho-em-bloco.js.map +1 -1
  1014. package/fontes/modificadores/tamanho-em-linha.d.ts +2 -1
  1015. package/fontes/modificadores/tamanho-em-linha.js +5 -9
  1016. package/fontes/modificadores/tamanho-em-linha.js.map +1 -1
  1017. package/fontes/modificadores/tamanho-fonte.d.ts +2 -1
  1018. package/fontes/modificadores/tamanho-fonte.js +5 -9
  1019. package/fontes/modificadores/tamanho-fonte.js.map +1 -1
  1020. package/fontes/modificadores/tamanho-fundo.d.ts +2 -1
  1021. package/fontes/modificadores/tamanho-fundo.js +5 -9
  1022. package/fontes/modificadores/tamanho-fundo.js.map +1 -1
  1023. package/fontes/modificadores/tamanho-grade.d.ts +2 -1
  1024. package/fontes/modificadores/tamanho-grade.js +7 -6
  1025. package/fontes/modificadores/tamanho-grade.js.map +1 -1
  1026. package/fontes/modificadores/tamanho-linhas-em-grade.d.ts +2 -1
  1027. package/fontes/modificadores/tamanho-linhas-em-grade.js +6 -10
  1028. package/fontes/modificadores/tamanho-linhas-em-grade.js.map +1 -1
  1029. package/fontes/modificadores/tamanho-mascara.d.ts +2 -1
  1030. package/fontes/modificadores/tamanho-mascara.js +5 -9
  1031. package/fontes/modificadores/tamanho-mascara.js.map +1 -1
  1032. package/fontes/modificadores/tamanho-maximo-em-bloco.d.ts +2 -1
  1033. package/fontes/modificadores/tamanho-maximo-em-bloco.js +5 -9
  1034. package/fontes/modificadores/tamanho-maximo-em-bloco.js.map +1 -1
  1035. package/fontes/modificadores/tamanho-maximo-em-linha.d.ts +2 -1
  1036. package/fontes/modificadores/tamanho-maximo-em-linha.js +5 -9
  1037. package/fontes/modificadores/tamanho-maximo-em-linha.js.map +1 -1
  1038. package/fontes/modificadores/tamanho-minimo-em-bloco.d.ts +2 -1
  1039. package/fontes/modificadores/tamanho-minimo-em-bloco.js +5 -9
  1040. package/fontes/modificadores/tamanho-minimo-em-bloco.js.map +1 -1
  1041. package/fontes/modificadores/tamanho-minimo-em-linha.d.ts +2 -1
  1042. package/fontes/modificadores/tamanho-minimo-em-linha.js +5 -9
  1043. package/fontes/modificadores/tamanho-minimo-em-linha.js.map +1 -1
  1044. package/fontes/modificadores/tamanho-optico-fonte.d.ts +2 -1
  1045. package/fontes/modificadores/tamanho-optico-fonte.js +5 -4
  1046. package/fontes/modificadores/tamanho-optico-fonte.js.map +1 -1
  1047. package/fontes/modificadores/tempo-transicao.d.ts +2 -3
  1048. package/fontes/modificadores/tempo-transicao.js +5 -15
  1049. package/fontes/modificadores/tempo-transicao.js.map +1 -1
  1050. package/fontes/modificadores/texto-bidirecional.d.ts +2 -1
  1051. package/fontes/modificadores/texto-bidirecional.js +5 -4
  1052. package/fontes/modificadores/texto-bidirecional.js.map +1 -1
  1053. package/fontes/modificadores/tipo-encaixe-rolagem-mouse.d.ts +2 -1
  1054. package/fontes/modificadores/tipo-encaixe-rolagem-mouse.js +6 -4
  1055. package/fontes/modificadores/tipo-encaixe-rolagem-mouse.js.map +1 -1
  1056. package/fontes/modificadores/tipo-mascara.d.ts +2 -1
  1057. package/fontes/modificadores/tipo-mascara.js +5 -4
  1058. package/fontes/modificadores/tipo-mascara.js.map +1 -1
  1059. package/fontes/modificadores/toque-tela.d.ts +2 -1
  1060. package/fontes/modificadores/toque-tela.js +5 -4
  1061. package/fontes/modificadores/toque-tela.js.map +1 -1
  1062. package/fontes/modificadores/trajeto-deslocamento.d.ts +2 -3
  1063. package/fontes/modificadores/trajeto-deslocamento.js +5 -15
  1064. package/fontes/modificadores/trajeto-deslocamento.js.map +1 -1
  1065. package/fontes/modificadores/transformar-caixa.d.ts +2 -1
  1066. package/fontes/modificadores/transformar-caixa.js +5 -4
  1067. package/fontes/modificadores/transformar-caixa.js.map +1 -1
  1068. package/fontes/modificadores/transformar-estilo.d.ts +2 -1
  1069. package/fontes/modificadores/transformar-estilo.js +5 -4
  1070. package/fontes/modificadores/transformar-estilo.js.map +1 -1
  1071. package/fontes/modificadores/transformar-origem.d.ts +2 -1
  1072. package/fontes/modificadores/transformar-origem.js +5 -10
  1073. package/fontes/modificadores/transformar-origem.js.map +1 -1
  1074. package/fontes/modificadores/transformar-texto.d.ts +2 -1
  1075. package/fontes/modificadores/transformar-texto.js +5 -4
  1076. package/fontes/modificadores/transformar-texto.js.map +1 -1
  1077. package/fontes/modificadores/transformar.d.ts +2 -3
  1078. package/fontes/modificadores/transformar.js +6 -15
  1079. package/fontes/modificadores/transformar.js.map +1 -1
  1080. package/fontes/modificadores/transicao.d.ts +2 -1
  1081. package/fontes/modificadores/transicao.js +7 -11
  1082. package/fontes/modificadores/transicao.js.map +1 -1
  1083. package/fontes/modificadores/validacoes/atribuicao-abreviada.d.ts +5 -2
  1084. package/fontes/modificadores/validacoes/atribuicao-abreviada.js +35 -45
  1085. package/fontes/modificadores/validacoes/atribuicao-abreviada.js.map +1 -1
  1086. package/fontes/modificadores/validacoes/capturar-valor.d.ts +6 -0
  1087. package/fontes/modificadores/validacoes/capturar-valor.js +35 -0
  1088. package/fontes/modificadores/validacoes/capturar-valor.js.map +1 -0
  1089. package/fontes/modificadores/validacoes/comum.d.ts +2 -1
  1090. package/fontes/modificadores/validacoes/comum.js +14 -11
  1091. package/fontes/modificadores/validacoes/comum.js.map +1 -1
  1092. package/fontes/modificadores/validacoes/condicao-extra.d.ts +2 -1
  1093. package/fontes/modificadores/validacoes/condicao-extra.js +10 -8
  1094. package/fontes/modificadores/validacoes/condicao-extra.js.map +1 -1
  1095. package/fontes/modificadores/validacoes/cor.d.ts +2 -4
  1096. package/fontes/modificadores/validacoes/cor.js +19 -19
  1097. package/fontes/modificadores/validacoes/cor.js.map +1 -1
  1098. package/fontes/modificadores/validacoes/fonte.d.ts +3 -2
  1099. package/fontes/modificadores/validacoes/fonte.js +7 -5
  1100. package/fontes/modificadores/validacoes/fonte.js.map +1 -1
  1101. package/fontes/modificadores/validacoes/identificacao-personalizada.d.ts +4 -1
  1102. package/fontes/modificadores/validacoes/identificacao-personalizada.js +28 -7
  1103. package/fontes/modificadores/validacoes/identificacao-personalizada.js.map +1 -1
  1104. package/fontes/modificadores/validacoes/multiplos-qualitativos.d.ts +6 -1
  1105. package/fontes/modificadores/validacoes/multiplos-qualitativos.js +34 -20
  1106. package/fontes/modificadores/validacoes/multiplos-qualitativos.js.map +1 -1
  1107. package/fontes/modificadores/validacoes/numerica.d.ts +5 -2
  1108. package/fontes/modificadores/validacoes/numerica.js +34 -20
  1109. package/fontes/modificadores/validacoes/numerica.js.map +1 -1
  1110. package/fontes/modificadores/validacoes/proibir-quantificador.d.ts +1 -1
  1111. package/fontes/modificadores/validacoes/proibir-quantificador.js +2 -2
  1112. package/fontes/modificadores/validacoes/proibir-quantificador.js.map +1 -1
  1113. package/fontes/modificadores/validacoes/quantificador.d.ts +1 -1
  1114. package/fontes/modificadores/validacoes/quantificador.js +4 -15
  1115. package/fontes/modificadores/validacoes/quantificador.js.map +1 -1
  1116. package/fontes/modificadores/validacoes/string.d.ts +2 -1
  1117. package/fontes/modificadores/validacoes/string.js +1 -1
  1118. package/fontes/modificadores/validacoes/string.js.map +1 -1
  1119. package/fontes/modificadores/variacao-fonte-alternativa.d.ts +2 -1
  1120. package/fontes/modificadores/variacao-fonte-alternativa.js +7 -4
  1121. package/fontes/modificadores/variacao-fonte-alternativa.js.map +1 -1
  1122. package/fontes/modificadores/variacao-fonte-asiatica.d.ts +2 -1
  1123. package/fontes/modificadores/variacao-fonte-asiatica.js +6 -4
  1124. package/fontes/modificadores/variacao-fonte-asiatica.js.map +1 -1
  1125. package/fontes/modificadores/variacao-fonte-ligacao.d.ts +2 -1
  1126. package/fontes/modificadores/variacao-fonte-ligacao.js +6 -4
  1127. package/fontes/modificadores/variacao-fonte-ligacao.js.map +1 -1
  1128. package/fontes/modificadores/variacao-fonte-maiuscula.d.ts +2 -1
  1129. package/fontes/modificadores/variacao-fonte-maiuscula.js +6 -4
  1130. package/fontes/modificadores/variacao-fonte-maiuscula.js.map +1 -1
  1131. package/fontes/modificadores/variacao-fonte-numerica.d.ts +2 -1
  1132. package/fontes/modificadores/variacao-fonte-numerica.js +6 -4
  1133. package/fontes/modificadores/variacao-fonte-numerica.js.map +1 -1
  1134. package/fontes/modificadores/variacao-fonte-posicao.d.ts +2 -1
  1135. package/fontes/modificadores/variacao-fonte-posicao.js +6 -4
  1136. package/fontes/modificadores/variacao-fonte-posicao.js.map +1 -1
  1137. package/fontes/modificadores/variacao-fonte.d.ts +2 -1
  1138. package/fontes/modificadores/variacao-fonte.js +7 -6
  1139. package/fontes/modificadores/variacao-fonte.js.map +1 -1
  1140. package/fontes/modificadores/vazamento-em-ancora.d.ts +2 -1
  1141. package/fontes/modificadores/vazamento-em-ancora.js +5 -4
  1142. package/fontes/modificadores/vazamento-em-ancora.js.map +1 -1
  1143. package/fontes/modificadores/vazamento-em-bloco.d.ts +2 -1
  1144. package/fontes/modificadores/vazamento-em-bloco.js +6 -5
  1145. package/fontes/modificadores/vazamento-em-bloco.js.map +1 -1
  1146. package/fontes/modificadores/vazamento-em-linha.d.ts +2 -1
  1147. package/fontes/modificadores/vazamento-em-linha.js +6 -5
  1148. package/fontes/modificadores/vazamento-em-linha.js.map +1 -1
  1149. package/fontes/modificadores/vazamento-horizontal.d.ts +2 -1
  1150. package/fontes/modificadores/vazamento-horizontal.js +6 -5
  1151. package/fontes/modificadores/vazamento-horizontal.js.map +1 -1
  1152. package/fontes/modificadores/vazamento-texto.d.ts +2 -1
  1153. package/fontes/modificadores/vazamento-texto.js +13 -9
  1154. package/fontes/modificadores/vazamento-texto.js.map +1 -1
  1155. package/fontes/modificadores/vazamento-vertical.d.ts +2 -1
  1156. package/fontes/modificadores/vazamento-vertical.js +6 -5
  1157. package/fontes/modificadores/vazamento-vertical.js.map +1 -1
  1158. package/fontes/modificadores/vazamento.d.ts +2 -1
  1159. package/fontes/modificadores/vazamento.js +8 -7
  1160. package/fontes/modificadores/vazamento.js.map +1 -1
  1161. package/fontes/modificadores/velocidade-animacao.d.ts +2 -3
  1162. package/fontes/modificadores/velocidade-animacao.js +5 -15
  1163. package/fontes/modificadores/velocidade-animacao.js.map +1 -1
  1164. package/fontes/modificadores/visibilidade-conteudo.d.ts +2 -1
  1165. package/fontes/modificadores/visibilidade-conteudo.js +5 -4
  1166. package/fontes/modificadores/visibilidade-conteudo.js.map +1 -1
  1167. package/fontes/modificadores/visibilidade-fundo.d.ts +2 -1
  1168. package/fontes/modificadores/visibilidade-fundo.js +5 -4
  1169. package/fontes/modificadores/visibilidade-fundo.js.map +1 -1
  1170. package/fontes/modificadores/visibilidade.d.ts +2 -1
  1171. package/fontes/modificadores/visibilidade.js +5 -4
  1172. package/fontes/modificadores/visibilidade.js.map +1 -1
  1173. package/fontes/resolvedores/index.d.ts +2 -0
  1174. package/fontes/{serializadores → resolvedores}/index.js +2 -2
  1175. package/fontes/resolvedores/index.js.map +1 -0
  1176. package/fontes/resolvedores/resolvedor-reverso.d.ts +14 -0
  1177. package/fontes/{serializadores/serializador-reverso.js → resolvedores/resolvedor-reverso.js} +25 -25
  1178. package/fontes/resolvedores/resolvedor-reverso.js.map +1 -0
  1179. package/fontes/resolvedores/resolvedor.d.ts +39 -0
  1180. package/fontes/resolvedores/resolvedor.js +181 -0
  1181. package/fontes/resolvedores/resolvedor.js.map +1 -0
  1182. package/fontes/tradutores/tradutor-reverso.js +1 -4
  1183. package/fontes/tradutores/tradutor-reverso.js.map +1 -1
  1184. package/fontes/tradutores/tradutor.js +4 -2
  1185. package/fontes/tradutores/tradutor.js.map +1 -1
  1186. package/fontes/valores/dicionario-valores.js +18 -0
  1187. package/fontes/valores/dicionario-valores.js.map +1 -1
  1188. package/fontes/valores/index.d.ts +6 -0
  1189. package/fontes/valores/index.js +23 -0
  1190. package/fontes/valores/index.js.map +1 -0
  1191. package/fontes/valores/metodos/css/annotation.d.ts +8 -0
  1192. package/fontes/valores/metodos/css/annotation.js +25 -0
  1193. package/fontes/valores/metodos/css/annotation.js.map +1 -0
  1194. package/fontes/valores/metodos/css/character-variant.d.ts +8 -0
  1195. package/fontes/valores/metodos/css/character-variant.js +19 -0
  1196. package/fontes/valores/metodos/css/character-variant.js.map +1 -0
  1197. package/fontes/valores/metodos/css/counter.d.ts +10 -0
  1198. package/fontes/valores/metodos/css/counter.js +55 -0
  1199. package/fontes/valores/metodos/css/counter.js.map +1 -0
  1200. package/fontes/valores/metodos/css/ornaments.d.ts +8 -0
  1201. package/fontes/valores/metodos/css/ornaments.js +25 -0
  1202. package/fontes/valores/metodos/css/ornaments.js.map +1 -0
  1203. package/fontes/valores/metodos/css/rotate3d.d.ts +12 -0
  1204. package/fontes/valores/metodos/css/rotate3d.js +26 -0
  1205. package/fontes/valores/metodos/css/rotate3d.js.map +1 -0
  1206. package/fontes/valores/metodos/css/styleset.d.ts +10 -0
  1207. package/fontes/valores/metodos/css/styleset.js +29 -0
  1208. package/fontes/valores/metodos/css/styleset.js.map +1 -0
  1209. package/fontes/valores/metodos/css/stylistic.d.ts +8 -0
  1210. package/fontes/valores/metodos/css/stylistic.js +19 -0
  1211. package/fontes/valores/metodos/css/stylistic.js.map +1 -0
  1212. package/fontes/valores/metodos/css/swash.d.ts +8 -0
  1213. package/fontes/valores/metodos/css/swash.js +19 -0
  1214. package/fontes/valores/metodos/css/swash.js.map +1 -0
  1215. package/fontes/valores/metodos/foles/anotacao.d.ts +8 -0
  1216. package/fontes/valores/metodos/foles/anotacao.js +25 -0
  1217. package/fontes/valores/metodos/foles/anotacao.js.map +1 -0
  1218. package/fontes/valores/metodos/foles/conjunto-estilos.d.ts +10 -0
  1219. package/fontes/valores/metodos/foles/conjunto-estilos.js +29 -0
  1220. package/fontes/valores/metodos/foles/conjunto-estilos.js.map +1 -0
  1221. package/fontes/valores/metodos/foles/contador.d.ts +10 -0
  1222. package/fontes/valores/metodos/foles/contador.js +70 -0
  1223. package/fontes/valores/metodos/foles/contador.js.map +1 -0
  1224. package/fontes/valores/metodos/foles/espirrar.d.ts +8 -0
  1225. package/fontes/valores/metodos/foles/espirrar.js +19 -0
  1226. package/fontes/valores/metodos/foles/espirrar.js.map +1 -0
  1227. package/fontes/valores/metodos/foles/estilistico.d.ts +8 -0
  1228. package/fontes/valores/metodos/foles/estilistico.js +19 -0
  1229. package/fontes/valores/metodos/foles/estilistico.js.map +1 -0
  1230. package/fontes/valores/metodos/foles/ornamentos.d.ts +8 -0
  1231. package/fontes/valores/metodos/foles/ornamentos.js +25 -0
  1232. package/fontes/valores/metodos/foles/ornamentos.js.map +1 -0
  1233. package/fontes/valores/metodos/foles/rotacionar-3d.d.ts +12 -0
  1234. package/fontes/valores/metodos/foles/rotacionar-3d.js +29 -0
  1235. package/fontes/valores/metodos/foles/rotacionar-3d.js.map +1 -0
  1236. package/fontes/valores/metodos/foles/variar-caractere.d.ts +8 -0
  1237. package/fontes/valores/metodos/foles/variar-caractere.js +19 -0
  1238. package/fontes/valores/metodos/foles/variar-caractere.js.map +1 -0
  1239. package/fontes/valores/referencia-variavel.d.ts +6 -0
  1240. package/fontes/valores/referencia-variavel.js +15 -0
  1241. package/fontes/valores/referencia-variavel.js.map +1 -0
  1242. package/fontes/valores/valor-abreviacao.d.ts +4 -0
  1243. package/fontes/valores/valor-abreviacao.js +11 -0
  1244. package/fontes/valores/valor-abreviacao.js.map +1 -0
  1245. package/fontes/valores/valor-numerico.d.ts +7 -0
  1246. package/fontes/valores/valor-numerico.js +20 -0
  1247. package/fontes/valores/valor-numerico.js.map +1 -0
  1248. package/fontes/valores/valor-qualitativo.d.ts +6 -0
  1249. package/fontes/valores/valor-qualitativo.js +15 -0
  1250. package/fontes/valores/valor-qualitativo.js.map +1 -0
  1251. package/fontes/valores/valor-texto.d.ts +6 -0
  1252. package/fontes/valores/valor-texto.js +15 -0
  1253. package/fontes/valores/valor-texto.js.map +1 -0
  1254. package/fontes/valores/valor-virgula.d.ts +4 -0
  1255. package/fontes/valores/valor-virgula.js +11 -0
  1256. package/fontes/valores/valor-virgula.js.map +1 -0
  1257. package/fontes/valores/valor.d.ts +1 -0
  1258. package/fontes/valores/valor.js.map +1 -1
  1259. package/index.d.ts +1 -1
  1260. package/index.js +1 -1
  1261. package/index.js.map +1 -1
  1262. package/package.json +3 -3
  1263. package/testes/avaliador-sintatico.test.js +16 -13
  1264. package/testes/avaliador-sintatico.test.js.map +1 -1
  1265. package/testes/listas/atribuicao-abreviada.js +51 -5
  1266. package/testes/listas/atribuicao-abreviada.js.map +1 -1
  1267. package/testes/listas/valores-numericos.d.ts +4 -0
  1268. package/testes/listas/{valor-numerico.js → valores-numericos.js} +6 -6
  1269. package/testes/listas/valores-numericos.js.map +1 -0
  1270. package/testes/listas/valores-personalizados.d.ts +1 -0
  1271. package/testes/listas/valores-personalizados.js +51 -18
  1272. package/testes/listas/valores-personalizados.js.map +1 -1
  1273. package/testes/listas/{valor-quantificador.d.ts → valores-quantificadores.d.ts} +1 -1
  1274. package/testes/listas/{valor-quantificador.js → valores-quantificadores.js} +3 -3
  1275. package/testes/listas/valores-quantificadores.js.map +1 -0
  1276. package/testes/modificadores/atribuicao-abreviada.test.js +45 -44
  1277. package/testes/modificadores/atribuicao-abreviada.test.js.map +1 -1
  1278. package/testes/modificadores/cores.test.js +35 -34
  1279. package/testes/modificadores/cores.test.js.map +1 -1
  1280. package/testes/modificadores/estilo.test.js +18 -17
  1281. package/testes/modificadores/estilo.test.js.map +1 -1
  1282. package/testes/modificadores/metodos-reversos.test.js +165 -96
  1283. package/testes/modificadores/metodos-reversos.test.js.map +1 -1
  1284. package/testes/modificadores/metodos.test.js +2347 -1804
  1285. package/testes/modificadores/metodos.test.js.map +1 -1
  1286. package/testes/modificadores/palavras-reservadas.test.js +12 -11
  1287. package/testes/modificadores/palavras-reservadas.test.js.map +1 -1
  1288. package/testes/modificadores/posicao.test.js +126 -127
  1289. package/testes/modificadores/posicao.test.js.map +1 -1
  1290. package/testes/modificadores/pseudoclasses.test.js +4 -4
  1291. package/testes/modificadores/pseudoclasses.test.js.map +1 -1
  1292. package/testes/modificadores/status.test.js +22 -25
  1293. package/testes/modificadores/status.test.js.map +1 -1
  1294. package/testes/modificadores/suporte-variaveis.test.js +29 -36
  1295. package/testes/modificadores/suporte-variaveis.test.js.map +1 -1
  1296. package/testes/modificadores/url.test.js +4 -4
  1297. package/testes/modificadores/url.test.js.map +1 -1
  1298. package/testes/modificadores/validacoes-modificadores.test.js +31 -32
  1299. package/testes/modificadores/validacoes-modificadores.test.js.map +1 -1
  1300. package/testes/modificadores/valor-global.test.js +20 -19
  1301. package/testes/modificadores/valor-global.test.js.map +1 -1
  1302. package/testes/modificadores/valor-numerico.test.js +251 -222
  1303. package/testes/modificadores/valor-numerico.test.js.map +1 -1
  1304. package/testes/modificadores/valor-quantificador.test.js +65 -64
  1305. package/testes/modificadores/valor-quantificador.test.js.map +1 -1
  1306. package/testes/modificadores/valor-string.test.js +66 -67
  1307. package/testes/modificadores/valor-string.test.js.map +1 -1
  1308. package/testes/modificadores/valores-especificos.test.js +71 -65
  1309. package/testes/modificadores/valores-especificos.test.js.map +1 -1
  1310. package/testes/{serializador-reverso.test.js → resolvedor-reverso.test.js} +23 -22
  1311. package/testes/resolvedor-reverso.test.js.map +1 -0
  1312. package/testes/resolvedor.test.js +193 -0
  1313. package/testes/resolvedor.test.js.map +1 -0
  1314. package/testes/seletores-estruturas.test.js +7 -7
  1315. package/testes/seletores-estruturas.test.js.map +1 -1
  1316. package/testes/tradutor.test.js +1 -1
  1317. package/testes/tradutor.test.js.map +1 -1
  1318. package/fontes/modificadores/decoracao-cor-texto .js.map +0 -1
  1319. package/fontes/serializadores/index.d.ts +0 -2
  1320. package/fontes/serializadores/index.js.map +0 -1
  1321. package/fontes/serializadores/serializador-reverso.d.ts +0 -12
  1322. package/fontes/serializadores/serializador-reverso.js.map +0 -1
  1323. package/fontes/serializadores/serializador.d.ts +0 -27
  1324. package/fontes/serializadores/serializador.js +0 -219
  1325. package/fontes/serializadores/serializador.js.map +0 -1
  1326. package/testes/listas/valor-numerico.d.ts +0 -4
  1327. package/testes/listas/valor-numerico.js.map +0 -1
  1328. package/testes/listas/valor-quantificador.js.map +0 -1
  1329. package/testes/serializador-reverso.test.js.map +0 -1
  1330. package/testes/serializador.test.js +0 -96
  1331. package/testes/serializador.test.js.map +0 -1
  1332. /package/testes/{serializador-reverso.test.d.ts → resolvedor-reverso.test.d.ts} +0 -0
  1333. /package/testes/{serializador.test.d.ts → resolvedor.test.d.ts} +0 -0
@@ -7,137 +7,43 @@ const avaliador_sintatico_1 = require("../../fontes/avaliador-sintatico");
7
7
  const importador_1 = require("../../fontes/importador");
8
8
  const lexador_1 = require("../../fontes/lexador");
9
9
  const foles_1 = __importDefault(require("../../fontes/tipos-de-simbolos/foles"));
10
- const serializadores_1 = require("../../fontes/serializadores");
10
+ const resolvedores_1 = require("../../fontes/resolvedores");
11
11
  const metodos_1 = require("../listas/metodos");
12
12
  const declaracoes_1 = require("../../fontes/declaracoes");
13
13
  const seletor_valor_1 = require("../../fontes/valores/seletor-valor");
14
+ const contador_1 = require("../../fontes/valores/metodos/foles/contador");
14
15
  describe('Testando Seletores que recebem MÉTODOS como valor', () => {
15
- describe('Testes Unitários', () => {
16
- let lexador;
17
- let importador;
18
- let avaliador;
19
- let tradutor;
20
- beforeEach(() => {
21
- lexador = new lexador_1.Lexador();
22
- importador = new importador_1.Importador(lexador);
23
- avaliador = new avaliador_sintatico_1.AvaliadorSintatico(importador);
24
- tradutor = new serializadores_1.Serializador();
25
- });
26
- it('Atribuindo Método "borrar()"', () => {
27
- for (let index = 0; index < metodos_1.MetodoBorrar.length; index += 1) {
28
- const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
29
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
30
- // Lexador
31
- const resultadoLexador = lexador.mapear([
32
- "lmht {",
33
- `${metodos_1.MetodoBorrar[index]}: borrar(${valoresAceitos[valIndex]});`,
34
- "}"
35
- ]);
36
- // O Lexador não deve encontrar erros
37
- expect(resultadoLexador.erros).toHaveLength(0);
38
- // O valor recebido deve ser mapeado como METODO
39
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
40
- expect.objectContaining({ tipo: foles_1.default.METODO }),
41
- ]));
42
- // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
43
- if (valIndex === 0 || valIndex === 1) {
44
- expect(resultadoLexador.simbolos).toHaveLength(11);
45
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
46
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
47
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
48
- ]));
49
- }
50
- else {
51
- expect(resultadoLexador.simbolos).toHaveLength(10);
52
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
53
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
54
- ]));
55
- }
56
- // Avaliador Sintático
57
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
58
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
59
- // TODO @Vitor: Alterei um caso para você.
60
- // Os demais podem seguir a mesma lógica.
61
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
62
- const primeiroResultado = resultadoAvaliadorSintatico[0];
63
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
64
- const primeiroResultadoTipado = primeiroResultado;
65
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
66
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoBorrar[index]]);
67
- // Tradutor
68
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
69
- // O Tradutor deve serializar de acordo e traduzir borrar para blur
70
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoBorrar[index]]);
71
- expect(resultadoTradutor).toContain(`blur(${valoresAceitos[valIndex]});`);
72
- }
73
- }
74
- });
75
- it('Atribuindo Método "brilho()"', () => {
76
- for (let index = 0; index < metodos_1.MetodoBrilho.length; index += 1) {
77
- const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
78
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
79
- // Lexador
80
- const resultadoLexador = lexador.mapear([
81
- "lmht {",
82
- `${metodos_1.MetodoBrilho[index]}: brilho(${valoresAceitos[valIndex]});`,
83
- "}"
84
- ]);
85
- // O Lexador não deve encontrar erros
86
- expect(resultadoLexador.erros).toHaveLength(0);
87
- // O valor recebido deve ser mapeado como METODO
88
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
89
- expect.objectContaining({ tipo: foles_1.default.METODO }),
90
- ]));
91
- // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
92
- if (valIndex === 0 || valIndex === 1) {
93
- expect(resultadoLexador.simbolos).toHaveLength(11);
94
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
95
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
96
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
97
- ]));
98
- }
99
- else {
100
- expect(resultadoLexador.simbolos).toHaveLength(10);
101
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
102
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
103
- ]));
104
- }
105
- // Avaliador Sintático
106
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
107
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
108
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
109
- const primeiroResultado = resultadoAvaliadorSintatico[0];
110
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
111
- const primeiroResultadoTipado = primeiroResultado;
112
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
113
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoBrilho[index]]);
114
- // Tradutor
115
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
116
- // O Tradutor deve serializar de acordo e traduzir brilho para brightness
117
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoBrilho[index]]);
118
- expect(resultadoTradutor).toContain(`brightness(${valoresAceitos[valIndex]});`);
119
- }
120
- }
121
- });
122
- it('Atribuindo Método "calcular()"', () => {
123
- for (let index = 0; index < metodos_1.MetodoCalcular.length; index += 1) {
16
+ let lexador;
17
+ let importador;
18
+ let avaliador;
19
+ let resolvedor;
20
+ beforeEach(() => {
21
+ lexador = new lexador_1.Lexador();
22
+ importador = new importador_1.Importador(lexador);
23
+ avaliador = new avaliador_sintatico_1.AvaliadorSintatico(importador);
24
+ resolvedor = new resolvedores_1.Resolvedor();
25
+ });
26
+ it('Atribuindo Método "anotação()" com valor numérico - caso de sucesso', () => {
27
+ const formasAceitas = ['anotação', 'anotacao'];
28
+ const valoresAceitos = ['1', '2', '12', '20'];
29
+ for (let valIndex = 0; valIndex < formasAceitas.length; valIndex += 1) {
30
+ for (let index = 0; index < valoresAceitos.length; index += 1) {
124
31
  // Lexador
125
32
  const resultadoLexador = lexador.mapear([
126
33
  "lmht {",
127
- `${metodos_1.MetodoCalcular[index]}: calcular(100px - 80px);`,
34
+ `variacao-fonte-alternativa: ${formasAceitas[valIndex]}(${valoresAceitos[index]});`,
128
35
  "}"
129
36
  ]);
130
- // O Lexador deve montar um objeto de comprimento 14 sem retornar nenhum erro
131
- expect(resultadoLexador.simbolos).toHaveLength(14);
37
+ // O Lexador não deve encontrar erros
132
38
  expect(resultadoLexador.erros).toHaveLength(0);
133
39
  // O valor recebido deve ser mapeado como METODO
134
40
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
135
41
  expect.objectContaining({ tipo: foles_1.default.METODO }),
136
42
  ]));
137
- // O Lexador também deve encontrar números e quantificadores no mapeamento
43
+ // O Lexador deve montar um objeto de comprimento 10, incluindo mapeamento de valores numéricos
44
+ expect(resultadoLexador.simbolos).toHaveLength(10);
138
45
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
139
46
  expect.objectContaining({ tipo: foles_1.default.NUMERO }),
140
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
141
47
  ]));
142
48
  // Avaliador Sintático
143
49
  const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
@@ -147,78 +53,49 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
147
53
  expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
148
54
  const primeiroResultadoTipado = primeiroResultado;
149
55
  expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
150
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoCalcular[index]]);
151
- // Tradutor
152
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
153
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoCalcular[index]]);
154
- expect(resultadoTradutor).toContain('calc(100px - 80px);');
155
- }
156
- });
157
- it('Atribuindo Método "contraste()"', () => {
158
- for (let index = 0; index < metodos_1.MetodoContraste.length; index += 1) {
159
- const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
160
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
161
- // Lexador
162
- const resultadoLexador = lexador.mapear([
163
- "lmht {",
164
- `${metodos_1.MetodoContraste[index]}: contraste(${valoresAceitos[valIndex]});`,
165
- "}"
166
- ]);
167
- // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
168
- if (valIndex === 0 || valIndex === 1) {
169
- expect(resultadoLexador.simbolos).toHaveLength(11);
170
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
171
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
172
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
173
- ]));
174
- }
175
- else {
176
- expect(resultadoLexador.simbolos).toHaveLength(10);
177
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
178
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
179
- ]));
180
- }
181
- // O Lexador não deve encontrar erros
182
- expect(resultadoLexador.erros).toHaveLength(0);
183
- // O valor recebido deve ser mapeado como METODO
184
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
185
- expect.objectContaining({ tipo: foles_1.default.METODO }),
186
- ]));
187
- // Avaliador Sintático
188
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
189
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
190
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
191
- const primeiroResultado = resultadoAvaliadorSintatico[0];
192
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
193
- const primeiroResultadoTipado = primeiroResultado;
194
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
195
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoContraste[index]]);
196
- // Tradutor
197
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
198
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoContraste[index]]);
199
- expect(resultadoTradutor).toContain(`contrast(${valoresAceitos[valIndex]});`);
200
- }
56
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual('font-variant-alternates');
57
+ // Resolvedor
58
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
59
+ // O Resolvedor deve resolver de acordo e traduzir anotação para annotation
60
+ expect(resultadoResolvedor).toContain('font-variant-alternates');
61
+ expect(resultadoResolvedor).toContain(`annotation(${valoresAceitos[index]});`);
201
62
  }
202
- });
203
- it('Atribuindo Método "curva-cúbica" (cubic-bezier)', () => {
204
- for (let index = 0; index < metodos_1.MetodoCurvaCubica.length; index += 1) {
63
+ }
64
+ });
65
+ it('Atribuindo Método "anotação()" com valor numérico - caso de falha', () => {
66
+ const valoresAceitos = ['0', '100', '300'];
67
+ for (let index = 0; index < valoresAceitos.length; index += 1) {
68
+ // Lexador
69
+ const resultadoLexador = lexador.mapear([
70
+ "lmht {",
71
+ `variacao-fonte-alternativa: anotação(${valoresAceitos[index]});`,
72
+ "}"
73
+ ]);
74
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
75
+ expect(() => {
76
+ resolvedor.resolver(resultadoAvaliadorSintatico);
77
+ }).toThrow('O valor da função anotação() deve estar entre 1 e 99');
78
+ }
79
+ });
80
+ it('Atribuindo Método "anotação()" com valor string - caso de sucesso', () => {
81
+ const formasAceitas = ['anotação', 'anotacao'];
82
+ const valoresAceitos = ['floral', 'ruby', 'circle'];
83
+ for (let valIndex = 0; valIndex < formasAceitas.length; valIndex += 1) {
84
+ for (let index = 0; index < valoresAceitos.length; index += 1) {
205
85
  // Lexador
206
86
  const resultadoLexador = lexador.mapear([
207
87
  "lmht {",
208
- `${metodos_1.MetodoCurvaCubica[index]}: curva-cúbica(0.42, 0.0, 1.0, 1.0);`,
88
+ `variacao-fonte-alternativa: ${formasAceitas[valIndex]}('${valoresAceitos[index]}');`,
209
89
  "}"
210
90
  ]);
211
- // O Lexador deve montar um objeto de comprimento 16 sem retornar nenhum erro
212
- expect(resultadoLexador.simbolos).toHaveLength(16);
91
+ // O Lexador não deve encontrar erros
213
92
  expect(resultadoLexador.erros).toHaveLength(0);
214
93
  // O valor recebido deve ser mapeado como METODO
215
94
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
216
95
  expect.objectContaining({ tipo: foles_1.default.METODO }),
217
96
  ]));
218
- // O Lexador também deve encontrar números no mapeamento
219
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
220
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
221
- ]));
97
+ // O Lexador deve montar um objeto de comprimento 10
98
+ expect(resultadoLexador.simbolos).toHaveLength(10);
222
99
  // Avaliador Sintático
223
100
  const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
224
101
  // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
@@ -227,174 +104,87 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
227
104
  expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
228
105
  const primeiroResultadoTipado = primeiroResultado;
229
106
  expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
230
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoCurvaCubica[index]]);
231
- // // // // Tradutor
232
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
233
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoCurvaCubica[index]]);
234
- expect(resultadoTradutor).toContain('cubic-bezier(0.42, 0, 1, 1);');
107
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual('font-variant-alternates');
108
+ // Resolvedor
109
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
110
+ // O Resolvedor deve resolver de acordo e traduzir anotação para annotation e conter o valor string
111
+ expect(resultadoResolvedor).toContain('font-variant-alternates');
112
+ expect(resultadoResolvedor).toContain(`annotation('${valoresAceitos[index]}');`);
235
113
  }
236
- });
237
- it('Atribuindo Método "encaixar-conteúdo" (fit-content)', () => {
238
- for (let index = 0; index < metodos_1.MetodoEncaixarConteudo.length; index += 1) {
114
+ }
115
+ });
116
+ it('Atribuindo Método "anotação()" com valor string - caso de falha', () => {
117
+ const valoresAceitos = ['--valorPersonalizado', 'herdar', 'inicial'];
118
+ for (let index = 0; index < valoresAceitos.length; index += 1) {
119
+ // Lexador
120
+ const resultadoLexador = lexador.mapear([
121
+ "lmht {",
122
+ `variacao-fonte-alternativa: anotação(${valoresAceitos[index]});`,
123
+ "}"
124
+ ]);
125
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
126
+ expect(() => {
127
+ resolvedor.resolver(resultadoAvaliadorSintatico);
128
+ }).toThrow(`Modificador ou variável 'variação-fonte-alternativa' com valor personalizado ${valoresAceitos[index]} inválido. O valor deve seguir as regras de sintaxe de uma identificação personalizada (<custom-indent>).`);
129
+ }
130
+ });
131
+ it('Atribuindo Método "borrar()"', () => {
132
+ for (let index = 0; index < metodos_1.MetodoBorrar.length; index += 1) {
133
+ const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
134
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
239
135
  // Lexador
240
136
  const resultadoLexador = lexador.mapear([
241
137
  "lmht {",
242
- `${metodos_1.MetodoEncaixarConteudo[index]}: encaixar-conteúdo(200px);`,
138
+ `${metodos_1.MetodoBorrar[index]}: borrar(${valoresAceitos[valIndex]});`,
243
139
  "}"
244
140
  ]);
245
- // O Lexador deve montar um objeto de comprimento 11 sem retornar nenhum erro
246
- expect(resultadoLexador.simbolos).toHaveLength(11);
141
+ // O Lexador não deve encontrar erros
247
142
  expect(resultadoLexador.erros).toHaveLength(0);
248
143
  // O valor recebido deve ser mapeado como METODO
249
144
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
250
145
  expect.objectContaining({ tipo: foles_1.default.METODO }),
251
146
  ]));
252
- // O Lexador também deve encontrar número e quantificador no mapeamento
253
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
254
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
255
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
256
- ]));
257
- // Avaliador Sintático
258
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
259
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
260
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
261
- const primeiroResultado = resultadoAvaliadorSintatico[0];
262
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
263
- const primeiroResultadoTipado = primeiroResultado;
264
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
265
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoEncaixarConteudo[index]]);
266
- // // // Tradutor
267
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
268
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoEncaixarConteudo[index]]);
269
- expect(resultadoTradutor).toContain('fit-content(200px)');
270
- }
271
- });
272
- it('Atribuindo Método "escala-cinza()"', () => {
273
- for (let index = 0; index < metodos_1.MetodoEscalaCinza.length; index += 1) {
274
- const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
275
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
276
- // Lexador
277
- const resultadoLexador = lexador.mapear([
278
- "lmht {",
279
- `${metodos_1.MetodoEscalaCinza[index]}: escala-cinza(${valoresAceitos[valIndex]});`,
280
- "}"
281
- ]);
282
- // O Lexador não deve encontrar erros
283
- expect(resultadoLexador.erros).toHaveLength(0);
284
- // O valor recebido deve ser mapeado como METODO
147
+ // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
148
+ if (valIndex === 0 || valIndex === 1) {
149
+ expect(resultadoLexador.simbolos).toHaveLength(11);
285
150
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
286
- expect.objectContaining({ tipo: foles_1.default.METODO }),
151
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
152
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
287
153
  ]));
288
- // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
289
- if (valIndex === 0 || valIndex === 1) {
290
- expect(resultadoLexador.simbolos).toHaveLength(11);
291
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
292
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
293
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
294
- ]));
295
- }
296
- else {
297
- expect(resultadoLexador.simbolos).toHaveLength(10);
298
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
299
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
300
- ]));
301
- }
302
- // Avaliador Sintático
303
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
304
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
305
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
306
- const primeiroResultado = resultadoAvaliadorSintatico[0];
307
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
308
- const primeiroResultadoTipado = primeiroResultado;
309
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
310
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoEscalaCinza[index]]);
311
- // Tradutor
312
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
313
- // O Tradutor deve serializar de acordo e traduzir escala-cinza para grayscale
314
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoEscalaCinza[index]]);
315
- expect(resultadoTradutor).toContain(`grayscale(${valoresAceitos[valIndex]});`);
316
154
  }
317
- }
318
- });
319
- it('Atribuindo Método "escalamento()"', () => {
320
- for (let index = 0; index < metodos_1.MetodosEscalamento.length; index += 1) {
321
- const valoresAceitos = ['0.1', '0', '1', '1.75'];
322
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
323
- // Lexador
324
- const resultadoLexador = lexador.mapear([
325
- "lmht {",
326
- `${metodos_1.MetodosEscalamento[index]}: escalamento(${valoresAceitos[valIndex]});`,
327
- "}"
328
- ]);
329
- // O Lexador não deve encontrar erros
330
- expect(resultadoLexador.erros).toHaveLength(0);
331
- // O valor recebido deve ser mapeado como METODO
332
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
333
- expect.objectContaining({ tipo: foles_1.default.METODO }),
334
- ]));
335
- // O Lexador deve montar um objeto de comprimento 10
155
+ else {
336
156
  expect(resultadoLexador.simbolos).toHaveLength(10);
337
157
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
338
158
  expect.objectContaining({ tipo: foles_1.default.NUMERO }),
339
159
  ]));
340
- // Avaliador Sintático
341
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
342
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
343
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
344
- const primeiroResultado = resultadoAvaliadorSintatico[0];
345
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
346
- const primeiroResultadoTipado = primeiroResultado;
347
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
348
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
349
- // Tradutor
350
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
351
- // O Tradutor deve serializar de acordo e traduzir escalamento para scale
352
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
353
- expect(resultadoTradutor).toContain(`scale(${valoresAceitos[valIndex]});`);
354
160
  }
355
- }
356
- });
357
- it('Atribuindo Método "escalamento()" com múltiplos valores', () => {
358
- for (let index = 0; index < metodos_1.MetodosEscalamento.length; index += 1) {
359
- // Lexador
360
- const resultadoLexador = lexador.mapear([
361
- "lmht {",
362
- `${metodos_1.MetodosEscalamento[index]}: escalamento(1.3, 0.4);`,
363
- "}"
364
- ]);
365
- // O Lexador não deve encontrar erros
366
- expect(resultadoLexador.erros).toHaveLength(0);
367
- // O valor recebido deve ser mapeado como METODO
368
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
369
- expect.objectContaining({ tipo: foles_1.default.METODO }),
370
- ]));
371
- // O Lexador deve montar um objeto de comprimento 12
372
- expect(resultadoLexador.simbolos).toHaveLength(12);
373
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
374
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
375
- ]));
376
161
  // Avaliador Sintático
377
162
  const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
378
163
  // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
164
+ // TODO @Vitor: Alterei um caso para você.
165
+ // Os demais podem seguir a mesma lógica.
379
166
  expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
380
167
  const primeiroResultado = resultadoAvaliadorSintatico[0];
381
168
  expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
382
169
  const primeiroResultadoTipado = primeiroResultado;
383
170
  expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
384
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
385
- // Tradutor
386
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
387
- // O Tradutor deve serializar de acordo e traduzir escalamento para scale
388
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
389
- expect(resultadoTradutor).toContain(`scale(1.3, 0.4);`);
171
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoBorrar[index]]);
172
+ // Resolvedor
173
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
174
+ // O Resolvedor deve resolver de acordo e traduzir borrar para blur
175
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoBorrar[index]]);
176
+ expect(resultadoResolvedor).toContain(`blur(${valoresAceitos[valIndex]});`);
390
177
  }
391
- });
392
- it('Atribuindo Método "escalamento-3d()"', () => {
393
- for (let index = 0; index < metodos_1.MetodosEscalamento.length; index += 1) {
178
+ }
179
+ });
180
+ it('Atribuindo Método "brilho()"', () => {
181
+ for (let index = 0; index < metodos_1.MetodoBrilho.length; index += 1) {
182
+ const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
183
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
394
184
  // Lexador
395
185
  const resultadoLexador = lexador.mapear([
396
186
  "lmht {",
397
- `${metodos_1.MetodosEscalamento[index]}: escalamento-3d(0.5, 1, 1.7);`,
187
+ `${metodos_1.MetodoBrilho[index]}: brilho(${valoresAceitos[valIndex]});`,
398
188
  "}"
399
189
  ]);
400
190
  // O Lexador não deve encontrar erros
@@ -403,11 +193,20 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
403
193
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
404
194
  expect.objectContaining({ tipo: foles_1.default.METODO }),
405
195
  ]));
406
- // O Lexador deve montar um objeto de comprimento 14
407
- expect(resultadoLexador.simbolos).toHaveLength(14);
408
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
409
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
410
- ]));
196
+ // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
197
+ if (valIndex === 0 || valIndex === 1) {
198
+ expect(resultadoLexador.simbolos).toHaveLength(11);
199
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
200
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
201
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
202
+ ]));
203
+ }
204
+ else {
205
+ expect(resultadoLexador.simbolos).toHaveLength(10);
206
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
207
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
208
+ ]));
209
+ }
411
210
  // Avaliador Sintático
412
211
  const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
413
212
  // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
@@ -416,148 +215,193 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
416
215
  expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
417
216
  const primeiroResultadoTipado = primeiroResultado;
418
217
  expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
419
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
420
- // Tradutor
421
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
422
- // O Tradutor deve serializar de acordo e traduzir escalamento-3d para scale3d
423
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
424
- expect(resultadoTradutor).toContain(`scale3d(0.5, 1, 1.7);`);
425
- }
426
- });
427
- it('Atribuindo Método "escalamento-eixo-z()"', () => {
428
- for (let index = 0; index < metodos_1.MetodosEscalamento.length; index += 1) {
429
- const valoresAceitos = ['0.1', '0', '1', '1.75'];
430
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
431
- // Lexador
432
- const resultadoLexador = lexador.mapear([
433
- "lmht {",
434
- `${metodos_1.MetodosEscalamento[index]}: escalamento-eixo-z(${valoresAceitos[valIndex]});`,
435
- "}"
436
- ]);
437
- // O Lexador não deve encontrar erros
438
- expect(resultadoLexador.erros).toHaveLength(0);
439
- // O valor recebido deve ser mapeado como METODO
440
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
441
- expect.objectContaining({ tipo: foles_1.default.METODO }),
442
- ]));
443
- // O Lexador deve montar um objeto de comprimento 10
444
- expect(resultadoLexador.simbolos).toHaveLength(10);
445
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
446
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
447
- ]));
448
- // Avaliador Sintático
449
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
450
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
451
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
452
- const primeiroResultado = resultadoAvaliadorSintatico[0];
453
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
454
- const primeiroResultadoTipado = primeiroResultado;
455
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
456
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
457
- // Tradutor
458
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
459
- // O Tradutor deve serializar de acordo e traduzir escalamento-eixo-z para scaleZ
460
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
461
- expect(resultadoTradutor).toContain(`scaleZ(${valoresAceitos[valIndex]});`);
462
- }
218
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoBrilho[index]]);
219
+ // Resolvedor
220
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
221
+ // O Resolvedor deve resolver de acordo e traduzir brilho para brightness
222
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoBrilho[index]]);
223
+ expect(resultadoResolvedor).toContain(`brightness(${valoresAceitos[valIndex]});`);
463
224
  }
464
- });
465
- it('Atribuindo Método "escalamento-horizontal()"', () => {
466
- for (let index = 0; index < metodos_1.MetodosEscalamento.length; index += 1) {
467
- const valoresAceitos = ['0.1', '0', '1', '1.75'];
468
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
469
- // Lexador
470
- const resultadoLexador = lexador.mapear([
471
- "lmht {",
472
- `${metodos_1.MetodosEscalamento[index]}: escalamento-horizontal(${valoresAceitos[valIndex]});`,
473
- "}"
474
- ]);
475
- // O Lexador não deve encontrar erros
476
- expect(resultadoLexador.erros).toHaveLength(0);
477
- // O valor recebido deve ser mapeado como METODO
478
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
479
- expect.objectContaining({ tipo: foles_1.default.METODO }),
480
- ]));
481
- // O Lexador deve montar um objeto de comprimento 10
482
- expect(resultadoLexador.simbolos).toHaveLength(10);
225
+ }
226
+ });
227
+ it('Atribuindo Método "calcular()"', () => {
228
+ for (let index = 0; index < metodos_1.MetodoCalcular.length; index += 1) {
229
+ // Lexador
230
+ const resultadoLexador = lexador.mapear([
231
+ "lmht {",
232
+ `${metodos_1.MetodoCalcular[index]}: calcular(100px - 80px);`,
233
+ "}"
234
+ ]);
235
+ // O Lexador deve montar um objeto de comprimento 14 sem retornar nenhum erro
236
+ expect(resultadoLexador.simbolos).toHaveLength(14);
237
+ expect(resultadoLexador.erros).toHaveLength(0);
238
+ // O valor recebido deve ser mapeado como METODO
239
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
240
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
241
+ ]));
242
+ // O Lexador também deve encontrar números e quantificadores no mapeamento
243
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
244
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
245
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
246
+ ]));
247
+ // Avaliador Sintático
248
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
249
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
250
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
251
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
252
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
253
+ const primeiroResultadoTipado = primeiroResultado;
254
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
255
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoCalcular[index]]);
256
+ // Resolvedor
257
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
258
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoCalcular[index]]);
259
+ expect(resultadoResolvedor).toContain('calc(100px - 80px);');
260
+ }
261
+ });
262
+ it('Atribuindo Método "conjunto-estilos()" - caso de sucesso', () => {
263
+ const valoresAceitos = ['1', '1, 2', '6, 12, 18'];
264
+ for (let index = 0; index < valoresAceitos.length; index += 1) {
265
+ // Lexador
266
+ const resultadoLexador = lexador.mapear([
267
+ "lmht {",
268
+ `variacao-fonte-alternativa: conjunto-estilos(${valoresAceitos[index]});`,
269
+ "}"
270
+ ]);
271
+ // O Lexador não deve encontrar erros
272
+ expect(resultadoLexador.erros).toHaveLength(0);
273
+ // O valor recebido deve ser mapeado como METODO
274
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
275
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
276
+ ]));
277
+ // O Lexador deve montar um objeto contendo valores numéricos
278
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
279
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
280
+ ]));
281
+ // Avaliador Sintático
282
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
283
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
284
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
285
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
286
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
287
+ const primeiroResultadoTipado = primeiroResultado;
288
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
289
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual('font-variant-alternates');
290
+ // Resolvedor
291
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
292
+ // O Resolvedor deve resolver de acordo e traduzir escalamento-vertical para scaleY
293
+ expect(resultadoResolvedor).toContain('font-variant-alternates');
294
+ expect(resultadoResolvedor).toContain(`styleset(${valoresAceitos[index]});`);
295
+ }
296
+ });
297
+ it('Atribuindo Método "conjunto-estilos()" - caso de falha', () => {
298
+ const valoresAceitos = ['0', '1, 21, 12', '3, 13, 30'];
299
+ for (let index = 0; index < valoresAceitos.length; index += 1) {
300
+ // Lexador
301
+ const resultadoLexador = lexador.mapear([
302
+ "lmht {",
303
+ `variacao-fonte-alternativa: conjunto-estilos(${valoresAceitos[index]});`,
304
+ "}"
305
+ ]);
306
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
307
+ expect(() => {
308
+ resolvedor.resolver(resultadoAvaliadorSintatico);
309
+ }).toThrow('Os valores da função conjunto-estilos() devem estar entre 1 e 20');
310
+ }
311
+ });
312
+ it('Atribuindo Método "contador()"', () => {
313
+ const nomeSimbolo = new lexador_1.Simbolo('IDENTIFICADOR', 'contador', 'any', 1, 2, 3);
314
+ const estiloSimbolo = new lexador_1.Simbolo('IDENTIFICADOR', 'romano-maiusculo', 'any', 1, 2, 3);
315
+ const instanciaContador = new contador_1.Contador(nomeSimbolo, estiloSimbolo);
316
+ const estilosAceitos = [];
317
+ Object.keys(instanciaContador.estilosAceitos).forEach((valor) => estilosAceitos.push(valor));
318
+ const estilosTraduzidos = [];
319
+ Object.values(instanciaContador.estilosAceitos).forEach((valor) => estilosTraduzidos.push(valor));
320
+ for (let index = 0; index < estilosAceitos.length; index += 1) {
321
+ // Lexador
322
+ const resultadoLexador = lexador.mapear([
323
+ "lmht {",
324
+ `conteúdo: contador(contador1, ${estilosAceitos[index]});`,
325
+ "}"
326
+ ]);
327
+ // O Lexador deve montar um objeto de comprimento 12 sem retornar erros
328
+ expect(resultadoLexador.simbolos).toHaveLength(12);
329
+ expect(resultadoLexador.erros).toHaveLength(0);
330
+ // O Lexador deve mapear METODO e IDENTIFICADOR no processo
331
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
332
+ expect.objectContaining({ tipo: foles_1.default.IDENTIFICADOR }),
333
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
334
+ ]));
335
+ // Avaliador Sintático
336
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
337
+ // O Avaliador deve montar um objeto com o devido nome CSS
338
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
339
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
340
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
341
+ const primeiroResultadoTipado = primeiroResultado;
342
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
343
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual('content');
344
+ // Resolvedor
345
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
346
+ expect(resultadoResolvedor).toContain('content');
347
+ expect(resultadoResolvedor).toContain(`counter(contador1, ${estilosTraduzidos[index]});`);
348
+ }
349
+ });
350
+ it('Caso de Falha - Método "contador()" com valor de estilo inválido', () => {
351
+ const nomeSimbolo = new lexador_1.Simbolo('IDENTIFICADOR', 'contador', 'any', 1, 2, 3);
352
+ const estiloSimbolo = new lexador_1.Simbolo('IDENTIFICADOR', 'romano-maiusculo', 'any', 1, 2, 3);
353
+ const instanciaContador = new contador_1.Contador(nomeSimbolo, estiloSimbolo);
354
+ const estilosAceitos = [];
355
+ Object.keys(instanciaContador.estilosAceitos).forEach((valor) => estilosAceitos.push(valor));
356
+ for (let index = 0; index < estilosAceitos.length; index += 1) {
357
+ const estiloErroDigitacao = estilosAceitos[index].replace(/./, "x");
358
+ // Lexador
359
+ const resultadoLexador = lexador.mapear([
360
+ "lmht {",
361
+ `conteúdo: contador(contador1, ${estiloErroDigitacao});`,
362
+ "}"
363
+ ]);
364
+ // O Lexador deve montar um objeto de comprimento 12 sem retornar erros
365
+ expect(resultadoLexador.simbolos).toHaveLength(12);
366
+ expect(resultadoLexador.erros).toHaveLength(0);
367
+ // O Avaliador Sintático também deve retornar o seu objeto sem retornar erros
368
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
369
+ // O Resolvedor deve retornar o erro de estilo inválido uma vez que não consegue traduzir o valor
370
+ expect(() => {
371
+ resolvedor.resolver(resultadoAvaliadorSintatico);
372
+ }).toThrow(`Valor de estilo ${estiloErroDigitacao} inválido para a função contador().`);
373
+ }
374
+ });
375
+ it('Atribuindo Método "contraste()"', () => {
376
+ for (let index = 0; index < metodos_1.MetodoContraste.length; index += 1) {
377
+ const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
378
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
379
+ // Lexador
380
+ const resultadoLexador = lexador.mapear([
381
+ "lmht {",
382
+ `${metodos_1.MetodoContraste[index]}: contraste(${valoresAceitos[valIndex]});`,
383
+ "}"
384
+ ]);
385
+ // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
386
+ if (valIndex === 0 || valIndex === 1) {
387
+ expect(resultadoLexador.simbolos).toHaveLength(11);
483
388
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
484
389
  expect.objectContaining({ tipo: foles_1.default.NUMERO }),
390
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
485
391
  ]));
486
- // Avaliador Sintático
487
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
488
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
489
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
490
- const primeiroResultado = resultadoAvaliadorSintatico[0];
491
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
492
- const primeiroResultadoTipado = primeiroResultado;
493
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
494
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
495
- // Tradutor
496
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
497
- // O Tradutor deve serializar de acordo e traduzir escalamento-horizontal para scaleX
498
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
499
- expect(resultadoTradutor).toContain(`scaleX(${valoresAceitos[valIndex]});`);
500
392
  }
501
- }
502
- });
503
- it('Atribuindo Método "escalamento-vertical()"', () => {
504
- for (let index = 0; index < metodos_1.MetodosEscalamento.length; index += 1) {
505
- const valoresAceitos = ['0.1', '0', '1', '1.75'];
506
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
507
- // Lexador
508
- const resultadoLexador = lexador.mapear([
509
- "lmht {",
510
- `${metodos_1.MetodosEscalamento[index]}: escalamento-vertical(${valoresAceitos[valIndex]});`,
511
- "}"
512
- ]);
513
- // O Lexador não deve encontrar erros
514
- expect(resultadoLexador.erros).toHaveLength(0);
515
- // O valor recebido deve ser mapeado como METODO
516
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
517
- expect.objectContaining({ tipo: foles_1.default.METODO }),
518
- ]));
519
- // O Lexador deve montar um objeto de comprimento 10
393
+ else {
520
394
  expect(resultadoLexador.simbolos).toHaveLength(10);
521
395
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
522
396
  expect.objectContaining({ tipo: foles_1.default.NUMERO }),
523
397
  ]));
524
- // Avaliador Sintático
525
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
526
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
527
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
528
- const primeiroResultado = resultadoAvaliadorSintatico[0];
529
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
530
- const primeiroResultadoTipado = primeiroResultado;
531
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
532
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
533
- // Tradutor
534
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
535
- // O Tradutor deve serializar de acordo e traduzir escalamento-vertical para scaleY
536
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
537
- expect(resultadoTradutor).toContain(`scaleY(${valoresAceitos[valIndex]});`);
538
398
  }
539
- }
540
- });
541
- it('Atribuindo Método "gradiente-linear()" com valor de ângulo deg', () => {
542
- for (let index = 0; index < metodos_1.MetodoGradienteLinear.length; index += 1) {
543
- // Lexador
544
- const resultadoLexador = lexador.mapear([
545
- "lmht {",
546
- `${metodos_1.MetodoGradienteLinear[index]}: gradiente-linear(90deg, verde, amarelo);`,
547
- "}"
548
- ]);
549
- // O Lexador deve montar um objeto de comprimento 15 sem retornar nenhum erro
550
- expect(resultadoLexador.simbolos).toHaveLength(15);
399
+ // O Lexador não deve encontrar erros
551
400
  expect(resultadoLexador.erros).toHaveLength(0);
552
401
  // O valor recebido deve ser mapeado como METODO
553
402
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
554
403
  expect.objectContaining({ tipo: foles_1.default.METODO }),
555
404
  ]));
556
- // O Lexador também deve encontrar número e quantificador no mapeamento
557
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
558
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
559
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
560
- ]));
561
405
  // Avaliador Sintático
562
406
  const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
563
407
  // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
@@ -566,33 +410,113 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
566
410
  expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
567
411
  const primeiroResultadoTipado = primeiroResultado;
568
412
  expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
569
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoGradienteLinear[index]]);
570
- // Tradutor
571
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
572
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoGradienteLinear[index]]);
573
- expect(resultadoTradutor).toContain('linear-gradient(90deg, green, yellow);');
413
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoContraste[index]]);
414
+ // Resolvedor
415
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
416
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoContraste[index]]);
417
+ expect(resultadoResolvedor).toContain(`contrast(${valoresAceitos[valIndex]});`);
574
418
  }
575
- });
576
- it('Atribuindo Método "gradiente-linear()" com valor de ângulo graus', () => {
577
- for (let index = 0; index < metodos_1.MetodoGradienteLinear.length; index += 1) {
419
+ }
420
+ });
421
+ it('Atribuindo Método "curva-cúbica" (cubic-bezier)', () => {
422
+ for (let index = 0; index < metodos_1.MetodoCurvaCubica.length; index += 1) {
423
+ // Lexador
424
+ const resultadoLexador = lexador.mapear([
425
+ "lmht {",
426
+ `${metodos_1.MetodoCurvaCubica[index]}: curva-cúbica(0.42, 0.0, 1.0, 1.0);`,
427
+ "}"
428
+ ]);
429
+ // O Lexador deve montar um objeto de comprimento 16 sem retornar nenhum erro
430
+ expect(resultadoLexador.simbolos).toHaveLength(16);
431
+ expect(resultadoLexador.erros).toHaveLength(0);
432
+ // O valor recebido deve ser mapeado como METODO
433
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
434
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
435
+ ]));
436
+ // O Lexador também deve encontrar números no mapeamento
437
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
438
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
439
+ ]));
440
+ // Avaliador Sintático
441
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
442
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
443
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
444
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
445
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
446
+ const primeiroResultadoTipado = primeiroResultado;
447
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
448
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoCurvaCubica[index]]);
449
+ // // // // Resolvedor
450
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
451
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoCurvaCubica[index]]);
452
+ expect(resultadoResolvedor).toContain('cubic-bezier(0.42, 0, 1, 1);');
453
+ }
454
+ });
455
+ it('Atribuindo Método "encaixar-conteúdo" (fit-content)', () => {
456
+ for (let index = 0; index < metodos_1.MetodoEncaixarConteudo.length; index += 1) {
457
+ // Lexador
458
+ const resultadoLexador = lexador.mapear([
459
+ "lmht {",
460
+ `${metodos_1.MetodoEncaixarConteudo[index]}: encaixar-conteúdo(200px);`,
461
+ "}"
462
+ ]);
463
+ // O Lexador deve montar um objeto de comprimento 11 sem retornar nenhum erro
464
+ expect(resultadoLexador.simbolos).toHaveLength(11);
465
+ expect(resultadoLexador.erros).toHaveLength(0);
466
+ // O valor recebido deve ser mapeado como METODO
467
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
468
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
469
+ ]));
470
+ // O Lexador também deve encontrar número e quantificador no mapeamento
471
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
472
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
473
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
474
+ ]));
475
+ // Avaliador Sintático
476
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
477
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
478
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
479
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
480
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
481
+ const primeiroResultadoTipado = primeiroResultado;
482
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
483
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoEncaixarConteudo[index]]);
484
+ // // // Resolvedor
485
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
486
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoEncaixarConteudo[index]]);
487
+ expect(resultadoResolvedor).toContain('fit-content(200px)');
488
+ }
489
+ });
490
+ it('Atribuindo Método "escala-cinza()"', () => {
491
+ for (let index = 0; index < metodos_1.MetodoEscalaCinza.length; index += 1) {
492
+ const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
493
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
578
494
  // Lexador
579
495
  const resultadoLexador = lexador.mapear([
580
496
  "lmht {",
581
- `${metodos_1.MetodoGradienteLinear[index]}: gradiente-linear(90graus, verde, amarelo);`,
497
+ `${metodos_1.MetodoEscalaCinza[index]}: escala-cinza(${valoresAceitos[valIndex]});`,
582
498
  "}"
583
499
  ]);
584
- // O Lexador deve montar um objeto de comprimento 15 sem retornar nenhum erro
585
- expect(resultadoLexador.simbolos).toHaveLength(15);
500
+ // O Lexador não deve encontrar erros
586
501
  expect(resultadoLexador.erros).toHaveLength(0);
587
502
  // O valor recebido deve ser mapeado como METODO
588
503
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
589
504
  expect.objectContaining({ tipo: foles_1.default.METODO }),
590
505
  ]));
591
- // O Lexador também deve encontrar número e quantificador no mapeamento
592
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
593
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
594
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
595
- ]));
506
+ // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
507
+ if (valIndex === 0 || valIndex === 1) {
508
+ expect(resultadoLexador.simbolos).toHaveLength(11);
509
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
510
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
511
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
512
+ ]));
513
+ }
514
+ else {
515
+ expect(resultadoLexador.simbolos).toHaveLength(10);
516
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
517
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
518
+ ]));
519
+ }
596
520
  // Avaliador Sintático
597
521
  const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
598
522
  // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
@@ -601,123 +525,23 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
601
525
  expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
602
526
  const primeiroResultadoTipado = primeiroResultado;
603
527
  expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
604
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoGradienteLinear[index]]);
605
- // Tradutor
606
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
607
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoGradienteLinear[index]]);
608
- expect(resultadoTradutor).toContain('linear-gradient(90deg, green, yellow);');
609
- }
610
- });
611
- it('Atribuindo Método "gradiente-linear()" com valor de posição', () => {
612
- for (let index = 0; index < metodos_1.MetodoGradienteLinear.length; index += 1) {
613
- const posicoes = ['superior', 'inferior', 'direita', 'esquerda'];
614
- for (let posIndex = 0; posIndex < posicoes.length; posIndex += 1) {
615
- // Lexador
616
- const resultadoLexador = lexador.mapear([
617
- "lmht {",
618
- `${metodos_1.MetodoGradienteLinear[index]}: gradiente-linear(${posicoes[posIndex]}, azul, vermelho);`,
619
- "}"
620
- ]);
621
- // O Lexador deve montar um objeto de comprimento 14 sem retornar nenhum erro
622
- expect(resultadoLexador.simbolos).toHaveLength(14);
623
- expect(resultadoLexador.erros).toHaveLength(0);
624
- // O valor recebido deve ser mapeado como METODO
625
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
626
- expect.objectContaining({ tipo: foles_1.default.METODO }),
627
- ]));
628
- // O Lexador também deve encontrar um qualitativo no mapeamento, referente à posição
629
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
630
- expect.objectContaining({ tipo: foles_1.default.QUALITATIVO }),
631
- ]));
632
- // Avaliador Sintático
633
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
634
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
635
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
636
- const primeiroResultado = resultadoAvaliadorSintatico[0];
637
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
638
- const primeiroResultadoTipado = primeiroResultado;
639
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
640
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoGradienteLinear[index]]);
641
- // Tradutor
642
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
643
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoGradienteLinear[index]]);
644
- switch (posicoes[posIndex]) {
645
- case 'superior':
646
- expect(resultadoTradutor).toContain('linear-gradient(0deg, blue, red);');
647
- break;
648
- case 'direita':
649
- expect(resultadoTradutor).toContain('linear-gradient(90deg, blue, red);');
650
- break;
651
- case 'inferior':
652
- expect(resultadoTradutor).toContain('linear-gradient(180deg, blue, red);');
653
- break;
654
- case 'esquerda':
655
- expect(resultadoTradutor).toContain('linear-gradient(270deg, blue, red);');
656
- break;
657
- default:
658
- break;
659
- }
660
- }
661
- }
662
- });
663
- it('Atribuindo Método "inclinar()"', () => {
664
- for (let index = 0; index < metodos_1.MetodosInclinar.length; index += 1) {
665
- const valoresAceitos = ['90graus', '18deg', '3.142rad', '0', '1'];
666
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
667
- // Lexador
668
- const resultadoLexador = lexador.mapear([
669
- "lmht {",
670
- `${metodos_1.MetodosInclinar[index]}: inclinar(${valoresAceitos[valIndex]});`,
671
- "}"
672
- ]);
673
- // O Lexador não deve encontrar erros
674
- expect(resultadoLexador.erros).toHaveLength(0);
675
- // O valor recebido deve ser mapeado como METODO
676
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
677
- expect.objectContaining({ tipo: foles_1.default.METODO }),
678
- ]));
679
- // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
680
- if (valIndex <= 2) {
681
- expect(resultadoLexador.simbolos).toHaveLength(11);
682
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
683
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
684
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
685
- ]));
686
- }
687
- else {
688
- expect(resultadoLexador.simbolos).toHaveLength(10);
689
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
690
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
691
- ]));
692
- }
693
- // Avaliador Sintático
694
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
695
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
696
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
697
- const primeiroResultado = resultadoAvaliadorSintatico[0];
698
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
699
- const primeiroResultadoTipado = primeiroResultado;
700
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
701
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosInclinar[index]]);
702
- // Tradutor
703
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
704
- // O Tradutor deve serializar de acordo e traduzir inclinar para skew
705
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosInclinar[index]]);
706
- if (valIndex !== 0) {
707
- expect(resultadoTradutor).toContain(`skew(${valoresAceitos[valIndex]});`);
708
- }
709
- else {
710
- expect(resultadoTradutor).toContain(`skew(90deg);`);
711
- }
712
- }
528
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoEscalaCinza[index]]);
529
+ // Resolvedor
530
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
531
+ // O Resolvedor deve resolver de acordo e traduzir escala-cinza para grayscale
532
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoEscalaCinza[index]]);
533
+ expect(resultadoResolvedor).toContain(`grayscale(${valoresAceitos[valIndex]});`);
713
534
  }
714
- });
715
- it('Atribuindo Método "inclinar() com múltiplos valores"', () => {
716
- for (let index = 0; index < metodos_1.MetodosInclinar.length; index += 1) {
535
+ }
536
+ });
537
+ it('Atribuindo Método "escalamento()"', () => {
538
+ for (let index = 0; index < metodos_1.MetodosEscalamento.length; index += 1) {
539
+ const valoresAceitos = ['0.1', '0', '1', '1.75'];
540
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
717
541
  // Lexador
718
542
  const resultadoLexador = lexador.mapear([
719
543
  "lmht {",
720
- `${metodos_1.MetodosInclinar[index]}: inclinar(15graus, 15graus);`,
544
+ `${metodos_1.MetodosEscalamento[index]}: escalamento(${valoresAceitos[valIndex]});`,
721
545
  "}"
722
546
  ]);
723
547
  // O Lexador não deve encontrar erros
@@ -726,11 +550,10 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
726
550
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
727
551
  expect.objectContaining({ tipo: foles_1.default.METODO }),
728
552
  ]));
729
- // O Lexador deve montar um objeto de comprimento 14
730
- expect(resultadoLexador.simbolos).toHaveLength(14);
553
+ // O Lexador deve montar um objeto de comprimento 10
554
+ expect(resultadoLexador.simbolos).toHaveLength(10);
731
555
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
732
556
  expect.objectContaining({ tipo: foles_1.default.NUMERO }),
733
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
734
557
  ]));
735
558
  // Avaliador Sintático
736
559
  const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
@@ -740,184 +563,105 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
740
563
  expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
741
564
  const primeiroResultadoTipado = primeiroResultado;
742
565
  expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
743
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosInclinar[index]]);
744
- // Tradutor
745
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
746
- // O Tradutor deve serializar de acordo e traduzir inclinar para skew
747
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosInclinar[index]]);
748
- expect(resultadoTradutor).toContain(`skew(15deg, 15deg);`);
749
- }
750
- });
751
- it('Atribuindo Método "inclinar-horizontal()"', () => {
752
- for (let index = 0; index < metodos_1.MetodosInclinar.length; index += 1) {
753
- const valoresAceitos = ['180graus', '18deg', '3.142rad', '0', '1'];
754
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
755
- // Lexador
756
- const resultadoLexador = lexador.mapear([
757
- "lmht {",
758
- `${metodos_1.MetodosInclinar[index]}: inclinar-horizontal(${valoresAceitos[valIndex]});`,
759
- "}"
760
- ]);
761
- // O Lexador não deve encontrar erros
762
- expect(resultadoLexador.erros).toHaveLength(0);
763
- // O valor recebido deve ser mapeado como METODO
764
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
765
- expect.objectContaining({ tipo: foles_1.default.METODO }),
766
- ]));
767
- // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
768
- if (valIndex <= 2) {
769
- expect(resultadoLexador.simbolos).toHaveLength(11);
770
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
771
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
772
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
773
- ]));
774
- }
775
- else {
776
- expect(resultadoLexador.simbolos).toHaveLength(10);
777
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
778
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
779
- ]));
780
- }
781
- // Avaliador Sintático
782
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
783
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
784
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
785
- const primeiroResultado = resultadoAvaliadorSintatico[0];
786
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
787
- const primeiroResultadoTipado = primeiroResultado;
788
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
789
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosInclinar[index]]);
790
- // Tradutor
791
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
792
- // O Tradutor deve serializar de acordo e traduzir inclinar-horizontal para skewX
793
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosInclinar[index]]);
794
- if (valIndex !== 0) {
795
- expect(resultadoTradutor).toContain(`skewX(${valoresAceitos[valIndex]});`);
796
- }
797
- else {
798
- expect(resultadoTradutor).toContain(`skewX(180deg);`);
799
- }
800
- }
801
- }
802
- });
803
- it('Atribuindo Método "inclinar-vertical()"', () => {
804
- for (let index = 0; index < metodos_1.MetodosInclinar.length; index += 1) {
805
- const valoresAceitos = ['180graus', '18deg', '3.142rad', '0', '1'];
806
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
807
- // Lexador
808
- const resultadoLexador = lexador.mapear([
809
- "lmht {",
810
- `${metodos_1.MetodosInclinar[index]}: inclinar-vertical(${valoresAceitos[valIndex]});`,
811
- "}"
812
- ]);
813
- // O Lexador não deve encontrar erros
814
- expect(resultadoLexador.erros).toHaveLength(0);
815
- // O valor recebido deve ser mapeado como METODO
816
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
817
- expect.objectContaining({ tipo: foles_1.default.METODO }),
818
- ]));
819
- // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
820
- if (valIndex <= 2) {
821
- expect(resultadoLexador.simbolos).toHaveLength(11);
822
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
823
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
824
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
825
- ]));
826
- }
827
- else {
828
- expect(resultadoLexador.simbolos).toHaveLength(10);
829
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
830
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
831
- ]));
832
- }
833
- // Avaliador Sintático
834
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
835
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
836
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
837
- const primeiroResultado = resultadoAvaliadorSintatico[0];
838
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
839
- const primeiroResultadoTipado = primeiroResultado;
840
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
841
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosInclinar[index]]);
842
- // Tradutor
843
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
844
- // O Tradutor deve serializar de acordo e traduzir inclinar-vertical para skewY
845
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosInclinar[index]]);
846
- if (valIndex !== 0) {
847
- expect(resultadoTradutor).toContain(`skewY(${valoresAceitos[valIndex]});`);
848
- }
849
- else {
850
- expect(resultadoTradutor).toContain(`skewY(180deg);`);
851
- }
852
- }
853
- }
854
- });
855
- it('Atribuindo Método "inverter()"', () => {
856
- for (let index = 0; index < metodos_1.MetodoInverter.length; index += 1) {
857
- const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
858
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
859
- // Lexador
860
- const resultadoLexador = lexador.mapear([
861
- "lmht {",
862
- `${metodos_1.MetodoInverter[index]}: inverter(${valoresAceitos[valIndex]});`,
863
- "}"
864
- ]);
865
- // O Lexador não deve encontrar erros
866
- expect(resultadoLexador.erros).toHaveLength(0);
867
- // O valor recebido deve ser mapeado como METODO
868
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
869
- expect.objectContaining({ tipo: foles_1.default.METODO }),
870
- ]));
871
- // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
872
- if (valIndex === 0 || valIndex === 1) {
873
- expect(resultadoLexador.simbolos).toHaveLength(11);
874
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
875
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
876
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
877
- ]));
878
- }
879
- else {
880
- expect(resultadoLexador.simbolos).toHaveLength(10);
881
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
882
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
883
- ]));
884
- }
885
- // Avaliador Sintático
886
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
887
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
888
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
889
- const primeiroResultado = resultadoAvaliadorSintatico[0];
890
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
891
- const primeiroResultadoTipado = primeiroResultado;
892
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
893
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoInverter[index]]);
894
- // Tradutor
895
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
896
- // O Tradutor deve serializar de acordo e traduzir inverter para invert
897
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoInverter[index]]);
898
- expect(resultadoTradutor).toContain(`invert(${valoresAceitos[valIndex]});`);
899
- }
566
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
567
+ // Resolvedor
568
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
569
+ // O Resolvedor deve resolver de acordo e traduzir escalamento para scale
570
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
571
+ expect(resultadoResolvedor).toContain(`scale(${valoresAceitos[valIndex]});`);
900
572
  }
901
- });
902
- it('Atribuindo Método "limitar" (clamp)', () => {
903
- for (let index = 0; index < metodos_1.MetodoLimitar.length; index += 1) {
573
+ }
574
+ });
575
+ it('Atribuindo Método "escalamento()" com múltiplos valores', () => {
576
+ for (let index = 0; index < metodos_1.MetodosEscalamento.length; index += 1) {
577
+ // Lexador
578
+ const resultadoLexador = lexador.mapear([
579
+ "lmht {",
580
+ `${metodos_1.MetodosEscalamento[index]}: escalamento(1.3, 0.4);`,
581
+ "}"
582
+ ]);
583
+ // O Lexador não deve encontrar erros
584
+ expect(resultadoLexador.erros).toHaveLength(0);
585
+ // O valor recebido deve ser mapeado como METODO
586
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
587
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
588
+ ]));
589
+ // O Lexador deve montar um objeto de comprimento 12
590
+ expect(resultadoLexador.simbolos).toHaveLength(12);
591
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
592
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
593
+ ]));
594
+ // Avaliador Sintático
595
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
596
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
597
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
598
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
599
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
600
+ const primeiroResultadoTipado = primeiroResultado;
601
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
602
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
603
+ // Resolvedor
604
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
605
+ // O Resolvedor deve resolver de acordo e traduzir escalamento para scale
606
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
607
+ expect(resultadoResolvedor).toContain(`scale(1.3, 0.4);`);
608
+ }
609
+ });
610
+ it('Atribuindo Método "escalamento-3d()"', () => {
611
+ for (let index = 0; index < metodos_1.MetodosEscalamento.length; index += 1) {
612
+ // Lexador
613
+ const resultadoLexador = lexador.mapear([
614
+ "lmht {",
615
+ `${metodos_1.MetodosEscalamento[index]}: escalamento-3d(0.5, 1, 1.7);`,
616
+ "}"
617
+ ]);
618
+ // O Lexador não deve encontrar erros
619
+ expect(resultadoLexador.erros).toHaveLength(0);
620
+ // O valor recebido deve ser mapeado como METODO
621
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
622
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
623
+ ]));
624
+ // O Lexador deve montar um objeto de comprimento 14
625
+ expect(resultadoLexador.simbolos).toHaveLength(14);
626
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
627
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
628
+ ]));
629
+ // Avaliador Sintático
630
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
631
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
632
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
633
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
634
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
635
+ const primeiroResultadoTipado = primeiroResultado;
636
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
637
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
638
+ // Resolvedor
639
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
640
+ // O Resolvedor deve resolver de acordo e traduzir escalamento-3d para scale3d
641
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
642
+ expect(resultadoResolvedor).toContain(`scale3d(0.5, 1, 1.7);`);
643
+ }
644
+ });
645
+ it('Atribuindo Método "escalamento-eixo-z()"', () => {
646
+ for (let index = 0; index < metodos_1.MetodosEscalamento.length; index += 1) {
647
+ const valoresAceitos = ['0.1', '0', '1', '1.75'];
648
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
904
649
  // Lexador
905
650
  const resultadoLexador = lexador.mapear([
906
651
  "lmht {",
907
- `${metodos_1.MetodoLimitar[index]}: limitar(10vw, 20em, 100vw);`,
652
+ `${metodos_1.MetodosEscalamento[index]}: escalamento-eixo-z(${valoresAceitos[valIndex]});`,
908
653
  "}"
909
654
  ]);
910
- // O Lexador deve montar um objeto de comprimento 17 sem retornar nenhum erro
911
- expect(resultadoLexador.simbolos).toHaveLength(17);
655
+ // O Lexador não deve encontrar erros
912
656
  expect(resultadoLexador.erros).toHaveLength(0);
913
657
  // O valor recebido deve ser mapeado como METODO
914
658
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
915
659
  expect.objectContaining({ tipo: foles_1.default.METODO }),
916
660
  ]));
917
- // O Lexador também deve encontrar números e quantificadores no mapeamento
661
+ // O Lexador deve montar um objeto de comprimento 10
662
+ expect(resultadoLexador.simbolos).toHaveLength(10);
918
663
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
919
664
  expect.objectContaining({ tipo: foles_1.default.NUMERO }),
920
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
921
665
  ]));
922
666
  // Avaliador Sintático
923
667
  const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
@@ -927,29 +671,33 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
927
671
  expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
928
672
  const primeiroResultadoTipado = primeiroResultado;
929
673
  expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
930
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoLimitar[index]]);
931
- // Tradutor
932
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
933
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoLimitar[index]]);
934
- expect(resultadoTradutor).toContain('clamp(10vw, 20em, 100vw);');
674
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
675
+ // Resolvedor
676
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
677
+ // O Resolvedor deve resolver de acordo e traduzir escalamento-eixo-z para scaleZ
678
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
679
+ expect(resultadoResolvedor).toContain(`scaleZ(${valoresAceitos[valIndex]});`);
935
680
  }
936
- });
937
- it('Atribuindo Método "linear()"', () => {
938
- for (let index = 0; index < metodos_1.MetodoLinear.length; index += 1) {
681
+ }
682
+ });
683
+ it('Atribuindo Método "escalamento-horizontal()"', () => {
684
+ for (let index = 0; index < metodos_1.MetodosEscalamento.length; index += 1) {
685
+ const valoresAceitos = ['0.1', '0', '1', '1.75'];
686
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
939
687
  // Lexador
940
688
  const resultadoLexador = lexador.mapear([
941
689
  "lmht {",
942
- `${metodos_1.MetodoLinear[index]}: linear(0, 0.25, 1);`,
690
+ `${metodos_1.MetodosEscalamento[index]}: escalamento-horizontal(${valoresAceitos[valIndex]});`,
943
691
  "}"
944
692
  ]);
945
- // O Lexador deve montar um objeto de comprimento 14 sem retornar nenhum erro
946
- expect(resultadoLexador.simbolos).toHaveLength(14);
693
+ // O Lexador não deve encontrar erros
947
694
  expect(resultadoLexador.erros).toHaveLength(0);
948
695
  // O valor recebido deve ser mapeado como METODO
949
696
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
950
697
  expect.objectContaining({ tipo: foles_1.default.METODO }),
951
698
  ]));
952
- // O Lexador também deve encontrar números no mapeamento
699
+ // O Lexador deve montar um objeto de comprimento 10
700
+ expect(resultadoLexador.simbolos).toHaveLength(10);
953
701
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
954
702
  expect.objectContaining({ tipo: foles_1.default.NUMERO }),
955
703
  ]));
@@ -961,32 +709,35 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
961
709
  expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
962
710
  const primeiroResultadoTipado = primeiroResultado;
963
711
  expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
964
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoLinear[index]]);
965
- // // // // Tradutor
966
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
967
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoLinear[index]]);
968
- expect(resultadoTradutor).toContain('linear(0, 0.25, 1);');
712
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
713
+ // Resolvedor
714
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
715
+ // O Resolvedor deve resolver de acordo e traduzir escalamento-horizontal para scaleX
716
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
717
+ expect(resultadoResolvedor).toContain(`scaleX(${valoresAceitos[valIndex]});`);
969
718
  }
970
- });
971
- it('Atribuindo Método "minmax()"', () => {
972
- for (let index = 0; index < metodos_1.MetodoMinMax.length; index += 1) {
719
+ }
720
+ });
721
+ it('Atribuindo Método "escalamento-vertical()"', () => {
722
+ for (let index = 0; index < metodos_1.MetodosEscalamento.length; index += 1) {
723
+ const valoresAceitos = ['0.1', '0', '1', '1.75'];
724
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
973
725
  // Lexador
974
726
  const resultadoLexador = lexador.mapear([
975
727
  "lmht {",
976
- `${metodos_1.MetodoMinMax[index]}: minmax(100px, conteúdo-máximo);`,
728
+ `${metodos_1.MetodosEscalamento[index]}: escalamento-vertical(${valoresAceitos[valIndex]});`,
977
729
  "}"
978
730
  ]);
979
- // O Lexador deve montar um objeto de comprimento 13 sem retornar nenhum erro
980
- expect(resultadoLexador.simbolos).toHaveLength(13);
731
+ // O Lexador não deve encontrar erros
981
732
  expect(resultadoLexador.erros).toHaveLength(0);
982
733
  // O valor recebido deve ser mapeado como METODO
983
734
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
984
735
  expect.objectContaining({ tipo: foles_1.default.METODO }),
985
736
  ]));
986
- // O Lexador também deve encontrar número e quantificador no mapeamento
737
+ // O Lexador deve montar um objeto de comprimento 10
738
+ expect(resultadoLexador.simbolos).toHaveLength(10);
987
739
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
988
740
  expect.objectContaining({ tipo: foles_1.default.NUMERO }),
989
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
990
741
  ]));
991
742
  // Avaliador Sintático
992
743
  const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
@@ -996,78 +747,206 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
996
747
  expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
997
748
  const primeiroResultadoTipado = primeiroResultado;
998
749
  expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
999
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoMinMax[index]]);
1000
- // // // // Tradutor
1001
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
1002
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoMinMax[index]]);
1003
- expect(resultadoTradutor).toContain('minmax(100px, max-content);');
1004
- }
1005
- });
1006
- it('Atribuindo Método "opacar()"', () => {
1007
- for (let index = 0; index < metodos_1.MetodoOpacar.length; index += 1) {
1008
- const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
1009
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1010
- // Lexador
1011
- const resultadoLexador = lexador.mapear([
1012
- "lmht {",
1013
- `${metodos_1.MetodoOpacar[index]}: opacar(${valoresAceitos[valIndex]});`,
1014
- "}"
1015
- ]);
1016
- // O Lexador não deve encontrar erros
1017
- expect(resultadoLexador.erros).toHaveLength(0);
1018
- // O valor recebido deve ser mapeado como METODO
1019
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1020
- expect.objectContaining({ tipo: foles_1.default.METODO }),
1021
- ]));
1022
- // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
1023
- if (valIndex === 0 || valIndex === 1) {
1024
- expect(resultadoLexador.simbolos).toHaveLength(11);
1025
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1026
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1027
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1028
- ]));
1029
- }
1030
- else {
1031
- expect(resultadoLexador.simbolos).toHaveLength(10);
1032
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1033
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1034
- ]));
1035
- }
1036
- // Avaliador Sintático
1037
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1038
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1039
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1040
- const primeiroResultado = resultadoAvaliadorSintatico[0];
1041
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1042
- const primeiroResultadoTipado = primeiroResultado;
1043
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1044
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoOpacar[index]]);
1045
- // Tradutor
1046
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
1047
- // O Tradutor deve serializar de acordo e traduzir opacar para opacity
1048
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoOpacar[index]]);
1049
- expect(resultadoTradutor).toContain(`opacity(${valoresAceitos[valIndex]});`);
1050
- }
750
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
751
+ // Resolvedor
752
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
753
+ // O Resolvedor deve resolver de acordo e traduzir escalamento-vertical para scaleY
754
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
755
+ expect(resultadoResolvedor).toContain(`scaleY(${valoresAceitos[valIndex]});`);
1051
756
  }
1052
- });
1053
- it('Atribuindo Método "passos" (steps)', () => {
1054
- for (let index = 0; index < metodos_1.MetodoPassos.length; index += 1) {
757
+ }
758
+ });
759
+ it('Atribuindo Método "espirrar()" - caso de sucesso', () => {
760
+ const valoresAceitos = ['1', '2', '12', '20'];
761
+ for (let index = 0; index < valoresAceitos.length; index += 1) {
762
+ // Lexador
763
+ const resultadoLexador = lexador.mapear([
764
+ "lmht {",
765
+ `variacao-fonte-alternativa: espirrar(${valoresAceitos[index]});`,
766
+ "}"
767
+ ]);
768
+ // O Lexador não deve encontrar erros
769
+ expect(resultadoLexador.erros).toHaveLength(0);
770
+ // O valor recebido deve ser mapeado como METODO
771
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
772
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
773
+ ]));
774
+ // O Lexador deve montar um objeto de comprimento 10, incluindo mapeamento de valores numéricos
775
+ expect(resultadoLexador.simbolos).toHaveLength(10);
776
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
777
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
778
+ ]));
779
+ // Avaliador Sintático
780
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
781
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
782
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
783
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
784
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
785
+ const primeiroResultadoTipado = primeiroResultado;
786
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
787
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual('font-variant-alternates');
788
+ // Resolvedor
789
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
790
+ // O Resolvedor deve resolver de acordo e traduzir espirrar para swash
791
+ expect(resultadoResolvedor).toContain('font-variant-alternates');
792
+ expect(resultadoResolvedor).toContain(`swash(${valoresAceitos[index]});`);
793
+ }
794
+ });
795
+ it('Atribuindo Método "espirrar()" - caso de falha', () => {
796
+ const valoresAceitos = ['0', '100', '300'];
797
+ for (let index = 0; index < valoresAceitos.length; index += 1) {
798
+ // Lexador
799
+ const resultadoLexador = lexador.mapear([
800
+ "lmht {",
801
+ `variacao-fonte-alternativa: espirrar(${valoresAceitos[index]});`,
802
+ "}"
803
+ ]);
804
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
805
+ expect(() => {
806
+ resolvedor.resolver(resultadoAvaliadorSintatico);
807
+ }).toThrow('O valor da função espirrar() deve estar entre 1 e 99');
808
+ }
809
+ });
810
+ it('Atribuindo Método "estilistico()" - caso de sucesso', () => {
811
+ const valoresAceitos = ['1', '2', '12', '20'];
812
+ for (let index = 0; index < valoresAceitos.length; index += 1) {
813
+ // Lexador
814
+ const resultadoLexador = lexador.mapear([
815
+ "lmht {",
816
+ `variacao-fonte-alternativa: estilistico(${valoresAceitos[index]});`,
817
+ "}"
818
+ ]);
819
+ // O Lexador não deve encontrar erros
820
+ expect(resultadoLexador.erros).toHaveLength(0);
821
+ // O valor recebido deve ser mapeado como METODO
822
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
823
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
824
+ ]));
825
+ // O Lexador deve montar um objeto de comprimento 10, incluindo mapeamento de valores numéricos
826
+ expect(resultadoLexador.simbolos).toHaveLength(10);
827
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
828
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
829
+ ]));
830
+ // Avaliador Sintático
831
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
832
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
833
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
834
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
835
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
836
+ const primeiroResultadoTipado = primeiroResultado;
837
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
838
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual('font-variant-alternates');
839
+ // Resolvedor
840
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
841
+ // O Resolvedor deve resolver de acordo e traduzir estilístico para stylistic
842
+ expect(resultadoResolvedor).toContain('font-variant-alternates');
843
+ expect(resultadoResolvedor).toContain(`stylistic(${valoresAceitos[index]});`);
844
+ }
845
+ });
846
+ it('Atribuindo Método "estilistico()" - caso de falha', () => {
847
+ const valoresAceitos = ['0', '21', '30'];
848
+ for (let index = 0; index < valoresAceitos.length; index += 1) {
849
+ // Lexador
850
+ const resultadoLexador = lexador.mapear([
851
+ "lmht {",
852
+ `variacao-fonte-alternativa: estilistico(${valoresAceitos[index]});`,
853
+ "}"
854
+ ]);
855
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
856
+ expect(() => {
857
+ resolvedor.resolver(resultadoAvaliadorSintatico);
858
+ }).toThrow('O valor da função estilistico() deve estar entre 1 e 20');
859
+ }
860
+ });
861
+ it('Atribuindo Método "gradiente-linear()" com valor de ângulo deg', () => {
862
+ for (let index = 0; index < metodos_1.MetodoGradienteLinear.length; index += 1) {
863
+ // Lexador
864
+ const resultadoLexador = lexador.mapear([
865
+ "lmht {",
866
+ `${metodos_1.MetodoGradienteLinear[index]}: gradiente-linear(90deg, verde, amarelo);`,
867
+ "}"
868
+ ]);
869
+ // O Lexador deve montar um objeto de comprimento 15 sem retornar nenhum erro
870
+ expect(resultadoLexador.simbolos).toHaveLength(15);
871
+ expect(resultadoLexador.erros).toHaveLength(0);
872
+ // O valor recebido deve ser mapeado como METODO
873
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
874
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
875
+ ]));
876
+ // O Lexador também deve encontrar número e quantificador no mapeamento
877
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
878
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
879
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
880
+ ]));
881
+ // Avaliador Sintático
882
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
883
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
884
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
885
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
886
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
887
+ const primeiroResultadoTipado = primeiroResultado;
888
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
889
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoGradienteLinear[index]]);
890
+ // Resolvedor
891
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
892
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoGradienteLinear[index]]);
893
+ expect(resultadoResolvedor).toContain('linear-gradient(90deg, green, yellow);');
894
+ }
895
+ });
896
+ it('Atribuindo Método "gradiente-linear()" com valor de ângulo graus', () => {
897
+ for (let index = 0; index < metodos_1.MetodoGradienteLinear.length; index += 1) {
898
+ // Lexador
899
+ const resultadoLexador = lexador.mapear([
900
+ "lmht {",
901
+ `${metodos_1.MetodoGradienteLinear[index]}: gradiente-linear(90graus, verde, amarelo);`,
902
+ "}"
903
+ ]);
904
+ // O Lexador deve montar um objeto de comprimento 15 sem retornar nenhum erro
905
+ expect(resultadoLexador.simbolos).toHaveLength(15);
906
+ expect(resultadoLexador.erros).toHaveLength(0);
907
+ // O valor recebido deve ser mapeado como METODO
908
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
909
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
910
+ ]));
911
+ // O Lexador também deve encontrar número e quantificador no mapeamento
912
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
913
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
914
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
915
+ ]));
916
+ // Avaliador Sintático
917
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
918
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
919
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
920
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
921
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
922
+ const primeiroResultadoTipado = primeiroResultado;
923
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
924
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoGradienteLinear[index]]);
925
+ // Resolvedor
926
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
927
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoGradienteLinear[index]]);
928
+ expect(resultadoResolvedor).toContain('linear-gradient(90deg, green, yellow);');
929
+ }
930
+ });
931
+ it('Atribuindo Método "gradiente-linear()" com valor de posição', () => {
932
+ for (let index = 0; index < metodos_1.MetodoGradienteLinear.length; index += 1) {
933
+ const posicoes = ['superior', 'inferior', 'direita', 'esquerda'];
934
+ for (let posIndex = 0; posIndex < posicoes.length; posIndex += 1) {
1055
935
  // Lexador
1056
936
  const resultadoLexador = lexador.mapear([
1057
937
  "lmht {",
1058
- `${metodos_1.MetodoPassos[index]}: passos(2, salto-inicial);`,
938
+ `${metodos_1.MetodoGradienteLinear[index]}: gradiente-linear(${posicoes[posIndex]}, azul, vermelho);`,
1059
939
  "}"
1060
940
  ]);
1061
- // O Lexador deve montar um objeto de comprimento 12 sem retornar nenhum erro
1062
- expect(resultadoLexador.simbolos).toHaveLength(12);
941
+ // O Lexador deve montar um objeto de comprimento 14 sem retornar nenhum erro
942
+ expect(resultadoLexador.simbolos).toHaveLength(14);
1063
943
  expect(resultadoLexador.erros).toHaveLength(0);
1064
944
  // O valor recebido deve ser mapeado como METODO
1065
945
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1066
946
  expect.objectContaining({ tipo: foles_1.default.METODO }),
1067
947
  ]));
1068
- // O Lexador também deve encontrar número e qualitativo no mapeamento
948
+ // O Lexador também deve encontrar um qualitativo no mapeamento, referente à posição
1069
949
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1070
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1071
950
  expect.objectContaining({ tipo: foles_1.default.QUALITATIVO }),
1072
951
  ]));
1073
952
  // Avaliador Sintático
@@ -1078,188 +957,125 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
1078
957
  expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1079
958
  const primeiroResultadoTipado = primeiroResultado;
1080
959
  expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1081
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoPassos[index]]);
1082
- // // // // Tradutor
1083
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
1084
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoPassos[index]]);
1085
- expect(resultadoTradutor).toContain('steps(2, jump-start);');
1086
- }
1087
- });
1088
- it('Atribuindo Método "perspectivar()"', () => {
1089
- for (let index = 0; index < metodos_1.MetodoPerspectivar.length; index += 1) {
1090
- const valoresAceitos = ['800px', '6.5cm', '0.1', '0', '1', '1.75', 'nenhuma'];
1091
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1092
- // Lexador
1093
- const resultadoLexador = lexador.mapear([
1094
- "lmht {",
1095
- `${metodos_1.MetodoPerspectivar[index]}: perspectivar(${valoresAceitos[valIndex]});`,
1096
- "}"
1097
- ]);
1098
- // O Lexador não deve encontrar erros
1099
- expect(resultadoLexador.erros).toHaveLength(0);
1100
- // O valor recebido deve ser mapeado como METODO
1101
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1102
- expect.objectContaining({ tipo: foles_1.default.METODO }),
1103
- ]));
1104
- // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
1105
- if (valIndex === 0 || valIndex === 1) {
1106
- expect(resultadoLexador.simbolos).toHaveLength(11);
1107
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1108
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1109
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1110
- ]));
1111
- }
1112
- else if (valIndex !== 6) {
1113
- expect(resultadoLexador.simbolos).toHaveLength(10);
1114
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1115
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1116
- ]));
1117
- }
1118
- else {
1119
- expect(resultadoLexador.simbolos).toHaveLength(10);
1120
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1121
- expect.objectContaining({ tipo: foles_1.default.IDENTIFICADOR }),
1122
- ]));
1123
- }
1124
- // Avaliador Sintático
1125
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1126
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1127
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1128
- const primeiroResultado = resultadoAvaliadorSintatico[0];
1129
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1130
- const primeiroResultadoTipado = primeiroResultado;
1131
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1132
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoPerspectivar[index]]);
1133
- // Tradutor
1134
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
1135
- // O Tradutor deve serializar de acordo e traduzir perspectivar para perspective
1136
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoPerspectivar[index]]);
1137
- expect(resultadoTradutor).toContain(`perspective(${valoresAceitos[valIndex]});`);
960
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoGradienteLinear[index]]);
961
+ // Resolvedor
962
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
963
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoGradienteLinear[index]]);
964
+ switch (posicoes[posIndex]) {
965
+ case 'superior':
966
+ expect(resultadoResolvedor).toContain('linear-gradient(0deg, blue, red);');
967
+ break;
968
+ case 'direita':
969
+ expect(resultadoResolvedor).toContain('linear-gradient(90deg, blue, red);');
970
+ break;
971
+ case 'inferior':
972
+ expect(resultadoResolvedor).toContain('linear-gradient(180deg, blue, red);');
973
+ break;
974
+ case 'esquerda':
975
+ expect(resultadoResolvedor).toContain('linear-gradient(270deg, blue, red);');
976
+ break;
977
+ default:
978
+ break;
1138
979
  }
1139
980
  }
1140
- });
1141
- it('Atribuindo Método "projetar-sombra()" com valores de comprimento somente', () => {
1142
- for (let index = 0; index < metodos_1.MetodoProjetarSombra.length; index += 1) {
1143
- const comprimentos = ['15px 15px', '15px 15px 15px', '0.5rem 0.5rem', '0.5rem 0.5rem 1rem'];
1144
- for (let posIndex = 0; posIndex < comprimentos.length; posIndex += 1) {
1145
- // Lexador
1146
- const resultadoLexador = lexador.mapear([
1147
- "lmht {",
1148
- `${metodos_1.MetodoProjetarSombra[index]}: projetar-sombra(${comprimentos[posIndex]});`,
1149
- "}"
1150
- ]);
1151
- // O Lexador deve montar um objeto de acordo, sem retornar nenhum erro
1152
- expect(resultadoLexador.erros).toHaveLength(0);
1153
- // O valor recebido deve ser mapeado como METODO
1154
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1155
- expect.objectContaining({ tipo: foles_1.default.METODO }),
1156
- ]));
1157
- // O Lexador também deve sempre encontrar valores e quantificadores na operação
981
+ }
982
+ });
983
+ it('Atribuindo Método "inclinar()"', () => {
984
+ for (let index = 0; index < metodos_1.MetodosInclinar.length; index += 1) {
985
+ const valoresAceitos = ['90graus', '18deg', '3.142rad', '0', '1'];
986
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
987
+ // Lexador
988
+ const resultadoLexador = lexador.mapear([
989
+ "lmht {",
990
+ `${metodos_1.MetodosInclinar[index]}: inclinar(${valoresAceitos[valIndex]});`,
991
+ "}"
992
+ ]);
993
+ // O Lexador não deve encontrar erros
994
+ expect(resultadoLexador.erros).toHaveLength(0);
995
+ // O valor recebido deve ser mapeado como METODO
996
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
997
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
998
+ ]));
999
+ // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
1000
+ if (valIndex <= 2) {
1001
+ expect(resultadoLexador.simbolos).toHaveLength(11);
1158
1002
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1159
1003
  expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1160
1004
  expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1161
1005
  ]));
1162
- // Avaliador Sintático
1163
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1164
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1165
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1166
- const primeiroResultado = resultadoAvaliadorSintatico[0];
1167
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1168
- const primeiroResultadoTipado = primeiroResultado;
1169
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1170
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoProjetarSombra[index]]);
1171
- // Tradutor
1172
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
1173
- // O Tradutor deve serializar de acordo e traduzir projetar-sombra para drop-shadow
1174
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoProjetarSombra[index]]);
1175
- expect(resultadoTradutor).toContain(`drop-shadow(${comprimentos[posIndex]});`);
1176
1006
  }
1177
- }
1178
- });
1179
- it('Atribuindo Método "projetar-sombra()" com valores de cor e de comprimento', () => {
1180
- for (let index = 0; index < metodos_1.MetodoProjetarSombra.length; index += 1) {
1181
- const comprimentos = ['15px 15px vermelho', '15px 15px 15px vermelho', 'vermelho 0.5rem 0.5rem', 'vermelho 0.5rem 0.5rem 1rem'];
1182
- for (let posIndex = 0; posIndex < comprimentos.length; posIndex += 1) {
1183
- // Lexador
1184
- const resultadoLexador = lexador.mapear([
1185
- "lmht {",
1186
- `${metodos_1.MetodoProjetarSombra[index]}: projetar-sombra(${comprimentos[posIndex]});`,
1187
- "}"
1188
- ]);
1189
- // O Lexador deve montar um objeto de acordo, sem retornar nenhum erro
1190
- expect(resultadoLexador.erros).toHaveLength(0);
1191
- // O valor recebido deve ser mapeado como METODO
1192
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1193
- expect.objectContaining({ tipo: foles_1.default.METODO }),
1194
- ]));
1195
- // O Lexador também deve sempre encontrar valores e quantificadores na operação
1007
+ else {
1008
+ expect(resultadoLexador.simbolos).toHaveLength(10);
1196
1009
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1197
1010
  expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1198
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1199
1011
  ]));
1200
- // Avaliador Sintático
1201
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1202
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1203
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1204
- const primeiroResultado = resultadoAvaliadorSintatico[0];
1205
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1206
- const primeiroResultadoTipado = primeiroResultado;
1207
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1208
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoProjetarSombra[index]]);
1209
- // Tradutor
1210
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
1211
- // O Tradutor deve serializar de acordo e traduzir vermelho para red
1212
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoProjetarSombra[index]]);
1213
- expect(resultadoTradutor).toContain('red');
1214
1012
  }
1215
- }
1216
- });
1217
- it('Atribuindo Método "raio()" com valores de posição e número/quantificador', () => {
1218
- for (let index = 0; index < metodos_1.MetodoRaio.length; index += 1) {
1219
- const valoresAceitos = ['lado-mais-próximo', 'lado-mais-proximo', 'canto-mais-próximo', 'canto-mais-proximo', 'lado-mais-distante', 'canto-mais-distante', 'lados', 'conter'];
1220
- const traducaoValoresAceitos = ['closest-side', 'closest-side', 'closest-corner', 'closest-corner', 'farthest-side', 'farthest-corner', 'sides', 'contain'];
1221
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1222
- // Lexador
1223
- const resultadoLexador = lexador.mapear([
1224
- "lmht {",
1225
- `${metodos_1.MetodoRaio[index]}: raio(${valoresAceitos[valIndex]} 200graus);`,
1226
- "}"
1227
- ]);
1228
- // O Lexador não deve encontrar erros
1229
- expect(resultadoLexador.erros).toHaveLength(0);
1230
- // O valor recebido deve ser mapeado como METODO
1231
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1232
- expect.objectContaining({ tipo: foles_1.default.METODO }),
1233
- ]));
1234
- // O Lexador deve montar um objeto de comprimento 12
1235
- expect(resultadoLexador.simbolos).toHaveLength(12);
1236
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1237
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1238
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1239
- ]));
1240
- // Avaliador Sintático
1241
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1242
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1243
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1244
- const primeiroResultado = resultadoAvaliadorSintatico[0];
1245
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1246
- const primeiroResultadoTipado = primeiroResultado;
1247
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1248
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoRaio[index]]);
1249
- // Tradutor
1250
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
1251
- // O Tradutor deve serializar de acordo e traduzir raio para ray
1252
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoRaio[index]]);
1253
- expect(resultadoTradutor).toContain(`ray(${traducaoValoresAceitos[valIndex]} 200deg);`);
1013
+ // Avaliador Sintático
1014
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1015
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1016
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1017
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
1018
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1019
+ const primeiroResultadoTipado = primeiroResultado;
1020
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1021
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosInclinar[index]]);
1022
+ // Resolvedor
1023
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
1024
+ // O Resolvedor deve resolver de acordo e traduzir inclinar para skew
1025
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosInclinar[index]]);
1026
+ if (valIndex !== 0) {
1027
+ expect(resultadoResolvedor).toContain(`skew(${valoresAceitos[valIndex]});`);
1028
+ }
1029
+ else {
1030
+ expect(resultadoResolvedor).toContain(`skew(90deg);`);
1254
1031
  }
1255
1032
  }
1256
- });
1257
- it('Atribuindo Método "raio()" com somente número/quantificador', () => {
1258
- for (let index = 0; index < metodos_1.MetodoRaio.length; index += 1) {
1033
+ }
1034
+ });
1035
+ it('Atribuindo Método "inclinar() com múltiplos valores"', () => {
1036
+ for (let index = 0; index < metodos_1.MetodosInclinar.length; index += 1) {
1037
+ // Lexador
1038
+ const resultadoLexador = lexador.mapear([
1039
+ "lmht {",
1040
+ `${metodos_1.MetodosInclinar[index]}: inclinar(15graus, 15graus);`,
1041
+ "}"
1042
+ ]);
1043
+ // O Lexador não deve encontrar erros
1044
+ expect(resultadoLexador.erros).toHaveLength(0);
1045
+ // O valor recebido deve ser mapeado como METODO
1046
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1047
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
1048
+ ]));
1049
+ // O Lexador deve montar um objeto de comprimento 14
1050
+ expect(resultadoLexador.simbolos).toHaveLength(14);
1051
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1052
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1053
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1054
+ ]));
1055
+ // Avaliador Sintático
1056
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1057
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1058
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1059
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
1060
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1061
+ const primeiroResultadoTipado = primeiroResultado;
1062
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1063
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosInclinar[index]]);
1064
+ // Resolvedor
1065
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
1066
+ // O Resolvedor deve resolver de acordo e traduzir inclinar para skew
1067
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosInclinar[index]]);
1068
+ expect(resultadoResolvedor).toContain(`skew(15deg, 15deg);`);
1069
+ }
1070
+ });
1071
+ it('Atribuindo Método "inclinar-horizontal()"', () => {
1072
+ for (let index = 0; index < metodos_1.MetodosInclinar.length; index += 1) {
1073
+ const valoresAceitos = ['180graus', '18deg', '3.142rad', '0', '1'];
1074
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1259
1075
  // Lexador
1260
1076
  const resultadoLexador = lexador.mapear([
1261
1077
  "lmht {",
1262
- `${metodos_1.MetodoRaio[index]}: raio(200graus);`,
1078
+ `${metodos_1.MetodosInclinar[index]}: inclinar-horizontal(${valoresAceitos[valIndex]});`,
1263
1079
  "}"
1264
1080
  ]);
1265
1081
  // O Lexador não deve encontrar erros
@@ -1268,12 +1084,20 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
1268
1084
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1269
1085
  expect.objectContaining({ tipo: foles_1.default.METODO }),
1270
1086
  ]));
1271
- // O Lexador deve montar um objeto de comprimento 11
1272
- expect(resultadoLexador.simbolos).toHaveLength(11);
1273
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1274
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1275
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1276
- ]));
1087
+ // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
1088
+ if (valIndex <= 2) {
1089
+ expect(resultadoLexador.simbolos).toHaveLength(11);
1090
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1091
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1092
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1093
+ ]));
1094
+ }
1095
+ else {
1096
+ expect(resultadoLexador.simbolos).toHaveLength(10);
1097
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1098
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1099
+ ]));
1100
+ }
1277
1101
  // Avaliador Sintático
1278
1102
  const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1279
1103
  // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
@@ -1282,436 +1106,474 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
1282
1106
  expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1283
1107
  const primeiroResultadoTipado = primeiroResultado;
1284
1108
  expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1285
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoRaio[index]]);
1286
- // Tradutor
1287
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
1288
- // O Tradutor deve serializar de acordo e traduzir raio para ray
1289
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoRaio[index]]);
1290
- expect(resultadoTradutor).toContain(`ray(200deg);`);
1291
- }
1292
- });
1293
- it('Atribuindo Método "rotacionar()"', () => {
1294
- for (let index = 0; index < metodos_1.MetodosRotacionar.length; index += 1) {
1295
- const valoresAceitos = ['45graus', '45deg', '3.142rad', '0.1', '0', '1', '1.75'];
1296
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1297
- // Lexador
1298
- const resultadoLexador = lexador.mapear([
1299
- "lmht {",
1300
- `${metodos_1.MetodosRotacionar[index]}: rotacionar(${valoresAceitos[valIndex]});`,
1301
- "}"
1302
- ]);
1303
- // O Lexador não deve encontrar erros
1304
- expect(resultadoLexador.erros).toHaveLength(0);
1305
- // O valor recebido deve ser mapeado como METODO
1306
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1307
- expect.objectContaining({ tipo: foles_1.default.METODO }),
1308
- ]));
1309
- // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
1310
- if (valIndex <= 2) {
1311
- expect(resultadoLexador.simbolos).toHaveLength(11);
1312
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1313
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1314
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1315
- ]));
1316
- }
1317
- else {
1318
- expect(resultadoLexador.simbolos).toHaveLength(10);
1319
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1320
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1321
- ]));
1322
- }
1323
- // Avaliador Sintático
1324
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1325
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1326
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1327
- const primeiroResultado = resultadoAvaliadorSintatico[0];
1328
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1329
- const primeiroResultadoTipado = primeiroResultado;
1330
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1331
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
1332
- // Tradutor
1333
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
1334
- // O Tradutor deve serializar de acordo e traduzir rotacionar para rotate
1335
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
1336
- if (valIndex !== 0) {
1337
- expect(resultadoTradutor).toContain(`rotate(${valoresAceitos[valIndex]});`);
1338
- }
1339
- else {
1340
- expect(resultadoTradutor).toContain(`rotate(45deg);`);
1341
- }
1109
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosInclinar[index]]);
1110
+ // Resolvedor
1111
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
1112
+ // O Resolvedor deve resolver de acordo e traduzir inclinar-horizontal para skewX
1113
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosInclinar[index]]);
1114
+ if (valIndex !== 0) {
1115
+ expect(resultadoResolvedor).toContain(`skewX(${valoresAceitos[valIndex]});`);
1116
+ }
1117
+ else {
1118
+ expect(resultadoResolvedor).toContain(`skewX(180deg);`);
1342
1119
  }
1343
1120
  }
1344
- });
1345
- it('Atribuindo Método "rotacionar-eixo-z()"', () => {
1346
- for (let index = 0; index < metodos_1.MetodosRotacionar.length; index += 1) {
1347
- const valoresAceitos = ['45graus', '45deg', '3.142rad', '0.1', '0', '1', '1.75'];
1348
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1349
- // Lexador
1350
- const resultadoLexador = lexador.mapear([
1351
- "lmht {",
1352
- `${metodos_1.MetodosRotacionar[index]}: rotacionar-eixo-z(${valoresAceitos[valIndex]});`,
1353
- "}"
1354
- ]);
1355
- // O Lexador não deve encontrar erros
1356
- expect(resultadoLexador.erros).toHaveLength(0);
1357
- // O valor recebido deve ser mapeado como METODO
1358
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1359
- expect.objectContaining({ tipo: foles_1.default.METODO }),
1121
+ }
1122
+ });
1123
+ it('Atribuindo Método "inclinar-vertical()"', () => {
1124
+ for (let index = 0; index < metodos_1.MetodosInclinar.length; index += 1) {
1125
+ const valoresAceitos = ['180graus', '18deg', '3.142rad', '0', '1'];
1126
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1127
+ // Lexador
1128
+ const resultadoLexador = lexador.mapear([
1129
+ "lmht {",
1130
+ `${metodos_1.MetodosInclinar[index]}: inclinar-vertical(${valoresAceitos[valIndex]});`,
1131
+ "}"
1132
+ ]);
1133
+ // O Lexador não deve encontrar erros
1134
+ expect(resultadoLexador.erros).toHaveLength(0);
1135
+ // O valor recebido deve ser mapeado como METODO
1136
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1137
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
1138
+ ]));
1139
+ // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
1140
+ if (valIndex <= 2) {
1141
+ expect(resultadoLexador.simbolos).toHaveLength(11);
1142
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1143
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1144
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1360
1145
  ]));
1361
- // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
1362
- if (valIndex <= 2) {
1363
- expect(resultadoLexador.simbolos).toHaveLength(11);
1364
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1365
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1366
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1367
- ]));
1368
- }
1369
- else {
1370
- expect(resultadoLexador.simbolos).toHaveLength(10);
1371
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1372
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1373
- ]));
1374
- }
1375
- // Avaliador Sintático
1376
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1377
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1378
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1379
- const primeiroResultado = resultadoAvaliadorSintatico[0];
1380
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1381
- const primeiroResultadoTipado = primeiroResultado;
1382
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1383
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
1384
- // Tradutor
1385
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
1386
- // O Tradutor deve serializar de acordo e traduzir rotacionar-eixo-z para rotateZ
1387
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
1388
- if (valIndex !== 0) {
1389
- expect(resultadoTradutor).toContain(`rotateZ(${valoresAceitos[valIndex]});`);
1390
- }
1391
- else {
1392
- expect(resultadoTradutor).toContain(`rotateZ(45deg);`);
1393
- }
1394
1146
  }
1395
- }
1396
- });
1397
- it('Atribuindo Método "rotacionar-horizontal()"', () => {
1398
- for (let index = 0; index < metodos_1.MetodosRotacionar.length; index += 1) {
1399
- const valoresAceitos = ['45graus', '45deg', '3.142rad', '0.1', '0', '1', '1.75'];
1400
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1401
- // Lexador
1402
- const resultadoLexador = lexador.mapear([
1403
- "lmht {",
1404
- `${metodos_1.MetodosRotacionar[index]}: rotacionar-horizontal(${valoresAceitos[valIndex]});`,
1405
- "}"
1406
- ]);
1407
- // O Lexador não deve encontrar erros
1408
- expect(resultadoLexador.erros).toHaveLength(0);
1409
- // O valor recebido deve ser mapeado como METODO
1147
+ else {
1148
+ expect(resultadoLexador.simbolos).toHaveLength(10);
1410
1149
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1411
- expect.objectContaining({ tipo: foles_1.default.METODO }),
1150
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1412
1151
  ]));
1413
- // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
1414
- if (valIndex <= 2) {
1415
- expect(resultadoLexador.simbolos).toHaveLength(11);
1416
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1417
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1418
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1419
- ]));
1420
- }
1421
- else {
1422
- expect(resultadoLexador.simbolos).toHaveLength(10);
1423
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1424
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1425
- ]));
1426
- }
1427
- // Avaliador Sintático
1428
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1429
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1430
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1431
- const primeiroResultado = resultadoAvaliadorSintatico[0];
1432
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1433
- const primeiroResultadoTipado = primeiroResultado;
1434
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1435
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
1436
- // Tradutor
1437
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
1438
- // O Tradutor deve serializar de acordo e traduzir rotacionar-horizontal para rotateX
1439
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
1440
- if (valIndex !== 0) {
1441
- expect(resultadoTradutor).toContain(`rotateX(${valoresAceitos[valIndex]});`);
1442
- }
1443
- else {
1444
- expect(resultadoTradutor).toContain(`rotateX(45deg);`);
1445
- }
1152
+ }
1153
+ // Avaliador Sintático
1154
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1155
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1156
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1157
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
1158
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1159
+ const primeiroResultadoTipado = primeiroResultado;
1160
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1161
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosInclinar[index]]);
1162
+ // Resolvedor
1163
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
1164
+ // O Resolvedor deve resolver de acordo e traduzir inclinar-vertical para skewY
1165
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosInclinar[index]]);
1166
+ if (valIndex !== 0) {
1167
+ expect(resultadoResolvedor).toContain(`skewY(${valoresAceitos[valIndex]});`);
1168
+ }
1169
+ else {
1170
+ expect(resultadoResolvedor).toContain(`skewY(180deg);`);
1446
1171
  }
1447
1172
  }
1448
- });
1449
- it('Atribuindo Método "rotacionar-matiz()"', () => {
1450
- for (let index = 0; index < metodos_1.MetodoRotacionarMatiz.length; index += 1) {
1451
- const valoresAceitos = ['90graus', '100px', '100%', '0.1', '0', '1', '1.75'];
1452
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1453
- // Lexador
1454
- const resultadoLexador = lexador.mapear([
1455
- "lmht {",
1456
- `${metodos_1.MetodoRotacionarMatiz[index]}: rotacionar-matiz(${valoresAceitos[valIndex]});`,
1457
- "}"
1458
- ]);
1459
- // O Lexador não deve encontrar erros
1460
- expect(resultadoLexador.erros).toHaveLength(0);
1461
- // O valor recebido deve ser mapeado como METODO
1173
+ }
1174
+ });
1175
+ it('Atribuindo Método "inverter()"', () => {
1176
+ for (let index = 0; index < metodos_1.MetodoInverter.length; index += 1) {
1177
+ const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
1178
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1179
+ // Lexador
1180
+ const resultadoLexador = lexador.mapear([
1181
+ "lmht {",
1182
+ `${metodos_1.MetodoInverter[index]}: inverter(${valoresAceitos[valIndex]});`,
1183
+ "}"
1184
+ ]);
1185
+ // O Lexador não deve encontrar erros
1186
+ expect(resultadoLexador.erros).toHaveLength(0);
1187
+ // O valor recebido deve ser mapeado como METODO
1188
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1189
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
1190
+ ]));
1191
+ // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
1192
+ if (valIndex === 0 || valIndex === 1) {
1193
+ expect(resultadoLexador.simbolos).toHaveLength(11);
1462
1194
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1463
- expect.objectContaining({ tipo: foles_1.default.METODO }),
1195
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1196
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1464
1197
  ]));
1465
- // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
1466
- if (valIndex <= 2) {
1467
- expect(resultadoLexador.simbolos).toHaveLength(11);
1468
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1469
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1470
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1471
- ]));
1472
- }
1473
- else {
1474
- expect(resultadoLexador.simbolos).toHaveLength(10);
1475
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1476
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1477
- ]));
1478
- }
1479
- // Avaliador Sintático
1480
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1481
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1482
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1483
- const primeiroResultado = resultadoAvaliadorSintatico[0];
1484
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1485
- const primeiroResultadoTipado = primeiroResultado;
1486
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1487
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoRotacionarMatiz[index]]);
1488
- // Tradutor
1489
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
1490
- // O Tradutor deve serializar de acordo e traduzir rotacionar-matiz para hue-rotate
1491
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoRotacionarMatiz[index]]);
1492
- if (valIndex !== 0) {
1493
- expect(resultadoTradutor).toContain(`hue-rotate(${valoresAceitos[valIndex]});`);
1494
- }
1495
- else {
1496
- expect(resultadoTradutor).toContain(`hue-rotate(90deg);`);
1497
- }
1498
1198
  }
1499
- }
1500
- });
1501
- it('Atribuindo Método "rotacionar-vertical()"', () => {
1502
- for (let index = 0; index < metodos_1.MetodosRotacionar.length; index += 1) {
1503
- const valoresAceitos = ['45graus', '45deg', '3.142rad', '0.1', '0', '1', '1.75'];
1504
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1505
- // Lexador
1506
- const resultadoLexador = lexador.mapear([
1507
- "lmht {",
1508
- `${metodos_1.MetodosRotacionar[index]}: rotacionar-vertical(${valoresAceitos[valIndex]});`,
1509
- "}"
1510
- ]);
1511
- // O Lexador não deve encontrar erros
1512
- expect(resultadoLexador.erros).toHaveLength(0);
1513
- // O valor recebido deve ser mapeado como METODO
1199
+ else {
1200
+ expect(resultadoLexador.simbolos).toHaveLength(10);
1514
1201
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1515
- expect.objectContaining({ tipo: foles_1.default.METODO }),
1202
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1516
1203
  ]));
1517
- // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
1518
- if (valIndex <= 2) {
1519
- expect(resultadoLexador.simbolos).toHaveLength(11);
1520
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1521
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1522
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1523
- ]));
1524
- }
1525
- else {
1526
- expect(resultadoLexador.simbolos).toHaveLength(10);
1527
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1528
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1529
- ]));
1530
- }
1531
- // Avaliador Sintático
1532
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1533
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1534
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1535
- const primeiroResultado = resultadoAvaliadorSintatico[0];
1536
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1537
- const primeiroResultadoTipado = primeiroResultado;
1538
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1539
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
1540
- // Tradutor
1541
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
1542
- // O Tradutor deve serializar de acordo e traduzir rotacionar-vertical para rotateY
1543
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
1544
- if (valIndex !== 0) {
1545
- expect(resultadoTradutor).toContain(`rotateY(${valoresAceitos[valIndex]});`);
1546
- }
1547
- else {
1548
- expect(resultadoTradutor).toContain(`rotateY(45deg);`);
1549
- }
1550
1204
  }
1205
+ // Avaliador Sintático
1206
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1207
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1208
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1209
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
1210
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1211
+ const primeiroResultadoTipado = primeiroResultado;
1212
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1213
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoInverter[index]]);
1214
+ // Resolvedor
1215
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
1216
+ // O Resolvedor deve resolver de acordo e traduzir inverter para invert
1217
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoInverter[index]]);
1218
+ expect(resultadoResolvedor).toContain(`invert(${valoresAceitos[valIndex]});`);
1551
1219
  }
1552
- });
1553
- it('Atribuindo Método "saturar()"', () => {
1554
- for (let index = 0; index < metodos_1.MetodoSaturar.length; index += 1) {
1555
- const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
1556
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1557
- // Lexador
1558
- const resultadoLexador = lexador.mapear([
1559
- "lmht {",
1560
- `${metodos_1.MetodoSaturar[index]}: saturar(${valoresAceitos[valIndex]});`,
1561
- "}"
1562
- ]);
1563
- // O Lexador não deve encontrar erros
1564
- expect(resultadoLexador.erros).toHaveLength(0);
1565
- // O valor recebido deve ser mapeado como METODO
1220
+ }
1221
+ });
1222
+ it('Atribuindo Método "limitar" (clamp)', () => {
1223
+ for (let index = 0; index < metodos_1.MetodoLimitar.length; index += 1) {
1224
+ // Lexador
1225
+ const resultadoLexador = lexador.mapear([
1226
+ "lmht {",
1227
+ `${metodos_1.MetodoLimitar[index]}: limitar(10vw, 20em, 100vw);`,
1228
+ "}"
1229
+ ]);
1230
+ // O Lexador deve montar um objeto de comprimento 17 sem retornar nenhum erro
1231
+ expect(resultadoLexador.simbolos).toHaveLength(17);
1232
+ expect(resultadoLexador.erros).toHaveLength(0);
1233
+ // O valor recebido deve ser mapeado como METODO
1234
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1235
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
1236
+ ]));
1237
+ // O Lexador também deve encontrar números e quantificadores no mapeamento
1238
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1239
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1240
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1241
+ ]));
1242
+ // Avaliador Sintático
1243
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1244
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1245
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1246
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
1247
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1248
+ const primeiroResultadoTipado = primeiroResultado;
1249
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1250
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoLimitar[index]]);
1251
+ // Resolvedor
1252
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
1253
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoLimitar[index]]);
1254
+ expect(resultadoResolvedor).toContain('clamp(10vw, 20em, 100vw);');
1255
+ }
1256
+ });
1257
+ it('Atribuindo Método "linear()"', () => {
1258
+ for (let index = 0; index < metodos_1.MetodoLinear.length; index += 1) {
1259
+ // Lexador
1260
+ const resultadoLexador = lexador.mapear([
1261
+ "lmht {",
1262
+ `${metodos_1.MetodoLinear[index]}: linear(0, 0.25, 1);`,
1263
+ "}"
1264
+ ]);
1265
+ // O Lexador deve montar um objeto de comprimento 14 sem retornar nenhum erro
1266
+ expect(resultadoLexador.simbolos).toHaveLength(14);
1267
+ expect(resultadoLexador.erros).toHaveLength(0);
1268
+ // O valor recebido deve ser mapeado como METODO
1269
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1270
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
1271
+ ]));
1272
+ // O Lexador também deve encontrar números no mapeamento
1273
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1274
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1275
+ ]));
1276
+ // Avaliador Sintático
1277
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1278
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1279
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1280
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
1281
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1282
+ const primeiroResultadoTipado = primeiroResultado;
1283
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1284
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoLinear[index]]);
1285
+ // // // // Resolvedor
1286
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
1287
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoLinear[index]]);
1288
+ expect(resultadoResolvedor).toContain('linear(0, 0.25, 1);');
1289
+ }
1290
+ });
1291
+ it('Atribuindo Método "minmax()"', () => {
1292
+ for (let index = 0; index < metodos_1.MetodoMinMax.length; index += 1) {
1293
+ // Lexador
1294
+ const resultadoLexador = lexador.mapear([
1295
+ "lmht {",
1296
+ `${metodos_1.MetodoMinMax[index]}: minmax(100px, conteúdo-máximo);`,
1297
+ "}"
1298
+ ]);
1299
+ // O Lexador deve montar um objeto de comprimento 13 sem retornar nenhum erro
1300
+ expect(resultadoLexador.simbolos).toHaveLength(13);
1301
+ expect(resultadoLexador.erros).toHaveLength(0);
1302
+ // O valor recebido deve ser mapeado como METODO
1303
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1304
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
1305
+ ]));
1306
+ // O Lexador também deve encontrar número e quantificador no mapeamento
1307
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1308
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1309
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1310
+ ]));
1311
+ // Avaliador Sintático
1312
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1313
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1314
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1315
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
1316
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1317
+ const primeiroResultadoTipado = primeiroResultado;
1318
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1319
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoMinMax[index]]);
1320
+ // // // // Resolvedor
1321
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
1322
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoMinMax[index]]);
1323
+ expect(resultadoResolvedor).toContain('minmax(100px, max-content);');
1324
+ }
1325
+ });
1326
+ it('Atribuindo Método "opacar()"', () => {
1327
+ for (let index = 0; index < metodos_1.MetodoOpacar.length; index += 1) {
1328
+ const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
1329
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1330
+ // Lexador
1331
+ const resultadoLexador = lexador.mapear([
1332
+ "lmht {",
1333
+ `${metodos_1.MetodoOpacar[index]}: opacar(${valoresAceitos[valIndex]});`,
1334
+ "}"
1335
+ ]);
1336
+ // O Lexador não deve encontrar erros
1337
+ expect(resultadoLexador.erros).toHaveLength(0);
1338
+ // O valor recebido deve ser mapeado como METODO
1339
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1340
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
1341
+ ]));
1342
+ // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
1343
+ if (valIndex === 0 || valIndex === 1) {
1344
+ expect(resultadoLexador.simbolos).toHaveLength(11);
1566
1345
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1567
- expect.objectContaining({ tipo: foles_1.default.METODO }),
1346
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1347
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1568
1348
  ]));
1569
- // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
1570
- if (valIndex === 0 || valIndex === 1) {
1571
- expect(resultadoLexador.simbolos).toHaveLength(11);
1572
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1573
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1574
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1575
- ]));
1576
- }
1577
- else {
1578
- expect(resultadoLexador.simbolos).toHaveLength(10);
1579
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1580
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1581
- ]));
1582
- }
1583
- // Avaliador Sintático
1584
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1585
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1586
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1587
- const primeiroResultado = resultadoAvaliadorSintatico[0];
1588
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1589
- const primeiroResultadoTipado = primeiroResultado;
1590
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1591
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoSaturar[index]]);
1592
- // Tradutor
1593
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
1594
- // O Tradutor deve serializar de acordo e traduzir saturar para saturate
1595
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoSaturar[index]]);
1596
- expect(resultadoTradutor).toContain(`saturate(${valoresAceitos[valIndex]});`);
1597
1349
  }
1598
- }
1599
- });
1600
- it('Atribuindo Método "sepia()"', () => {
1601
- for (let index = 0; index < metodos_1.MetodoSepia.length; index += 1) {
1602
- const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
1603
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1604
- // Lexador
1605
- const resultadoLexador = lexador.mapear([
1606
- "lmht {",
1607
- `${metodos_1.MetodoSepia[index]}: sepia(${valoresAceitos[valIndex]});`,
1608
- "}"
1609
- ]);
1610
- // O Lexador não deve encontrar erros
1611
- expect(resultadoLexador.erros).toHaveLength(0);
1612
- // O valor recebido deve ser mapeado como METODO
1350
+ else {
1351
+ expect(resultadoLexador.simbolos).toHaveLength(10);
1613
1352
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1614
- expect.objectContaining({ tipo: foles_1.default.METODO }),
1353
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1615
1354
  ]));
1616
- // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
1617
- if (valIndex === 0 || valIndex === 1) {
1618
- expect(resultadoLexador.simbolos).toHaveLength(11);
1619
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1620
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1621
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1622
- ]));
1623
- }
1624
- else {
1625
- expect(resultadoLexador.simbolos).toHaveLength(10);
1626
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1627
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1628
- ]));
1629
- }
1630
- // Avaliador Sintático
1631
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1632
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1633
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1634
- const primeiroResultado = resultadoAvaliadorSintatico[0];
1635
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1636
- const primeiroResultadoTipado = primeiroResultado;
1637
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1638
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoSepia[index]]);
1639
- // Tradutor
1640
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
1641
- // O Tradutor deve serializar de acordo e traduzir sépia para sepia
1642
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoSepia[index]]);
1643
- expect(resultadoTradutor).toContain(`sepia(${valoresAceitos[valIndex]});`);
1644
1355
  }
1356
+ // Avaliador Sintático
1357
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1358
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1359
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1360
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
1361
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1362
+ const primeiroResultadoTipado = primeiroResultado;
1363
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1364
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoOpacar[index]]);
1365
+ // Resolvedor
1366
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
1367
+ // O Resolvedor deve resolver de acordo e traduzir opacar para opacity
1368
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoOpacar[index]]);
1369
+ expect(resultadoResolvedor).toContain(`opacity(${valoresAceitos[valIndex]});`);
1645
1370
  }
1646
- });
1647
- it('Atribuindo Método "translação()"', () => {
1648
- for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
1649
- const valoresAceitos = ['270graus', '18deg', '3.142rad', '0', '1'];
1650
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1651
- // Lexador
1652
- const resultadoLexador = lexador.mapear([
1653
- "lmht {",
1654
- `${metodos_1.MetodosTranslacao[index]}: translação(${valoresAceitos[valIndex]});`,
1655
- "}"
1656
- ]);
1657
- // O Lexador não deve encontrar erros
1658
- expect(resultadoLexador.erros).toHaveLength(0);
1659
- // O valor recebido deve ser mapeado como METODO
1371
+ }
1372
+ });
1373
+ it('Atribuindo Método "ornamentos()" com valor numérico - caso de sucesso', () => {
1374
+ const valoresAceitos = ['1', '2', '12', '20'];
1375
+ for (let index = 0; index < valoresAceitos.length; index += 1) {
1376
+ // Lexador
1377
+ const resultadoLexador = lexador.mapear([
1378
+ "lmht {",
1379
+ `variacao-fonte-alternativa: ornamentos(${valoresAceitos[index]});`,
1380
+ "}"
1381
+ ]);
1382
+ // O Lexador não deve encontrar erros
1383
+ expect(resultadoLexador.erros).toHaveLength(0);
1384
+ // O valor recebido deve ser mapeado como METODO
1385
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1386
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
1387
+ ]));
1388
+ // O Lexador deve montar um objeto de comprimento 10, incluindo mapeamento de valores numéricos
1389
+ expect(resultadoLexador.simbolos).toHaveLength(10);
1390
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1391
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1392
+ ]));
1393
+ // Avaliador Sintático
1394
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1395
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1396
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1397
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
1398
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1399
+ const primeiroResultadoTipado = primeiroResultado;
1400
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1401
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual('font-variant-alternates');
1402
+ // Resolvedor
1403
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
1404
+ // O Resolvedor deve resolver de acordo e traduzir ornamentos para ornaments
1405
+ expect(resultadoResolvedor).toContain('font-variant-alternates');
1406
+ expect(resultadoResolvedor).toContain(`ornaments(${valoresAceitos[index]});`);
1407
+ }
1408
+ });
1409
+ it('Atribuindo Método "ornamentos()" com valor numérico - caso de falha', () => {
1410
+ const valoresAceitos = ['0', '100', '300'];
1411
+ for (let index = 0; index < valoresAceitos.length; index += 1) {
1412
+ // Lexador
1413
+ const resultadoLexador = lexador.mapear([
1414
+ "lmht {",
1415
+ `variacao-fonte-alternativa: ornamentos(${valoresAceitos[index]});`,
1416
+ "}"
1417
+ ]);
1418
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1419
+ expect(() => {
1420
+ resolvedor.resolver(resultadoAvaliadorSintatico);
1421
+ }).toThrow('O valor da função ornamentos() deve estar entre 1 e 99');
1422
+ }
1423
+ });
1424
+ it('Atribuindo Método "ornamentos()" com valor string - caso de sucesso', () => {
1425
+ const valoresAceitos = ['floral', 'ruby', 'circle'];
1426
+ for (let index = 0; index < valoresAceitos.length; index += 1) {
1427
+ // Lexador
1428
+ const resultadoLexador = lexador.mapear([
1429
+ "lmht {",
1430
+ `variacao-fonte-alternativa: ornamentos('${valoresAceitos[index]}');`,
1431
+ "}"
1432
+ ]);
1433
+ // O Lexador não deve encontrar erros
1434
+ expect(resultadoLexador.erros).toHaveLength(0);
1435
+ // O valor recebido deve ser mapeado como METODO
1436
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1437
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
1438
+ ]));
1439
+ // O Lexador deve montar um objeto de comprimento 10
1440
+ expect(resultadoLexador.simbolos).toHaveLength(10);
1441
+ // Avaliador Sintático
1442
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1443
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1444
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1445
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
1446
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1447
+ const primeiroResultadoTipado = primeiroResultado;
1448
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1449
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual('font-variant-alternates');
1450
+ // Resolvedor
1451
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
1452
+ // O Resolvedor deve resolver de acordo e traduzir ornamentos para ornaments e conter o valor string
1453
+ expect(resultadoResolvedor).toContain('font-variant-alternates');
1454
+ expect(resultadoResolvedor).toContain(`ornaments('${valoresAceitos[index]}');`);
1455
+ }
1456
+ });
1457
+ it('Atribuindo Método "ornamentos()" com valor string - caso de falha', () => {
1458
+ const valoresAceitos = ['--valorPersonalizado', 'herdar', 'inicial'];
1459
+ for (let index = 0; index < valoresAceitos.length; index += 1) {
1460
+ // Lexador
1461
+ const resultadoLexador = lexador.mapear([
1462
+ "lmht {",
1463
+ `variacao-fonte-alternativa: ornamentos(${valoresAceitos[index]});`,
1464
+ "}"
1465
+ ]);
1466
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1467
+ expect(() => {
1468
+ resolvedor.resolver(resultadoAvaliadorSintatico);
1469
+ }).toThrow(`Modificador ou variável 'variação-fonte-alternativa' com valor personalizado ${valoresAceitos[index]} inválido. O valor deve seguir as regras de sintaxe de uma identificação personalizada (<custom-indent>).`);
1470
+ }
1471
+ });
1472
+ it('Atribuindo Método "passos" (steps)', () => {
1473
+ for (let index = 0; index < metodos_1.MetodoPassos.length; index += 1) {
1474
+ // Lexador
1475
+ const resultadoLexador = lexador.mapear([
1476
+ "lmht {",
1477
+ `${metodos_1.MetodoPassos[index]}: passos(2, salto-inicial);`,
1478
+ "}"
1479
+ ]);
1480
+ // O Lexador deve montar um objeto de comprimento 12 sem retornar nenhum erro
1481
+ expect(resultadoLexador.simbolos).toHaveLength(12);
1482
+ expect(resultadoLexador.erros).toHaveLength(0);
1483
+ // O valor recebido deve ser mapeado como METODO
1484
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1485
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
1486
+ ]));
1487
+ // O Lexador também deve encontrar número e qualitativo no mapeamento
1488
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1489
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1490
+ expect.objectContaining({ tipo: foles_1.default.QUALITATIVO }),
1491
+ ]));
1492
+ // Avaliador Sintático
1493
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1494
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1495
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1496
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
1497
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1498
+ const primeiroResultadoTipado = primeiroResultado;
1499
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1500
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoPassos[index]]);
1501
+ // // // // Resolvedor
1502
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
1503
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoPassos[index]]);
1504
+ expect(resultadoResolvedor).toContain('steps(2, jump-start);');
1505
+ }
1506
+ });
1507
+ it('Atribuindo Método "perspectivar()"', () => {
1508
+ for (let index = 0; index < metodos_1.MetodoPerspectivar.length; index += 1) {
1509
+ const valoresAceitos = ['800px', '6.5cm', '0.1', '0', '1', '1.75', 'nenhuma'];
1510
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1511
+ // Lexador
1512
+ const resultadoLexador = lexador.mapear([
1513
+ "lmht {",
1514
+ `${metodos_1.MetodoPerspectivar[index]}: perspectivar(${valoresAceitos[valIndex]});`,
1515
+ "}"
1516
+ ]);
1517
+ // O Lexador não deve encontrar erros
1518
+ expect(resultadoLexador.erros).toHaveLength(0);
1519
+ // O valor recebido deve ser mapeado como METODO
1520
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1521
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
1522
+ ]));
1523
+ // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
1524
+ if (valIndex === 0 || valIndex === 1) {
1525
+ expect(resultadoLexador.simbolos).toHaveLength(11);
1526
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1527
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1528
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1529
+ ]));
1530
+ }
1531
+ else if (valIndex !== 6) {
1532
+ expect(resultadoLexador.simbolos).toHaveLength(10);
1533
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1534
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1535
+ ]));
1536
+ }
1537
+ else {
1538
+ expect(resultadoLexador.simbolos).toHaveLength(10);
1660
1539
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1661
- expect.objectContaining({ tipo: foles_1.default.METODO }),
1540
+ expect.objectContaining({ tipo: foles_1.default.IDENTIFICADOR }),
1662
1541
  ]));
1663
- // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
1664
- if (valIndex <= 2) {
1665
- expect(resultadoLexador.simbolos).toHaveLength(11);
1666
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1667
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1668
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1669
- ]));
1670
- }
1671
- else {
1672
- expect(resultadoLexador.simbolos).toHaveLength(10);
1673
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1674
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1675
- ]));
1676
- }
1677
- // Avaliador Sintático
1678
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1679
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1680
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1681
- const primeiroResultado = resultadoAvaliadorSintatico[0];
1682
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1683
- const primeiroResultadoTipado = primeiroResultado;
1684
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1685
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
1686
- // Tradutor
1687
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
1688
- // O Tradutor deve serializar de acordo e traduzir translação para translate
1689
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
1690
- if (valIndex !== 0) {
1691
- expect(resultadoTradutor).toContain(`translate(${valoresAceitos[valIndex]});`);
1692
- }
1693
- else {
1694
- expect(resultadoTradutor).toContain(`translate(270deg);`);
1695
- }
1696
1542
  }
1543
+ // Avaliador Sintático
1544
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1545
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1546
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1547
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
1548
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1549
+ const primeiroResultadoTipado = primeiroResultado;
1550
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1551
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoPerspectivar[index]]);
1552
+ // Resolvedor
1553
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
1554
+ // O Resolvedor deve resolver de acordo e traduzir perspectivar para perspective
1555
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoPerspectivar[index]]);
1556
+ expect(resultadoResolvedor).toContain(`perspective(${valoresAceitos[valIndex]});`);
1697
1557
  }
1698
- });
1699
- it('Atribuindo Método "translacao() com múltiplos valores"', () => {
1700
- for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
1558
+ }
1559
+ });
1560
+ it('Atribuindo Método "projetar-sombra()" com valores de comprimento somente', () => {
1561
+ for (let index = 0; index < metodos_1.MetodoProjetarSombra.length; index += 1) {
1562
+ const comprimentos = ['15px 15px', '15px 15px 15px', '0.5rem 0.5rem', '0.5rem 0.5rem 1rem'];
1563
+ for (let posIndex = 0; posIndex < comprimentos.length; posIndex += 1) {
1701
1564
  // Lexador
1702
1565
  const resultadoLexador = lexador.mapear([
1703
1566
  "lmht {",
1704
- `${metodos_1.MetodosTranslacao[index]}: translacao(100graus, 100graus);`,
1567
+ `${metodos_1.MetodoProjetarSombra[index]}: projetar-sombra(${comprimentos[posIndex]});`,
1705
1568
  "}"
1706
1569
  ]);
1707
- // O Lexador não deve encontrar erros
1570
+ // O Lexador deve montar um objeto de acordo, sem retornar nenhum erro
1708
1571
  expect(resultadoLexador.erros).toHaveLength(0);
1709
1572
  // O valor recebido deve ser mapeado como METODO
1710
1573
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1711
1574
  expect.objectContaining({ tipo: foles_1.default.METODO }),
1712
1575
  ]));
1713
- // O Lexador deve montar um objeto de comprimento 14
1714
- expect(resultadoLexador.simbolos).toHaveLength(14);
1576
+ // O Lexador também deve sempre encontrar valores e quantificadores na operação
1715
1577
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1716
1578
  expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1717
1579
  expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
@@ -1724,20 +1586,62 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
1724
1586
  expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1725
1587
  const primeiroResultadoTipado = primeiroResultado;
1726
1588
  expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1727
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
1728
- // Tradutor
1729
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
1730
- // O Tradutor deve serializar de acordo e traduzir translacao para translate
1731
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
1732
- expect(resultadoTradutor).toContain(`translate(100deg, 100deg);`);
1589
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoProjetarSombra[index]]);
1590
+ // Resolvedor
1591
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
1592
+ // O Resolvedor deve resolver de acordo e traduzir projetar-sombra para drop-shadow
1593
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoProjetarSombra[index]]);
1594
+ expect(resultadoResolvedor).toContain(`drop-shadow(${comprimentos[posIndex]});`);
1595
+ }
1596
+ }
1597
+ });
1598
+ it('Atribuindo Método "projetar-sombra()" com valores de cor e de comprimento', () => {
1599
+ for (let index = 0; index < metodos_1.MetodoProjetarSombra.length; index += 1) {
1600
+ const comprimentos = ['15px 15px vermelho', '15px 15px 15px vermelho', 'vermelho 0.5rem 0.5rem', 'vermelho 0.5rem 0.5rem 1rem'];
1601
+ for (let posIndex = 0; posIndex < comprimentos.length; posIndex += 1) {
1602
+ // Lexador
1603
+ const resultadoLexador = lexador.mapear([
1604
+ "lmht {",
1605
+ `${metodos_1.MetodoProjetarSombra[index]}: projetar-sombra(${comprimentos[posIndex]});`,
1606
+ "}"
1607
+ ]);
1608
+ // O Lexador deve montar um objeto de acordo, sem retornar nenhum erro
1609
+ expect(resultadoLexador.erros).toHaveLength(0);
1610
+ // O valor recebido deve ser mapeado como METODO
1611
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1612
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
1613
+ ]));
1614
+ // O Lexador também deve sempre encontrar valores e quantificadores na operação
1615
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1616
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1617
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1618
+ ]));
1619
+ // Avaliador Sintático
1620
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1621
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1622
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1623
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
1624
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1625
+ const primeiroResultadoTipado = primeiroResultado;
1626
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1627
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoProjetarSombra[index]]);
1628
+ // Resolvedor
1629
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
1630
+ // O Resolvedor deve resolver de acordo e traduzir vermelho para red
1631
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoProjetarSombra[index]]);
1632
+ expect(resultadoResolvedor).toContain('red');
1733
1633
  }
1734
- });
1735
- it('Atribuindo Método "translação-3d()"', () => {
1736
- for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
1634
+ }
1635
+ });
1636
+ it('Atribuindo Método "raio()" com valores de posição e número/quantificador', () => {
1637
+ for (let index = 0; index < metodos_1.MetodoRaio.length; index += 1) {
1638
+ const valoresAceitos = ['lado-mais-próximo', 'lado-mais-proximo', 'canto-mais-próximo', 'canto-mais-proximo', 'lado-mais-distante', 'canto-mais-distante', 'lados', 'conter'];
1639
+ const traducaoValoresAceitos = ['closest-side', 'closest-side', 'closest-corner', 'closest-corner', 'farthest-side', 'farthest-corner', 'sides', 'contain'];
1640
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1737
1641
  // Lexador
1738
1642
  const resultadoLexador = lexador.mapear([
1739
1643
  "lmht {",
1740
- `${metodos_1.MetodosTranslacao[index]}: translacao-3d(5ch, 0.4in, 5em);`,
1644
+ `${metodos_1.MetodoRaio[index]}: raio(${valoresAceitos[valIndex]} 200graus);`,
1741
1645
  "}"
1742
1646
  ]);
1743
1647
  // O Lexador não deve encontrar erros
@@ -1746,8 +1650,8 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
1746
1650
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1747
1651
  expect.objectContaining({ tipo: foles_1.default.METODO }),
1748
1652
  ]));
1749
- // O Lexador deve montar um objeto de comprimento 17
1750
- expect(resultadoLexador.simbolos).toHaveLength(17);
1653
+ // O Lexador deve montar um objeto de comprimento 12
1654
+ expect(resultadoLexador.simbolos).toHaveLength(12);
1751
1655
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1752
1656
  expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1753
1657
  expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
@@ -1760,433 +1664,1072 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
1760
1664
  expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1761
1665
  const primeiroResultadoTipado = primeiroResultado;
1762
1666
  expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1763
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
1764
- // Tradutor
1765
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
1766
- // O Tradutor deve serializar de acordo e traduzir translação-3d para translate3d
1767
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
1768
- expect(resultadoTradutor).toContain(`translate3d(5ch, 0.4in, 5em);`);
1667
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoRaio[index]]);
1668
+ // Resolvedor
1669
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
1670
+ // O Resolvedor deve resolver de acordo e traduzir raio para ray
1671
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoRaio[index]]);
1672
+ expect(resultadoResolvedor).toContain(`ray(${traducaoValoresAceitos[valIndex]} 200deg);`);
1769
1673
  }
1770
- });
1771
- it('Atribuindo Método "translação-3d() cobrindo todos os casos"', () => {
1772
- for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
1773
- const valoresAceitos = [
1774
- '0',
1775
- '0, 62px, 135px',
1776
- '2.7rem, 0, 1rem',
1777
- '5ch, 0.4in, 0',
1778
- '0, 0, 135px',
1779
- '0, 2.7rem, 0',
1780
- '5ch, 0, 0',
1781
- '42px, 62px, 135px',
1782
- '0, 0, 0',
1783
- ];
1784
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1785
- // Lexador
1786
- const resultadoLexador = lexador.mapear([
1787
- "lmht {",
1788
- `${metodos_1.MetodosTranslacao[index]}: translação-3d(${valoresAceitos[valIndex]});`,
1789
- "}"
1790
- ]);
1791
- // O Lexador não deve encontrar erros
1792
- expect(resultadoLexador.erros).toHaveLength(0);
1793
- // O valor recebido deve ser mapeado como METODO
1674
+ }
1675
+ });
1676
+ it('Atribuindo Método "raio()" com somente número/quantificador', () => {
1677
+ for (let index = 0; index < metodos_1.MetodoRaio.length; index += 1) {
1678
+ // Lexador
1679
+ const resultadoLexador = lexador.mapear([
1680
+ "lmht {",
1681
+ `${metodos_1.MetodoRaio[index]}: raio(200graus);`,
1682
+ "}"
1683
+ ]);
1684
+ // O Lexador não deve encontrar erros
1685
+ expect(resultadoLexador.erros).toHaveLength(0);
1686
+ // O valor recebido deve ser mapeado como METODO
1687
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1688
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
1689
+ ]));
1690
+ // O Lexador deve montar um objeto de comprimento 11
1691
+ expect(resultadoLexador.simbolos).toHaveLength(11);
1692
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1693
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1694
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1695
+ ]));
1696
+ // Avaliador Sintático
1697
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1698
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1699
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1700
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
1701
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1702
+ const primeiroResultadoTipado = primeiroResultado;
1703
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1704
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoRaio[index]]);
1705
+ // Resolvedor
1706
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
1707
+ // O Resolvedor deve resolver de acordo e traduzir raio para ray
1708
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoRaio[index]]);
1709
+ expect(resultadoResolvedor).toContain(`ray(200deg);`);
1710
+ }
1711
+ });
1712
+ it('Atribuindo Método "rotacionar()"', () => {
1713
+ for (let index = 0; index < metodos_1.MetodosRotacionar.length; index += 1) {
1714
+ const valoresAceitos = ['45graus', '45deg', '3.142rad', '0.1', '0', '1', '1.75'];
1715
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1716
+ // Lexador
1717
+ const resultadoLexador = lexador.mapear([
1718
+ "lmht {",
1719
+ `${metodos_1.MetodosRotacionar[index]}: rotacionar(${valoresAceitos[valIndex]});`,
1720
+ "}"
1721
+ ]);
1722
+ // O Lexador não deve encontrar erros
1723
+ expect(resultadoLexador.erros).toHaveLength(0);
1724
+ // O valor recebido deve ser mapeado como METODO
1725
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1726
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
1727
+ ]));
1728
+ // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
1729
+ if (valIndex <= 2) {
1730
+ expect(resultadoLexador.simbolos).toHaveLength(11);
1794
1731
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1795
- expect.objectContaining({ tipo: foles_1.default.METODO }),
1732
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1733
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1796
1734
  ]));
1797
- // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
1798
- if (valIndex === 0) {
1799
- expect(resultadoLexador.simbolos).toHaveLength(10);
1800
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1801
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1802
- ]));
1803
- }
1804
- else if (valIndex === 1 || valIndex === 2 || valIndex === 3) {
1805
- expect(resultadoLexador.simbolos).toHaveLength(16);
1806
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1807
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1808
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1809
- ]));
1810
- }
1811
- else if (valIndex === 4 || valIndex === 5 || valIndex === 6) {
1812
- expect(resultadoLexador.simbolos).toHaveLength(15);
1813
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1814
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1815
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1816
- ]));
1817
- }
1818
- else if (valIndex === 7) {
1819
- expect(resultadoLexador.simbolos).toHaveLength(17);
1820
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1821
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1822
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1823
- ]));
1824
- }
1825
- else {
1826
- expect(resultadoLexador.simbolos).toHaveLength(14);
1827
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1828
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1829
- ]));
1830
- }
1831
- // Avaliador Sintático
1832
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1833
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1834
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1835
- const primeiroResultado = resultadoAvaliadorSintatico[0];
1836
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1837
- const primeiroResultadoTipado = primeiroResultado;
1838
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1839
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
1840
- // Tradutor
1841
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
1842
- // O Tradutor deve serializar de acordo e traduzir translação-3d para translate3d
1843
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
1844
- if (valIndex !== 8) {
1845
- expect(resultadoTradutor).toContain(`translate3d(${valoresAceitos[valIndex]});`);
1846
- }
1847
- else {
1848
- expect(resultadoTradutor).toContain(`translate3d(0);`);
1849
- }
1850
1735
  }
1851
- }
1852
- });
1853
- it('Atribuindo Método "translação-eixo-z()"', () => {
1854
- for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
1855
- const valoresAceitos = ['42px', '3ch', '0'];
1856
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1857
- // Lexador
1858
- const resultadoLexador = lexador.mapear([
1859
- "lmht {",
1860
- `${metodos_1.MetodosTranslacao[index]}: translação-eixo-z(${valoresAceitos[valIndex]});`,
1861
- "}"
1862
- ]);
1863
- // O Lexador não deve encontrar erros
1864
- expect(resultadoLexador.erros).toHaveLength(0);
1865
- // O valor recebido deve ser mapeado como METODO
1736
+ else {
1737
+ expect(resultadoLexador.simbolos).toHaveLength(10);
1866
1738
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1867
- expect.objectContaining({ tipo: foles_1.default.METODO }),
1739
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1868
1740
  ]));
1869
- // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
1870
- if (valIndex === 0 || valIndex === 1) {
1871
- expect(resultadoLexador.simbolos).toHaveLength(11);
1872
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1873
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1874
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1875
- ]));
1876
- }
1877
- else {
1878
- expect(resultadoLexador.simbolos).toHaveLength(10);
1879
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1880
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1881
- ]));
1882
- }
1883
- // Avaliador Sintático
1884
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1885
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1886
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1887
- const primeiroResultado = resultadoAvaliadorSintatico[0];
1888
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1889
- const primeiroResultadoTipado = primeiroResultado;
1890
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1891
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
1892
- // Tradutor
1893
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
1894
- // O Tradutor deve serializar de acordo e traduzir translação-eixo-z para translateZ
1895
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
1896
- expect(resultadoTradutor).toContain(`translateZ(${valoresAceitos[valIndex]});`);
1741
+ }
1742
+ // Avaliador Sintático
1743
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1744
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1745
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1746
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
1747
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1748
+ const primeiroResultadoTipado = primeiroResultado;
1749
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1750
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
1751
+ // Resolvedor
1752
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
1753
+ // O Resolvedor deve resolver de acordo e traduzir rotacionar para rotate
1754
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
1755
+ if (valIndex !== 0) {
1756
+ expect(resultadoResolvedor).toContain(`rotate(${valoresAceitos[valIndex]});`);
1757
+ }
1758
+ else {
1759
+ expect(resultadoResolvedor).toContain(`rotate(45deg);`);
1897
1760
  }
1898
1761
  }
1899
- });
1900
- it('Atribuindo Método "translacao-eixo-z()"', () => {
1901
- for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
1902
- const valoresAceitos = ['42px', '3ch', '0'];
1903
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1904
- // Lexador
1905
- const resultadoLexador = lexador.mapear([
1906
- "lmht {",
1907
- `${metodos_1.MetodosTranslacao[index]}: translacao-eixo-z(${valoresAceitos[valIndex]});`,
1908
- "}"
1909
- ]);
1910
- // O Lexador não deve encontrar erros
1911
- expect(resultadoLexador.erros).toHaveLength(0);
1912
- // O valor recebido deve ser mapeado como METODO
1762
+ }
1763
+ });
1764
+ it('Atribuindo Método "rotacionar-3d()" - caso de sucesso', () => {
1765
+ for (let index = 0; index < metodos_1.MetodosRotacionar.length; index += 1) {
1766
+ const valoresAceitos = ['0, 0, 0, 0', '1, 2, 0, 45deg', '1, 1, 1, 90graus'];
1767
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1768
+ // Lexador
1769
+ const resultadoLexador = lexador.mapear([
1770
+ "lmht {",
1771
+ `${metodos_1.MetodosRotacionar[index]}: rotacionar-3d(${valoresAceitos[valIndex]});`,
1772
+ "}"
1773
+ ]);
1774
+ // O Lexador não deve encontrar erros
1775
+ expect(resultadoLexador.erros).toHaveLength(0);
1776
+ // O valor recebido deve ser mapeado como METODO
1777
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1778
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
1779
+ ]));
1780
+ // O Lexador deve montar um objeto de comprimento 17 caso haja quantificador e 16 caso não haja
1781
+ if (valIndex > 0) {
1782
+ expect(resultadoLexador.simbolos).toHaveLength(17);
1913
1783
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1914
- expect.objectContaining({ tipo: foles_1.default.METODO }),
1784
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1785
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1915
1786
  ]));
1916
- // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
1917
- if (valIndex === 0 || valIndex === 1) {
1918
- expect(resultadoLexador.simbolos).toHaveLength(11);
1919
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1920
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1921
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1922
- ]));
1923
- }
1924
- else {
1925
- expect(resultadoLexador.simbolos).toHaveLength(10);
1926
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1927
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1928
- ]));
1929
- }
1930
- // Avaliador Sintático
1931
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1932
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1933
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1934
- const primeiroResultado = resultadoAvaliadorSintatico[0];
1935
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1936
- const primeiroResultadoTipado = primeiroResultado;
1937
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1938
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
1939
- // Tradutor
1940
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
1941
- // O Tradutor deve serializar de acordo e traduzir translacao-eixo-z para translateZ
1942
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
1943
- expect(resultadoTradutor).toContain(`translateZ(${valoresAceitos[valIndex]});`);
1944
1787
  }
1945
- }
1946
- });
1947
- it('Atribuindo Método "translação-horizontal()"', () => {
1948
- for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
1949
- const valoresAceitos = ['42px', '3ch', '0'];
1950
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1951
- // Lexador
1952
- const resultadoLexador = lexador.mapear([
1953
- "lmht {",
1954
- `${metodos_1.MetodosTranslacao[index]}: translação-horizontal(${valoresAceitos[valIndex]});`,
1955
- "}"
1956
- ]);
1957
- // O Lexador não deve encontrar erros
1958
- expect(resultadoLexador.erros).toHaveLength(0);
1959
- // O valor recebido deve ser mapeado como METODO
1788
+ else {
1789
+ expect(resultadoLexador.simbolos).toHaveLength(16);
1960
1790
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1961
- expect.objectContaining({ tipo: foles_1.default.METODO }),
1791
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1962
1792
  ]));
1963
- // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
1964
- if (valIndex === 0 || valIndex === 1) {
1965
- expect(resultadoLexador.simbolos).toHaveLength(11);
1966
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1967
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1968
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1969
- ]));
1970
- }
1971
- else {
1972
- expect(resultadoLexador.simbolos).toHaveLength(10);
1973
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1974
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1975
- ]));
1976
- }
1977
- // Avaliador Sintático
1978
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1979
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1980
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1981
- const primeiroResultado = resultadoAvaliadorSintatico[0];
1982
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1983
- const primeiroResultadoTipado = primeiroResultado;
1984
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1985
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
1986
- // Tradutor
1987
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
1988
- // O Tradutor deve serializar de acordo e traduzir translação-horizontal para translateX
1989
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
1990
- expect(resultadoTradutor).toContain(`translateX(${valoresAceitos[valIndex]});`);
1793
+ }
1794
+ // Avaliador Sintático
1795
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1796
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1797
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1798
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
1799
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1800
+ const primeiroResultadoTipado = primeiroResultado;
1801
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1802
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
1803
+ // Resolvedor
1804
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
1805
+ // O Resolvedor deve resolver de acordo e traduzir rotacionar-3d para rotate3d
1806
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
1807
+ if (valIndex < 2) {
1808
+ expect(resultadoResolvedor).toContain(`rotate3d(${valoresAceitos[valIndex]});`);
1809
+ }
1810
+ else {
1811
+ expect(resultadoResolvedor).toContain(`rotate3d(1, 1, 1, 90deg);`);
1991
1812
  }
1992
1813
  }
1993
- });
1994
- it('Atribuindo Método "translacao-horizontal()"', () => {
1995
- for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
1996
- const valoresAceitos = ['42px', '3ch', '0'];
1997
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1998
- // Lexador
1999
- const resultadoLexador = lexador.mapear([
2000
- "lmht {",
2001
- `${metodos_1.MetodosTranslacao[index]}: translacao-horizontal(${valoresAceitos[valIndex]});`,
2002
- "}"
2003
- ]);
2004
- // O Lexador não deve encontrar erros
2005
- expect(resultadoLexador.erros).toHaveLength(0);
2006
- // O valor recebido deve ser mapeado como METODO
1814
+ }
1815
+ });
1816
+ it('Atribuindo Método "rotacionar-3d()" - caso de falha', () => {
1817
+ for (let index = 0; index < metodos_1.MetodosRotacionar.length; index += 1) {
1818
+ // Lexador
1819
+ const resultadoLexador = lexador.mapear([
1820
+ "lmht {",
1821
+ `${metodos_1.MetodosRotacionar[index]}: rotacionar-3d(1, 1, 1, 20px);`,
1822
+ "}"
1823
+ ]);
1824
+ // O Lexador não deve encontrar erros
1825
+ expect(resultadoLexador.erros).toHaveLength(0);
1826
+ // O valor recebido deve ser mapeado como METODO
1827
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1828
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
1829
+ ]));
1830
+ // Avaliador Sintático
1831
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1832
+ // Resolvedor não deve aceitar 'px' como quantificador válido
1833
+ expect(() => {
1834
+ resolvedor.resolver(resultadoAvaliadorSintatico);
1835
+ }).toThrow();
1836
+ }
1837
+ });
1838
+ it('Atribuindo Método "rotacionar-eixo-z()"', () => {
1839
+ for (let index = 0; index < metodos_1.MetodosRotacionar.length; index += 1) {
1840
+ const valoresAceitos = ['45graus', '45deg', '3.142rad', '0.1', '0', '1', '1.75'];
1841
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1842
+ // Lexador
1843
+ const resultadoLexador = lexador.mapear([
1844
+ "lmht {",
1845
+ `${metodos_1.MetodosRotacionar[index]}: rotacionar-eixo-z(${valoresAceitos[valIndex]});`,
1846
+ "}"
1847
+ ]);
1848
+ // O Lexador não deve encontrar erros
1849
+ expect(resultadoLexador.erros).toHaveLength(0);
1850
+ // O valor recebido deve ser mapeado como METODO
1851
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1852
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
1853
+ ]));
1854
+ // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
1855
+ if (valIndex <= 2) {
1856
+ expect(resultadoLexador.simbolos).toHaveLength(11);
2007
1857
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2008
- expect.objectContaining({ tipo: foles_1.default.METODO }),
1858
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1859
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
2009
1860
  ]));
2010
- // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
2011
- if (valIndex === 0 || valIndex === 1) {
2012
- expect(resultadoLexador.simbolos).toHaveLength(11);
2013
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2014
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2015
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
2016
- ]));
2017
- }
2018
- else {
2019
- expect(resultadoLexador.simbolos).toHaveLength(10);
2020
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2021
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2022
- ]));
2023
- }
2024
- // Avaliador Sintático
2025
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
2026
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
2027
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
2028
- const primeiroResultado = resultadoAvaliadorSintatico[0];
2029
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
2030
- const primeiroResultadoTipado = primeiroResultado;
2031
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
2032
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2033
- // Tradutor
2034
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
2035
- // O Tradutor deve serializar de acordo e traduzir translação-horizontal para translateX
2036
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2037
- expect(resultadoTradutor).toContain(`translateX(${valoresAceitos[valIndex]});`);
2038
1861
  }
2039
- }
2040
- });
2041
- it('Atribuindo Método "translação-vertical()"', () => {
2042
- for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
2043
- const valoresAceitos = ['42px', '3ch', '0'];
2044
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
2045
- // Lexador
2046
- const resultadoLexador = lexador.mapear([
2047
- "lmht {",
2048
- `${metodos_1.MetodosTranslacao[index]}: translação-vertical(${valoresAceitos[valIndex]});`,
2049
- "}"
2050
- ]);
2051
- // O Lexador não deve encontrar erros
2052
- expect(resultadoLexador.erros).toHaveLength(0);
2053
- // O valor recebido deve ser mapeado como METODO
1862
+ else {
1863
+ expect(resultadoLexador.simbolos).toHaveLength(10);
2054
1864
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2055
- expect.objectContaining({ tipo: foles_1.default.METODO }),
1865
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2056
1866
  ]));
2057
- // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
2058
- if (valIndex === 0 || valIndex === 1) {
2059
- expect(resultadoLexador.simbolos).toHaveLength(11);
2060
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2061
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2062
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
2063
- ]));
2064
- }
2065
- else {
2066
- expect(resultadoLexador.simbolos).toHaveLength(10);
2067
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2068
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2069
- ]));
2070
- }
2071
- // Avaliador Sintático
2072
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
2073
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
2074
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
2075
- const primeiroResultado = resultadoAvaliadorSintatico[0];
2076
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
2077
- const primeiroResultadoTipado = primeiroResultado;
2078
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
2079
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2080
- // Tradutor
2081
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
2082
- // O Tradutor deve serializar de acordo e traduzir translação-vertical para translateY
2083
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2084
- expect(resultadoTradutor).toContain(`translateY(${valoresAceitos[valIndex]});`);
1867
+ }
1868
+ // Avaliador Sintático
1869
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1870
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1871
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1872
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
1873
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1874
+ const primeiroResultadoTipado = primeiroResultado;
1875
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1876
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
1877
+ // Resolvedor
1878
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
1879
+ // O Resolvedor deve resolver de acordo e traduzir rotacionar-eixo-z para rotateZ
1880
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
1881
+ if (valIndex !== 0) {
1882
+ expect(resultadoResolvedor).toContain(`rotateZ(${valoresAceitos[valIndex]});`);
1883
+ }
1884
+ else {
1885
+ expect(resultadoResolvedor).toContain(`rotateZ(45deg);`);
2085
1886
  }
2086
1887
  }
2087
- });
2088
- it('Atribuindo Método "translacao-vertical()"', () => {
2089
- for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
2090
- const valoresAceitos = ['42px', '3ch', '0'];
2091
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
2092
- // Lexador
2093
- const resultadoLexador = lexador.mapear([
2094
- "lmht {",
2095
- `${metodos_1.MetodosTranslacao[index]}: translacao-vertical(${valoresAceitos[valIndex]});`,
2096
- "}"
2097
- ]);
2098
- // O Lexador não deve encontrar erros
2099
- expect(resultadoLexador.erros).toHaveLength(0);
2100
- // O valor recebido deve ser mapeado como METODO
1888
+ }
1889
+ });
1890
+ it('Atribuindo Método "rotacionar-horizontal()"', () => {
1891
+ for (let index = 0; index < metodos_1.MetodosRotacionar.length; index += 1) {
1892
+ const valoresAceitos = ['45graus', '45deg', '3.142rad', '0.1', '0', '1', '1.75'];
1893
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1894
+ // Lexador
1895
+ const resultadoLexador = lexador.mapear([
1896
+ "lmht {",
1897
+ `${metodos_1.MetodosRotacionar[index]}: rotacionar-horizontal(${valoresAceitos[valIndex]});`,
1898
+ "}"
1899
+ ]);
1900
+ // O Lexador não deve encontrar erros
1901
+ expect(resultadoLexador.erros).toHaveLength(0);
1902
+ // O valor recebido deve ser mapeado como METODO
1903
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1904
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
1905
+ ]));
1906
+ // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
1907
+ if (valIndex <= 2) {
1908
+ expect(resultadoLexador.simbolos).toHaveLength(11);
2101
1909
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2102
- expect.objectContaining({ tipo: foles_1.default.METODO }),
1910
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1911
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
2103
1912
  ]));
2104
- // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
2105
- if (valIndex === 0 || valIndex === 1) {
2106
- expect(resultadoLexador.simbolos).toHaveLength(11);
2107
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2108
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2109
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
2110
- ]));
2111
- }
2112
- else {
2113
- expect(resultadoLexador.simbolos).toHaveLength(10);
2114
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2115
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2116
- ]));
2117
- }
2118
- // Avaliador Sintático
2119
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
2120
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
2121
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
2122
- const primeiroResultado = resultadoAvaliadorSintatico[0];
2123
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
2124
- const primeiroResultadoTipado = primeiroResultado;
2125
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
2126
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2127
- // Tradutor
2128
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
2129
- // O Tradutor deve serializar de acordo e traduzir translação-vertical para translateY
2130
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2131
- expect(resultadoTradutor).toContain(`translateY(${valoresAceitos[valIndex]});`);
2132
1913
  }
2133
- }
2134
- });
2135
- it('Caso de Falha - Atribuindo método inexistente', () => {
2136
- for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
2137
- const valoresAceitos = ['42px', '3ch', '0'];
2138
- for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
2139
- // Lexador
2140
- const resultadoLexador = lexador.mapear([
2141
- "lmht {",
2142
- `${metodos_1.MetodosTranslacao[index]}: translacao-vertical(${valoresAceitos[valIndex]});`,
2143
- "}"
2144
- ]);
2145
- // O Lexador não deve encontrar erros
2146
- expect(resultadoLexador.erros).toHaveLength(0);
2147
- // O valor recebido deve ser mapeado como METODO
1914
+ else {
1915
+ expect(resultadoLexador.simbolos).toHaveLength(10);
2148
1916
  expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2149
- expect.objectContaining({ tipo: foles_1.default.METODO }),
1917
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2150
1918
  ]));
2151
- // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
2152
- if (valIndex === 0 || valIndex === 1) {
2153
- expect(resultadoLexador.simbolos).toHaveLength(11);
2154
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2155
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2156
- expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
2157
- ]));
2158
- }
2159
- else {
2160
- expect(resultadoLexador.simbolos).toHaveLength(10);
2161
- expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2162
- expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2163
- ]));
2164
- }
2165
- // Avaliador Sintático
2166
- const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
2167
- // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
2168
- expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
2169
- const primeiroResultado = resultadoAvaliadorSintatico[0];
2170
- expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
2171
- const primeiroResultadoTipado = primeiroResultado;
2172
- expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
2173
- expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2174
- // Tradutor
2175
- const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
2176
- // O Tradutor deve serializar de acordo e traduzir translação-vertical para translateY
2177
- expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2178
- expect(resultadoTradutor).toContain(`translateY(${valoresAceitos[valIndex]});`);
2179
1919
  }
2180
- }
2181
- });
2182
- it('Caso de Falha - Erro ao instanciar classe SeletorValor', () => {
2183
- for (let index = 0; index < metodos_1.MetodosFolEs.length; index += 1) {
2184
- const metodoIncorreto = metodos_1.MetodosFolEs[index].replace(metodos_1.MetodosFolEs[index][0], '');
2185
- expect(() => {
2186
- new seletor_valor_1.SeletorValor(metodoIncorreto, []);
2187
- }).toThrow(`O valor \'${metodoIncorreto}\' não foi encontrado.`);
2188
- }
2189
- });
1920
+ // Avaliador Sintático
1921
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1922
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1923
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1924
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
1925
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1926
+ const primeiroResultadoTipado = primeiroResultado;
1927
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1928
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
1929
+ // Resolvedor
1930
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
1931
+ // O Resolvedor deve resolver de acordo e traduzir rotacionar-horizontal para rotateX
1932
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
1933
+ if (valIndex !== 0) {
1934
+ expect(resultadoResolvedor).toContain(`rotateX(${valoresAceitos[valIndex]});`);
1935
+ }
1936
+ else {
1937
+ expect(resultadoResolvedor).toContain(`rotateX(45deg);`);
1938
+ }
1939
+ }
1940
+ }
1941
+ });
1942
+ it('Atribuindo Método "rotacionar-matiz()"', () => {
1943
+ for (let index = 0; index < metodos_1.MetodoRotacionarMatiz.length; index += 1) {
1944
+ const valoresAceitos = ['90graus', '100px', '100%', '0.1', '0', '1', '1.75'];
1945
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1946
+ // Lexador
1947
+ const resultadoLexador = lexador.mapear([
1948
+ "lmht {",
1949
+ `${metodos_1.MetodoRotacionarMatiz[index]}: rotacionar-matiz(${valoresAceitos[valIndex]});`,
1950
+ "}"
1951
+ ]);
1952
+ // O Lexador não deve encontrar erros
1953
+ expect(resultadoLexador.erros).toHaveLength(0);
1954
+ // O valor recebido deve ser mapeado como METODO
1955
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1956
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
1957
+ ]));
1958
+ // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
1959
+ if (valIndex <= 2) {
1960
+ expect(resultadoLexador.simbolos).toHaveLength(11);
1961
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1962
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1963
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
1964
+ ]));
1965
+ }
1966
+ else {
1967
+ expect(resultadoLexador.simbolos).toHaveLength(10);
1968
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
1969
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
1970
+ ]));
1971
+ }
1972
+ // Avaliador Sintático
1973
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
1974
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
1975
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
1976
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
1977
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
1978
+ const primeiroResultadoTipado = primeiroResultado;
1979
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
1980
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoRotacionarMatiz[index]]);
1981
+ // Resolvedor
1982
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
1983
+ // O Resolvedor deve resolver de acordo e traduzir rotacionar-matiz para hue-rotate
1984
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoRotacionarMatiz[index]]);
1985
+ if (valIndex !== 0) {
1986
+ expect(resultadoResolvedor).toContain(`hue-rotate(${valoresAceitos[valIndex]});`);
1987
+ }
1988
+ else {
1989
+ expect(resultadoResolvedor).toContain(`hue-rotate(90deg);`);
1990
+ }
1991
+ }
1992
+ }
1993
+ });
1994
+ it('Atribuindo Método "rotacionar-vertical()"', () => {
1995
+ for (let index = 0; index < metodos_1.MetodosRotacionar.length; index += 1) {
1996
+ const valoresAceitos = ['45graus', '45deg', '3.142rad', '0.1', '0', '1', '1.75'];
1997
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
1998
+ // Lexador
1999
+ const resultadoLexador = lexador.mapear([
2000
+ "lmht {",
2001
+ `${metodos_1.MetodosRotacionar[index]}: rotacionar-vertical(${valoresAceitos[valIndex]});`,
2002
+ "}"
2003
+ ]);
2004
+ // O Lexador não deve encontrar erros
2005
+ expect(resultadoLexador.erros).toHaveLength(0);
2006
+ // O valor recebido deve ser mapeado como METODO
2007
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2008
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
2009
+ ]));
2010
+ // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
2011
+ if (valIndex <= 2) {
2012
+ expect(resultadoLexador.simbolos).toHaveLength(11);
2013
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2014
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2015
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
2016
+ ]));
2017
+ }
2018
+ else {
2019
+ expect(resultadoLexador.simbolos).toHaveLength(10);
2020
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2021
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2022
+ ]));
2023
+ }
2024
+ // Avaliador Sintático
2025
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
2026
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
2027
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
2028
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
2029
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
2030
+ const primeiroResultadoTipado = primeiroResultado;
2031
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
2032
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
2033
+ // Resolvedor
2034
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
2035
+ // O Resolvedor deve resolver de acordo e traduzir rotacionar-vertical para rotateY
2036
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
2037
+ if (valIndex !== 0) {
2038
+ expect(resultadoResolvedor).toContain(`rotateY(${valoresAceitos[valIndex]});`);
2039
+ }
2040
+ else {
2041
+ expect(resultadoResolvedor).toContain(`rotateY(45deg);`);
2042
+ }
2043
+ }
2044
+ }
2045
+ });
2046
+ it('Atribuindo Método "saturar()"', () => {
2047
+ for (let index = 0; index < metodos_1.MetodoSaturar.length; index += 1) {
2048
+ const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
2049
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
2050
+ // Lexador
2051
+ const resultadoLexador = lexador.mapear([
2052
+ "lmht {",
2053
+ `${metodos_1.MetodoSaturar[index]}: saturar(${valoresAceitos[valIndex]});`,
2054
+ "}"
2055
+ ]);
2056
+ // O Lexador não deve encontrar erros
2057
+ expect(resultadoLexador.erros).toHaveLength(0);
2058
+ // O valor recebido deve ser mapeado como METODO
2059
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2060
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
2061
+ ]));
2062
+ // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
2063
+ if (valIndex === 0 || valIndex === 1) {
2064
+ expect(resultadoLexador.simbolos).toHaveLength(11);
2065
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2066
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2067
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
2068
+ ]));
2069
+ }
2070
+ else {
2071
+ expect(resultadoLexador.simbolos).toHaveLength(10);
2072
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2073
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2074
+ ]));
2075
+ }
2076
+ // Avaliador Sintático
2077
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
2078
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
2079
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
2080
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
2081
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
2082
+ const primeiroResultadoTipado = primeiroResultado;
2083
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
2084
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoSaturar[index]]);
2085
+ // Resolvedor
2086
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
2087
+ // O Resolvedor deve resolver de acordo e traduzir saturar para saturate
2088
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoSaturar[index]]);
2089
+ expect(resultadoResolvedor).toContain(`saturate(${valoresAceitos[valIndex]});`);
2090
+ }
2091
+ }
2092
+ });
2093
+ it('Atribuindo Método "sepia()"', () => {
2094
+ for (let index = 0; index < metodos_1.MetodoSepia.length; index += 1) {
2095
+ const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
2096
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
2097
+ // Lexador
2098
+ const resultadoLexador = lexador.mapear([
2099
+ "lmht {",
2100
+ `${metodos_1.MetodoSepia[index]}: sepia(${valoresAceitos[valIndex]});`,
2101
+ "}"
2102
+ ]);
2103
+ // O Lexador não deve encontrar erros
2104
+ expect(resultadoLexador.erros).toHaveLength(0);
2105
+ // O valor recebido deve ser mapeado como METODO
2106
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2107
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
2108
+ ]));
2109
+ // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
2110
+ if (valIndex === 0 || valIndex === 1) {
2111
+ expect(resultadoLexador.simbolos).toHaveLength(11);
2112
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2113
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2114
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
2115
+ ]));
2116
+ }
2117
+ else {
2118
+ expect(resultadoLexador.simbolos).toHaveLength(10);
2119
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2120
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2121
+ ]));
2122
+ }
2123
+ // Avaliador Sintático
2124
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
2125
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
2126
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
2127
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
2128
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
2129
+ const primeiroResultadoTipado = primeiroResultado;
2130
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
2131
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoSepia[index]]);
2132
+ // Resolvedor
2133
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
2134
+ // O Resolvedor deve resolver de acordo e traduzir sépia para sepia
2135
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoSepia[index]]);
2136
+ expect(resultadoResolvedor).toContain(`sepia(${valoresAceitos[valIndex]});`);
2137
+ }
2138
+ }
2139
+ });
2140
+ it('Atribuindo Método "translação()"', () => {
2141
+ for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
2142
+ const valoresAceitos = ['270graus', '18deg', '3.142rad', '0', '1'];
2143
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
2144
+ // Lexador
2145
+ const resultadoLexador = lexador.mapear([
2146
+ "lmht {",
2147
+ `${metodos_1.MetodosTranslacao[index]}: translação(${valoresAceitos[valIndex]});`,
2148
+ "}"
2149
+ ]);
2150
+ // O Lexador não deve encontrar erros
2151
+ expect(resultadoLexador.erros).toHaveLength(0);
2152
+ // O valor recebido deve ser mapeado como METODO
2153
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2154
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
2155
+ ]));
2156
+ // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
2157
+ if (valIndex <= 2) {
2158
+ expect(resultadoLexador.simbolos).toHaveLength(11);
2159
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2160
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2161
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
2162
+ ]));
2163
+ }
2164
+ else {
2165
+ expect(resultadoLexador.simbolos).toHaveLength(10);
2166
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2167
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2168
+ ]));
2169
+ }
2170
+ // Avaliador Sintático
2171
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
2172
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
2173
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
2174
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
2175
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
2176
+ const primeiroResultadoTipado = primeiroResultado;
2177
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
2178
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2179
+ // Resolvedor
2180
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
2181
+ // O Resolvedor deve resolver de acordo e traduzir translação para translate
2182
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2183
+ if (valIndex !== 0) {
2184
+ expect(resultadoResolvedor).toContain(`translate(${valoresAceitos[valIndex]});`);
2185
+ }
2186
+ else {
2187
+ expect(resultadoResolvedor).toContain(`translate(270deg);`);
2188
+ }
2189
+ }
2190
+ }
2191
+ });
2192
+ it('Atribuindo Método "translacao() com múltiplos valores"', () => {
2193
+ for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
2194
+ // Lexador
2195
+ const resultadoLexador = lexador.mapear([
2196
+ "lmht {",
2197
+ `${metodos_1.MetodosTranslacao[index]}: translacao(100graus, 100graus);`,
2198
+ "}"
2199
+ ]);
2200
+ // O Lexador não deve encontrar erros
2201
+ expect(resultadoLexador.erros).toHaveLength(0);
2202
+ // O valor recebido deve ser mapeado como METODO
2203
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2204
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
2205
+ ]));
2206
+ // O Lexador deve montar um objeto de comprimento 14
2207
+ expect(resultadoLexador.simbolos).toHaveLength(14);
2208
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2209
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2210
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
2211
+ ]));
2212
+ // Avaliador Sintático
2213
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
2214
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
2215
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
2216
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
2217
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
2218
+ const primeiroResultadoTipado = primeiroResultado;
2219
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
2220
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2221
+ // Resolvedor
2222
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
2223
+ // O Resolvedor deve resolver de acordo e traduzir translacao para translate
2224
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2225
+ expect(resultadoResolvedor).toContain(`translate(100deg, 100deg);`);
2226
+ }
2227
+ });
2228
+ it('Atribuindo Método "translação-3d()"', () => {
2229
+ for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
2230
+ // Lexador
2231
+ const resultadoLexador = lexador.mapear([
2232
+ "lmht {",
2233
+ `${metodos_1.MetodosTranslacao[index]}: translacao-3d(5ch, 0.4in, 5em);`,
2234
+ "}"
2235
+ ]);
2236
+ // O Lexador não deve encontrar erros
2237
+ expect(resultadoLexador.erros).toHaveLength(0);
2238
+ // O valor recebido deve ser mapeado como METODO
2239
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2240
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
2241
+ ]));
2242
+ // O Lexador deve montar um objeto de comprimento 17
2243
+ expect(resultadoLexador.simbolos).toHaveLength(17);
2244
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2245
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2246
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
2247
+ ]));
2248
+ // Avaliador Sintático
2249
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
2250
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
2251
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
2252
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
2253
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
2254
+ const primeiroResultadoTipado = primeiroResultado;
2255
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
2256
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2257
+ // Resolvedor
2258
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
2259
+ // O Resolvedor deve resolver de acordo e traduzir translação-3d para translate3d
2260
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2261
+ expect(resultadoResolvedor).toContain(`translate3d(5ch, 0.4in, 5em);`);
2262
+ }
2263
+ });
2264
+ it('Atribuindo Método "translação-3d() cobrindo todos os casos"', () => {
2265
+ for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
2266
+ const valoresAceitos = [
2267
+ '0',
2268
+ '0, 62px, 135px',
2269
+ '2.7rem, 0, 1rem',
2270
+ '5ch, 0.4in, 0',
2271
+ '0, 0, 135px',
2272
+ '0, 2.7rem, 0',
2273
+ '5ch, 0, 0',
2274
+ '42px, 62px, 135px',
2275
+ '0, 0, 0',
2276
+ ];
2277
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
2278
+ // Lexador
2279
+ const resultadoLexador = lexador.mapear([
2280
+ "lmht {",
2281
+ `${metodos_1.MetodosTranslacao[index]}: translação-3d(${valoresAceitos[valIndex]});`,
2282
+ "}"
2283
+ ]);
2284
+ // O Lexador não deve encontrar erros
2285
+ expect(resultadoLexador.erros).toHaveLength(0);
2286
+ // O valor recebido deve ser mapeado como METODO
2287
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2288
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
2289
+ ]));
2290
+ // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
2291
+ if (valIndex === 0) {
2292
+ expect(resultadoLexador.simbolos).toHaveLength(10);
2293
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2294
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2295
+ ]));
2296
+ }
2297
+ else if (valIndex === 1 || valIndex === 2 || valIndex === 3) {
2298
+ expect(resultadoLexador.simbolos).toHaveLength(16);
2299
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2300
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2301
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
2302
+ ]));
2303
+ }
2304
+ else if (valIndex === 4 || valIndex === 5 || valIndex === 6) {
2305
+ expect(resultadoLexador.simbolos).toHaveLength(15);
2306
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2307
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2308
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
2309
+ ]));
2310
+ }
2311
+ else if (valIndex === 7) {
2312
+ expect(resultadoLexador.simbolos).toHaveLength(17);
2313
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2314
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2315
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
2316
+ ]));
2317
+ }
2318
+ else {
2319
+ expect(resultadoLexador.simbolos).toHaveLength(14);
2320
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2321
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2322
+ ]));
2323
+ }
2324
+ // Avaliador Sintático
2325
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
2326
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
2327
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
2328
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
2329
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
2330
+ const primeiroResultadoTipado = primeiroResultado;
2331
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
2332
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2333
+ // Resolvedor
2334
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
2335
+ // O Resolvedor deve resolver de acordo e traduzir translação-3d para translate3d
2336
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2337
+ if (valIndex !== 8) {
2338
+ expect(resultadoResolvedor).toContain(`translate3d(${valoresAceitos[valIndex]});`);
2339
+ }
2340
+ else {
2341
+ expect(resultadoResolvedor).toContain(`translate3d(0);`);
2342
+ }
2343
+ }
2344
+ }
2345
+ });
2346
+ it('Atribuindo Método "translação-eixo-z()"', () => {
2347
+ for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
2348
+ const valoresAceitos = ['42px', '3ch', '0'];
2349
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
2350
+ // Lexador
2351
+ const resultadoLexador = lexador.mapear([
2352
+ "lmht {",
2353
+ `${metodos_1.MetodosTranslacao[index]}: translação-eixo-z(${valoresAceitos[valIndex]});`,
2354
+ "}"
2355
+ ]);
2356
+ // O Lexador não deve encontrar erros
2357
+ expect(resultadoLexador.erros).toHaveLength(0);
2358
+ // O valor recebido deve ser mapeado como METODO
2359
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2360
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
2361
+ ]));
2362
+ // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
2363
+ if (valIndex === 0 || valIndex === 1) {
2364
+ expect(resultadoLexador.simbolos).toHaveLength(11);
2365
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2366
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2367
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
2368
+ ]));
2369
+ }
2370
+ else {
2371
+ expect(resultadoLexador.simbolos).toHaveLength(10);
2372
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2373
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2374
+ ]));
2375
+ }
2376
+ // Avaliador Sintático
2377
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
2378
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
2379
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
2380
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
2381
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
2382
+ const primeiroResultadoTipado = primeiroResultado;
2383
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
2384
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2385
+ // Resolvedor
2386
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
2387
+ // O Resolvedor deve resolver de acordo e traduzir translação-eixo-z para translateZ
2388
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2389
+ expect(resultadoResolvedor).toContain(`translateZ(${valoresAceitos[valIndex]});`);
2390
+ }
2391
+ }
2392
+ });
2393
+ it('Atribuindo Método "translacao-eixo-z()"', () => {
2394
+ for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
2395
+ const valoresAceitos = ['42px', '3ch', '0'];
2396
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
2397
+ // Lexador
2398
+ const resultadoLexador = lexador.mapear([
2399
+ "lmht {",
2400
+ `${metodos_1.MetodosTranslacao[index]}: translacao-eixo-z(${valoresAceitos[valIndex]});`,
2401
+ "}"
2402
+ ]);
2403
+ // O Lexador não deve encontrar erros
2404
+ expect(resultadoLexador.erros).toHaveLength(0);
2405
+ // O valor recebido deve ser mapeado como METODO
2406
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2407
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
2408
+ ]));
2409
+ // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
2410
+ if (valIndex === 0 || valIndex === 1) {
2411
+ expect(resultadoLexador.simbolos).toHaveLength(11);
2412
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2413
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2414
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
2415
+ ]));
2416
+ }
2417
+ else {
2418
+ expect(resultadoLexador.simbolos).toHaveLength(10);
2419
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2420
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2421
+ ]));
2422
+ }
2423
+ // Avaliador Sintático
2424
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
2425
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
2426
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
2427
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
2428
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
2429
+ const primeiroResultadoTipado = primeiroResultado;
2430
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
2431
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2432
+ // Resolvedor
2433
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
2434
+ // O Resolvedor deve resolver de acordo e traduzir translacao-eixo-z para translateZ
2435
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2436
+ expect(resultadoResolvedor).toContain(`translateZ(${valoresAceitos[valIndex]});`);
2437
+ }
2438
+ }
2439
+ });
2440
+ it('Atribuindo Método "translação-horizontal()"', () => {
2441
+ for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
2442
+ const valoresAceitos = ['42px', '3ch', '0'];
2443
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
2444
+ // Lexador
2445
+ const resultadoLexador = lexador.mapear([
2446
+ "lmht {",
2447
+ `${metodos_1.MetodosTranslacao[index]}: translação-horizontal(${valoresAceitos[valIndex]});`,
2448
+ "}"
2449
+ ]);
2450
+ // O Lexador não deve encontrar erros
2451
+ expect(resultadoLexador.erros).toHaveLength(0);
2452
+ // O valor recebido deve ser mapeado como METODO
2453
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2454
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
2455
+ ]));
2456
+ // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
2457
+ if (valIndex === 0 || valIndex === 1) {
2458
+ expect(resultadoLexador.simbolos).toHaveLength(11);
2459
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2460
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2461
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
2462
+ ]));
2463
+ }
2464
+ else {
2465
+ expect(resultadoLexador.simbolos).toHaveLength(10);
2466
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2467
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2468
+ ]));
2469
+ }
2470
+ // Avaliador Sintático
2471
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
2472
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
2473
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
2474
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
2475
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
2476
+ const primeiroResultadoTipado = primeiroResultado;
2477
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
2478
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2479
+ // Resolvedor
2480
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
2481
+ // O Resolvedor deve resolver de acordo e traduzir translação-horizontal para translateX
2482
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2483
+ expect(resultadoResolvedor).toContain(`translateX(${valoresAceitos[valIndex]});`);
2484
+ }
2485
+ }
2486
+ });
2487
+ it('Atribuindo Método "translacao-horizontal()"', () => {
2488
+ for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
2489
+ const valoresAceitos = ['42px', '3ch', '0'];
2490
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
2491
+ // Lexador
2492
+ const resultadoLexador = lexador.mapear([
2493
+ "lmht {",
2494
+ `${metodos_1.MetodosTranslacao[index]}: translacao-horizontal(${valoresAceitos[valIndex]});`,
2495
+ "}"
2496
+ ]);
2497
+ // O Lexador não deve encontrar erros
2498
+ expect(resultadoLexador.erros).toHaveLength(0);
2499
+ // O valor recebido deve ser mapeado como METODO
2500
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2501
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
2502
+ ]));
2503
+ // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
2504
+ if (valIndex === 0 || valIndex === 1) {
2505
+ expect(resultadoLexador.simbolos).toHaveLength(11);
2506
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2507
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2508
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
2509
+ ]));
2510
+ }
2511
+ else {
2512
+ expect(resultadoLexador.simbolos).toHaveLength(10);
2513
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2514
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2515
+ ]));
2516
+ }
2517
+ // Avaliador Sintático
2518
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
2519
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
2520
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
2521
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
2522
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
2523
+ const primeiroResultadoTipado = primeiroResultado;
2524
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
2525
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2526
+ // Resolvedor
2527
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
2528
+ // O Resolvedor deve resolver de acordo e traduzir translação-horizontal para translateX
2529
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2530
+ expect(resultadoResolvedor).toContain(`translateX(${valoresAceitos[valIndex]});`);
2531
+ }
2532
+ }
2533
+ });
2534
+ it('Atribuindo Método "translação-vertical()"', () => {
2535
+ for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
2536
+ const valoresAceitos = ['42px', '3ch', '0'];
2537
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
2538
+ // Lexador
2539
+ const resultadoLexador = lexador.mapear([
2540
+ "lmht {",
2541
+ `${metodos_1.MetodosTranslacao[index]}: translação-vertical(${valoresAceitos[valIndex]});`,
2542
+ "}"
2543
+ ]);
2544
+ // O Lexador não deve encontrar erros
2545
+ expect(resultadoLexador.erros).toHaveLength(0);
2546
+ // O valor recebido deve ser mapeado como METODO
2547
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2548
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
2549
+ ]));
2550
+ // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
2551
+ if (valIndex === 0 || valIndex === 1) {
2552
+ expect(resultadoLexador.simbolos).toHaveLength(11);
2553
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2554
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2555
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
2556
+ ]));
2557
+ }
2558
+ else {
2559
+ expect(resultadoLexador.simbolos).toHaveLength(10);
2560
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2561
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2562
+ ]));
2563
+ }
2564
+ // Avaliador Sintático
2565
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
2566
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
2567
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
2568
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
2569
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
2570
+ const primeiroResultadoTipado = primeiroResultado;
2571
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
2572
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2573
+ // Resolvedor
2574
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
2575
+ // O Resolvedor deve resolver de acordo e traduzir translação-vertical para translateY
2576
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2577
+ expect(resultadoResolvedor).toContain(`translateY(${valoresAceitos[valIndex]});`);
2578
+ }
2579
+ }
2580
+ });
2581
+ it('Atribuindo Método "translacao-vertical"', () => {
2582
+ for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
2583
+ const valoresAceitos = ['42px', '3ch', '0'];
2584
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
2585
+ // Lexador
2586
+ const resultadoLexador = lexador.mapear([
2587
+ "lmht {",
2588
+ `${metodos_1.MetodosTranslacao[index]}: translacao-vertical(${valoresAceitos[valIndex]});`,
2589
+ "}"
2590
+ ]);
2591
+ // O Lexador não deve encontrar erros
2592
+ expect(resultadoLexador.erros).toHaveLength(0);
2593
+ // O valor recebido deve ser mapeado como METODO
2594
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2595
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
2596
+ ]));
2597
+ // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
2598
+ if (valIndex === 0 || valIndex === 1) {
2599
+ expect(resultadoLexador.simbolos).toHaveLength(11);
2600
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2601
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2602
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
2603
+ ]));
2604
+ }
2605
+ else {
2606
+ expect(resultadoLexador.simbolos).toHaveLength(10);
2607
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2608
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2609
+ ]));
2610
+ }
2611
+ // Avaliador Sintático
2612
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
2613
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
2614
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
2615
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
2616
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
2617
+ const primeiroResultadoTipado = primeiroResultado;
2618
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
2619
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2620
+ // Resolvedor
2621
+ const resultadoResolucao = resolvedor.resolver(resultadoAvaliadorSintatico);
2622
+ // O Resolvedor deve resolver de acordo e traduzir translação-vertical para translateY
2623
+ expect(resultadoResolucao).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2624
+ expect(resultadoResolucao).toContain(`translateY(${valoresAceitos[valIndex]});`);
2625
+ }
2626
+ }
2627
+ });
2628
+ it('Atribuindo Método "variar-caractere()" - caso de sucesso', () => {
2629
+ const valoresAceitos = ['1', '2', '12', '20'];
2630
+ for (let index = 0; index < valoresAceitos.length; index += 1) {
2631
+ // Lexador
2632
+ const resultadoLexador = lexador.mapear([
2633
+ "lmht {",
2634
+ `variacao-fonte-alternativa: variar-caractere(${valoresAceitos[index]});`,
2635
+ "}"
2636
+ ]);
2637
+ // O Lexador não deve encontrar erros
2638
+ expect(resultadoLexador.erros).toHaveLength(0);
2639
+ // O valor recebido deve ser mapeado como METODO
2640
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2641
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
2642
+ ]));
2643
+ // O Lexador deve montar um objeto de comprimento 10, incluindo mapeamento de valores numéricos
2644
+ expect(resultadoLexador.simbolos).toHaveLength(10);
2645
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2646
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2647
+ ]));
2648
+ // Avaliador Sintático
2649
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
2650
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
2651
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
2652
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
2653
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
2654
+ const primeiroResultadoTipado = primeiroResultado;
2655
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
2656
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual('font-variant-alternates');
2657
+ // Resolvedor
2658
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
2659
+ // O Resolvedor deve resolver de acordo e traduzir variar-caractere para character-variant
2660
+ expect(resultadoResolvedor).toContain('font-variant-alternates');
2661
+ expect(resultadoResolvedor).toContain(`character-variant(${valoresAceitos[index]});`);
2662
+ }
2663
+ });
2664
+ it('Atribuindo Método "variar-caractere()" - caso de falha', () => {
2665
+ const valoresAceitos = ['0', '210', '100'];
2666
+ for (let index = 0; index < valoresAceitos.length; index += 1) {
2667
+ // Lexador
2668
+ const resultadoLexador = lexador.mapear([
2669
+ "lmht {",
2670
+ `variacao-fonte-alternativa: variar-caractere(${valoresAceitos[index]});`,
2671
+ "}"
2672
+ ]);
2673
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
2674
+ expect(() => {
2675
+ resolvedor.resolver(resultadoAvaliadorSintatico);
2676
+ }).toThrow('O valor da função variar-caractere() deve estar entre 1 e 99');
2677
+ }
2678
+ });
2679
+ it('Caso de Falha - Atribuindo método inexistente', () => {
2680
+ for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
2681
+ const valoresAceitos = ['42px', '3ch', '0'];
2682
+ for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
2683
+ // Lexador
2684
+ const resultadoLexador = lexador.mapear([
2685
+ "lmht {",
2686
+ `${metodos_1.MetodosTranslacao[index]}: translacao-vertical(${valoresAceitos[valIndex]});`,
2687
+ "}"
2688
+ ]);
2689
+ // O Lexador não deve encontrar erros
2690
+ expect(resultadoLexador.erros).toHaveLength(0);
2691
+ // O valor recebido deve ser mapeado como METODO
2692
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2693
+ expect.objectContaining({ tipo: foles_1.default.METODO }),
2694
+ ]));
2695
+ // O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
2696
+ if (valIndex === 0 || valIndex === 1) {
2697
+ expect(resultadoLexador.simbolos).toHaveLength(11);
2698
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2699
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2700
+ expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
2701
+ ]));
2702
+ }
2703
+ else {
2704
+ expect(resultadoLexador.simbolos).toHaveLength(10);
2705
+ expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
2706
+ expect.objectContaining({ tipo: foles_1.default.NUMERO }),
2707
+ ]));
2708
+ }
2709
+ // Avaliador Sintático
2710
+ const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
2711
+ // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
2712
+ expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
2713
+ const primeiroResultado = resultadoAvaliadorSintatico[0];
2714
+ expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
2715
+ const primeiroResultadoTipado = primeiroResultado;
2716
+ expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
2717
+ expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2718
+ // Resolvedor
2719
+ const resultadoResolvedor = resolvedor.resolver(resultadoAvaliadorSintatico);
2720
+ // O Resolvedor deve resolver de acordo e traduzir translação-vertical para translateY
2721
+ expect(resultadoResolvedor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
2722
+ expect(resultadoResolvedor).toContain(`translateY(${valoresAceitos[valIndex]});`);
2723
+ }
2724
+ }
2725
+ });
2726
+ it('Caso de Falha - Erro ao instanciar classe SeletorValor', () => {
2727
+ for (let index = 0; index < metodos_1.MetodosFolEs.length; index += 1) {
2728
+ const metodoIncorreto = metodos_1.MetodosFolEs[index].replace(metodos_1.MetodosFolEs[index][0], '');
2729
+ expect(() => {
2730
+ new seletor_valor_1.SeletorValor(metodoIncorreto, []);
2731
+ }).toThrow(`O valor \'${metodoIncorreto}\' não foi encontrado.`);
2732
+ }
2190
2733
  });
2191
2734
  });
2192
2735
  //# sourceMappingURL=metodos.test.js.map