UNPKG

@designliquido/foles

Version:

Linguagem de folhas de estilo para documentos em geral em português

55 lines 2.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validarIdentificacaoPersonalizada = validarIdentificacaoPersonalizada; const valores_1 = require("../../valores"); const metodo_css_1 = require("../../valores/metodos/css/metodo-css"); const metodo_1 = require("../../valores/metodos/foles/metodo"); function validarIdentificacaoPersonalizada(nomePropriedade, valor, valoresAceitos = undefined) { let valorModificador; if (valor instanceof valores_1.ValorTexto) { valorModificador = valor.literalTexto; valorModificador = valorModificador.replace(/^["']|["']$/g, ''); } if (valor instanceof valores_1.ValorQualitativo) { valorModificador = valor.qualitativo; } else if (valor instanceof metodo_1.Metodo || valor instanceof metodo_css_1.MetodoCss) { valorModificador = valor.constructor.name.toLowerCase(); } else { valorModificador = valor; } // Regex para um identificador CSS válido const validarIdentificador = /^-?[_a-zA-Z][-_a-zA-Z0-9]*$/; // Listagem de valores globais (não permitidos) const valoresGlobais = [ 'herdar', 'inicial', 'reverter', 'reverter-camada', 'desarmar', ]; let listaValoresAceitos = []; if (valoresAceitos) { listaValoresAceitos = Object.keys(valoresAceitos); } // Validações de um valor <custom-indent> válido const validacoesIdentificador = typeof valorModificador === "string" && validarIdentificador.test(valorModificador) && !(listaValoresAceitos.includes(valorModificador)) && !(valoresGlobais.includes(valorModificador)) && !(valorModificador.startsWith("--")); // Retorna erro caso não passe nas validações acima if (!(validacoesIdentificador)) { throw new Error(`Modificador ou variável '${nomePropriedade}' com valor personalizado ${valorModificador} inválido. O valor deve seguir as regras de sintaxe de uma identificação personalizada (<custom-indent>).`); } } /** Regras principais para um <custom-ident> válido: - Não pode ser um valor global (herdar, inicial, reverter) - Não pode começar com um dígito. - Não pode começar com --. - Pode conter letras, números, traços e sublinhados. - Pode começar com - ou _. */ //# sourceMappingURL=identificacao-personalizada.js.map