Campos tipados
text, textarea, number, checkbox, radio, select, date e hidden. Campos visíveis exigem label.
jcem.pro/sitemath
SiteMath cria campos, cálculos e reações no navegador sem executar JavaScript arbitrário. O conteúdo permanece semântico e a detecção no build só carrega o runtime quando há um bloco válido.
Primeiros passos
Inclua o arquivo distribuído e use o tipo HTML exato text/x-sitemath. Em Markdown, use uma cerca de código com a linguagem exata sitemath.
dist/sitemath.js.SiteMath.mount(document).<script src="dist/sitemath.js"></script>
<script type="text/x-sitemath">
field quantidade: number = {
label: "Quantidade", value: 1, min: 1
};
field total: number = { label: "Total", readonly: true };
on.change([quantidade], () => { total = quantidade * 12; });
</script>
<script>SiteMath.mount(document);</script>
A linguagem
text, textarea, number, checkbox, radio, select, date e hidden. Campos visíveis exigem label.
placeholder só é válido em texto; tip é associado via acessibilidade e não substitui rótulos ou erros.
Eventos on.init, on.change, on.submit e on.error; condições, for C++ e for...of limit().
SiteMath.configure({
maxIterations: 500,
onNotify: ({ level, message }) => console.info(level, message)
});Segurança por construção
eval, sem rede, sem acesso livre ao DOM.Cada ação é enfileirada por instância e possui orçamento próprio de iterações. Exceder o limite interrompe apenas a ação atual e produz diagnóstico estruturado.
Integração de build
O adaptador Node examina HTML ou Markdown sem executar os blocos. Ele aceita somente os identificadores canônicos e a estrutura sintaticamente válida.
const adapter = require("@jeancarloem/sitemath").createNodeAdapter();
const result = adapter.detectMarkdown(markdown);
if (result.valid > 0) includeRuntime();Desenvolvimento
npm run checknpm run test:targetsnpm run release:publish 1.2.3