@designliquido/foles
Version:
Linguagem de folhas de estilo para documentos em geral em português
55 lines • 2.41 kB
JavaScript
;
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