Skip to content

Latest commit

 

History

History
116 lines (75 loc) · 3.89 KB

File metadata and controls

116 lines (75 loc) · 3.89 KB

DSLX - Davi System Lua-XML

Um interpretador JSX-like para Lua.

Warning

Projeto experimental. APIs podem mudar sem aviso.

sumário

sobre o que se trata o DSLX?

DSLX (ou Davi System: Lua XML) é um módulo que fornece ao Lua a capacidade de interpretar arquivos .dslx no qual permite ler código Lua e transformar o XML em Lua puro num mesmo arquivo e depois executa, parecido com o JSX.

    graph TD;
        A("codígo em DSLX") --> B("interpreta o lua");
        A --> C("interpreta o XML");
        C --> D("Transforma em Lua");
        D --> E("junta os dois")
        B --> E
        E --> F("executa")


Loading

qual é o objetivo?

Fazer uma linguagem JSX-like para Lua, com a melhor eficiência, performance, dentro do que for possível, focando em Lua puro.

status do projeto

O projeto está em estado experimental, mesmo com uma base da estrutura bem sólida, muitas APIs e muitos conceitos podem mudar a qualquer momento. E bugs são esperados.

como funciona?

sintaxe

No .dslx qualquer função definida no ambiente do Lua pode ser chamada no formato do XML.

-- definindo em Lua
function teste(props)
    local arg1, children = props.arg1, props.children
    
    return arg1 + (children or 0)
end

-- chamando em XML
local res = <teste arg1={1}> {2} </teste>;
print(res) -- isso retornará para o usuário: 3 

-- chamando self-close
print(<teste arg1={2}/>) -- isso mostra pro usuário: 2

importação dos .dslx através do require

Quando seu projeto importa o módulo do DSLX ele carrega o loader do DSLX, sobrepondo o require no ambiente no qual foi importado, permitindo importar o .dslx da mesma forma do .lua

o que DSLX não é

  • não é html, html é uma linguagem web para criação de páginas, o DSLX é um Lua+XML. e XML é uma linguagem de estruturação rígida para sistemas.

  • não é um substituto do Lua, o DSLX é para funcionar em conjunto ao Lua

porque surgiu?

eu estava afim de desenvolver ferramentas Lua separadas para criar uma framework web na mesma pegada do next.js e react. para isso pensei primeiro em criar um JSX-like so que Lua. comecei pincelando a ideia manualmente e depois fui pedindo ajuda ao copilot. caso queira da uma olhada como ta o processo de criação da framework: Pudimweb

licença

Esse módulo é MIT. Sinta-se livre para brincar e fazer o que quiser a sua fork desse projeto, mantendo os créditos :)

Como posso contribuir

Qualquer um pode contribuir com o projeto. Ao encontrar qualquer problema/bug ou se tiver alguma ideia de implementação, pode abrir uma issue para relatar o problema ou fazer um fork com sua implementação.

Créditos e referências

Criado e mantido por Davi Passos.

versão em inglês joão victor

Inspirado em JSX pela Meta.

contribuintes

ferramentas de IA utilizados

  • chatgpt (5, 5.1 e 5.1-codex)
  • claude 4.5 (opus e sonnet)
  • gemini 3.0 pro