Skip to content

Commit d5427c1

Browse files
committed
- Updates documentation and translate it to English.
- General refactoring. - Includes configurations to deploy the project to Maven Central. - Adds maven-license-plugin to include copyright notice at top of java files. - Adds new badges to README.md
1 parent 93917c2 commit d5427c1

File tree

16 files changed

+1191
-557
lines changed

16 files changed

+1191
-557
lines changed

.gitignore

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
1+
*.iml
2+
*.ipr
3+
*.iws
14
*.jar
25
*.class
36
.classpath
47
.settings/
58
/bin/
6-
/target/
9+
/target/
10+
lua-sample-app/highlights.lua
11+
lua-sample-app/products.lua

COPYRIGHT

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
Xml2Lua: Converts XML files to Lua format.
2+
Copyright (C) 2011-2016 Manoel Campos da Silva Filho (http://manoelcampos.com)
3+
4+
This file is part of Xml2Lua.
5+
6+
Xml2Lua is free software: you can redistribute it and/or modify
7+
it under the terms of the GNU General Public License as published by
8+
the Free Software Foundation, either version 3 of the License, or
9+
(at your option) any later version.
10+
11+
Xml2Lua is distributed in the hope that it will be useful,
12+
but WITHOUT ANY WARRANTY; without even the implied warranty of
13+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14+
GNU General Public License for more details.
15+
16+
You should have received a copy of the GNU General Public License
17+
along with Xml2Lua. If not, see <http://www.gnu.org/licenses/>.

LICENSE

Lines changed: 674 additions & 361 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
Introducão [![Build Status](https://travis-ci.org/manoelcampos/Xml2Lua.png?branch=master)](https://travis-ci.org/manoelcampos/Xml2Lua)
2-
----------
1+
# Introducão [![Build Status](https://travis-ci.org/manoelcampos/JavaXml2Lua.png?branch=master)](https://travis-ci.org/manoelcampos/JavaXml2Lua) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.manoelcampos/xml2lua/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.manoelcampos/xml2lua) [![Javadocs](https://www.javadoc.io/badge/com.manoelcampos/xml2lua.svg)](https://www.javadoc.io/doc/com.manoelcampos/xml2lua) [![GPL licensed](https://img.shields.io/badge/license-GPL-blue.svg)](http://www.gnu.org/licenses/gpl-3.0)
2+
33

44
XML é um padrão internacional da W3C para intercâmbio de dados, amplamente utilizado e conhecido. Tal formato permite a troca de dados entre sistemas heterogêneos, garantindo a interoperabilidade entre os mesmos. No entanto, em aplicações interativas para o Sistema Brasileiro de TV Digital, desenvolvidas em NCL e Lua, tem-se uma alternativa bem mais simples que o uso de arquivos XML para a representação, armazenamento e troca de dados: os arquivos de dados em formato Lua, como já mostrei [neste post](http://manoelcampos.com/2010/06/08/aplicacao-de-tv-digital-usando-arquivos-de-dados-em-lua/).
55

@@ -8,8 +8,7 @@ O uso de tais arquivos traz vários benefícios como: tamanho menor (menos bytes
88
Por demandar uma capacidade mínima de processamento, o uso de arquivos de dados em formato Lua é ideal para ambientes de recursos de hardware restritos como os equipamentos de recepção de TV Digital, além de simplificar o código da aplicação para a manipulação de tais dados.
99

1010

11-
O problema
12-
----------
11+
# O problema
1312

1413
O uso de arquivos XML em aplicações NCL/Lua para a TVD (enviadas via broadcast) é perfeitamente possível desde que tenha-se um parser escrito inteiramente em Lua, como o [LuaXML](https://github.com/manoelcampos/LuaXML) (veja o [Leitor de RSS em NCLua](https://github.com/manoelcampos/NCLuaRSS-Reader)). Tal parser converte um arquivo XML para uma tabela Lua, armazenando a mesma em RAM. Desta forma, a manipulação dos dados fica mais fácil. No link anterior existe uma versão do parser, adaptada por mim, que funciona com Lua 5 (a versão utilizada no subsistema Ginga-NCL do middleware Ginga).
1514

@@ -20,23 +19,19 @@ Apesar de ser possível a atualização do middleware, sabemos que nem todos os
2019
Desta forma, usar arquivos XML localmente não garante que a aplicação executará em qualquer implementação de Ginga.
2120

2221

23-
A solução: Xml2Lua
24-
------------------
25-
22+
# A solução: Xml2Lua
2623

2724
Para resolver tal problema, estou disponibilizando uma aplicação console em Java para converter um arquivo XML para o formato Lua. A aplicação utiliza o parser DOM (que se não estou errado é padrão no JDK e JRE) para percorrer os elementos do arquivo XML e assim poder gerar um arquivo Lua com os dados contidos no primeiro.
2825

2926
Para tal conversão, poderia ser utilizada qualquer linguagem de programação, até mesmo Lua, com uso do [LuaXML](https://github.com/manoelcampos/LuaXML) (para fazer o parse do XML) e o [table.save](http://lua-users.org/wiki/SaveTableToFile) (para salvar a tabela Lua, gerada a partir do XML, em disco). No entanto, o arquivo lua gerado com o table.save não ficou muito organizado e incluiu muito lixo, dificultando a manipulação dos dados. Por este motivo, resolvi implementar a ferramenta em Java.
3027

3128
A implementação realizada está disponível no final do artigo, juntamente com toda a documentação e código fonte.  Ela possui uma ferramenta de linha de comando (para ser usada antes de enviar a aplicação NCL/Lua via broadcast) para fazer a conversão do XML para Lua. Além disto, existe também uma classe Java que pode ser usada em qualquer outra aplicação (Desktop ou Web), permitindo a integração de tal implementação em sistemas já existentes, para, por exemplo, automatizar a conversão dos arquivos XML para Lua, para assim poderem ser enviados pelo carrossel para transmissão em broadcast.
3229

33-
Documentação
34-
------------
30+
# Documentação
3531

3632
A documentação da API está [disponível online aqui](http://manoelcampos.github.io/Xml2Lua/apidocs).
3733

38-
Usando a ferramenta
39-
-------------------
34+
# Usando a ferramenta
4035

4136
Para usar a ferramenta de linha de comando, basta executar em um terminal:
4237

@@ -46,12 +41,11 @@ java -jar xml2lua.jar NomeArquivoXML
4641

4742
Note que deve-se informar o nome de um arquivo XML. A aplicação gerará um arquivo Lua de mesmo nome, dentro do diretório atual.
4843

49-
Estudo de caso
50-
--------------
44+
# Estudo de caso
5145

5246
Para exemplificar o uso da ferramenta, vamos imaginar que temos uma aplicação NCL/Lua de uma loja virtual, que precisa exibir uma lista de produtos na tela. As informações de tais produtos estão em um arquivo XML que será convertido para um arquivo Lua.
5347

54-
Para isto, usaremos um arquivo de nome produtos.xml, com o conteúdo a seguir. Todos os arquivos XML e o código do exemplo apresentado aqui está disponível na pasta [exemplo](exemplo).
48+
Para isto, usaremos um arquivo de nome produtos.xml, com o conteúdo a seguir. Todos os arquivos XML e o código do exemplo apresentado aqui está disponível na pasta [lua-sample-app](lua-sample-app).
5549

5650
```xml
5751
<produtos>
@@ -153,7 +147,6 @@ A partir de um for em tal tabela, pegando-se o valor do campo id, pode-se acessa
153147

154148
## Código da aplicação Lua
155149

156-
157150
Após terem sido convertidos os arquivos produtos.xml e destaques.xml para Lua, podemos ter uma aplicação Lua  para carregar tais arquivos Lua e exibir os dados, como pode ser visto no trecho de código a seguir. A aplicação não possui interface gráfica pois isto está fora do escopo do artigo. Ela apenas exibe os dados no terminal. Tal código está disponível no arquivo app.lua, no pacote para download.
158151

159152
```lua
@@ -176,8 +169,7 @@ lua app.lua
176169
```
177170

178171

179-
Conclusão
180-
---------
172+
# Conclusão
181173

182174
Como as aplicações de TVD (por exemplo, as de comércio eletrônico) podem ser apenas uma nova interface gráfica para sistemas já existentes que usam XML, WebServices e outras tecnologias como a base da arquitetura destes, implementar a geração de arquivos de dados Lua em tais arquiteturas pode ser algo trabalhoso.
183175

exemplo/app.lua

Lines changed: 0 additions & 13 deletions
This file was deleted.

exemplo/converter.sh

Lines changed: 0 additions & 10 deletions
This file was deleted.

exemplo/destaques.xml

Lines changed: 0 additions & 5 deletions
This file was deleted.

exemplo/produtos.xml

Lines changed: 0 additions & 1 deletion
This file was deleted.

lua-sample-app/README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Sample Lua Application
2+
3+
This directory contains a sample lua application which prints the data inside the Lua files generated from the XML files,
4+
using the Java Xml2Lua tool.
5+
6+
The following files are available:
7+
8+
- converter.sh: a script which converts the XML files into the current directory to Lua files, so that they can be used by the app.lua application.
9+
- products.xml and highlights.xml: sample XML files to be converted to Lua files.
10+
- app.lua: Lua application which prints the data inside the Lua files generated from the XML files.

lua-sample-app/app.lua

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/usr/bin/env lua
2+
3+
---Application which loads some lua files converted from XML files using the Java Xml2Lua tool.
4+
--@author Manoel Campos da Silva Filho - http://manoelcampos.com
5+
print "\nNOTE: Run the converter.sh script to generate the products.lua and highlights.lua from the respective XML files.\n"
6+
local products = dofile("products.lua")
7+
local highlights = dofile("highlights.lua")
8+
9+
local prod = {}
10+
for i, highlight in pairs(highlights) do
11+
prod = products[highlight.id]
12+
print("Id: ", dest.id, "Brand:", prod.branc, "Price:", prod.price, "Description:", prod.description)
13+
end

0 commit comments

Comments
 (0)