File: index.html

package info (click to toggle)
lua-orbit 2.1.0%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 1,908 kB
  • ctags: 543
  • sloc: sql: 56; sh: 32; makefile: 28; xml: 20
file content (209 lines) | stat: -rw-r--r-- 7,335 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<title>Orbit</title>
    <link rel="stylesheet" href="http://www.keplerproject.org/doc.css" type="text/css"/>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>

<body>

<div id="container">

<div id="product">

	<div id="product_logo">
        <a href="http://www.keplerproject.org">
		<img alt="Orbit" src="orbit.png"/>
	    </a>
    </div>
	<div id="product_name"><big><strong>Orbit</strong></big></div>
	<div id="product_description">MVC desenvolvimento Web em Lua</div>
</div> <!-- id="product" -->

<div id="main">
	
<div id="navigation">
<h1>Orbit</h1>
	<ul>

		<li><strong>Home</strong>
			<ul> 
                            
			</ul>
		</li>

		<li><a href="pages.html">Pages</a>
			<ul> 
                            
			</ul>
		</li>

		<li><a href="reference.html">Referência</a>
			<ul> 
                            
			</ul>
		</li>

		<li><a href="example.html">Tutorial</a>
			<ul> 
                            
			</ul>
		</li>

		<li><a href="license.html">Licença</a>
			<ul> 
                            
			</ul>
		</li>

	</ul>
</div> <!-- id="navigation" -->

<div id="content">


<h2>Apresentação</h2>

<p>O Orbit é um framework MVC web para a linguagem Lua. O design é ispirado por framework leves em Ruby como o <a href="http://code.whytheluckystiff.net/camping/">Camping</a>. Abandona completamente o modelo atual de CGILua que usa "scripts" em favor de aplicações, onde cada aplicação do Orbit pode caber em um único arquivo, mas se você quiser, pode dividi-lo em múltiplos arquivos. Todos os aplicativos do Orbit seguem o protocolo <a href="http://wsapi.luaforge.net">WSAPI</a>, por tanto atualmente trabalha com Xavante, CGI e Fastcgi. Isto inclui um disparador que torna mais fácil iniciar uma instância do Xavante para o desenvolvimento. </p>

<h2>Histórico</h2>

<ul>
    <li><p>Versão 2.0.1: consertado o bug na função redirect nas Orbit pages (agradecimentos a Ignacio Burgueño por ter encontrado o bug )</p></li>
    <li><p>Versão 2.0: Revisão completa do Orbit</p></li>
    <li><p>Versão 1.0: Versão inicial, obsoleta</p></li>
</ul>

<h2>Hello World</h2>

<p>Segue uma aplicação muito simples do Orbit:</p>


<pre>
#!/usr/bin/env wsapi.cgi

require"orbit"

-- As aplicações do Orbit normalmente são módulos,
-- o orbit.new faz as inicializações necessárias

module("hello", package.seeall, orbit.new)

-- Esses são os controladores, cada um recebe um objeto web correspondente 
-- ao request/response, mais qualquer capturas extras dos
-- padrões de dispatch. O controlador envia qualquer cabeçalho extra e/ou
-- o status, caso não seja 200, então retona a resposta. 
-- É recomendado delegar a geração das respostas para um função
-- de visualização.

function index(web)
return render_index()
end

function say(web, name)
return render_say(web, name)
end

-- Constrói a tabela de dispatch das aplicações, você pode 
-- passar multiplos padrões, e todas as capturas são repassadas 
-- ao controlador

hello:dispatch_get(index, "/", "/index")
hello:dispatch_get(say, "/say/(%a+)")

-- Essas são funções de visualização as quais os controladores fazem refência.
-- orbit.htmlify percorre as funções na tabela passada como primeiro parâmetro
-- e tenta combinar seus nomes com os padrões passados (usando um ^ e um $
-- implícitos ao redor do padrão). Cada função que corresponde ao padrão recebe
-- um ambiente onde funções de geração de HTML são geradas por demanda.
-- Estas funções aceitam nil (tags vazias), uma string (texto presente entre
-- a tag de abertura e a de fechamento), ou uma tabela com atributos e uma lista
-- de strings que correspondem ao texto. A indexação das funções adiciona um atributo
-- de classe ao tag. Funções são cacheadas.

-- Função de apoio para as partes comuns de uma página

function render_layout(inner_html)
return html{
head{ title"Hello" },
body{ inner_html }
}
end

function render_hello()
return p.hello"Hello World!"
end
function render_index()
return render_layout(render_hello())
end

function render_say(web, name)
return render_layout(render_hello() .. 
p.hello((web.input.greeting or "Hello ") .. name .. "!"))
end

orbit.htmlify(hello, "render_.+")

return _M
</pre>


<p>O exemplo utiliza a geração de HTML nativa do Orbit, mas sinta-se a vontade para utilizar qualquer método de geração de HTML. 
Por exemplo, um dos exemplos de aplicação do Orbit utiliza a biblioteca de template <a href="http://cosmo.luaforge.net">Cosmo</a></p>

<h2>Mapeamento OR</h2>

<p>O Orbit inclui um mapeador objeto-relacional básico que no momento funciona somente com  drivers
SQLite3 e MySQL do <a href="http://luaforge.net/projects/luasql">LuaSQL's</a>. O mapeador fornece um método dinâmico de busca 'como o ActiveRecord de Rails (find_by_field1_and_field2{val1, val2}), bem como templates para condições (find_by("field1 = ? or field1 = ?", { val1, val2 })). A aplicação de exemplo utiliza esse mapeador.</p>

<p>Um bom efeito collateral do modelo de aplicação do Orbit é que nós conseguimos um "console de aplicações" de graça. No caso do blog, por exemplo, podemos adicionar uma nova postagem usando:</p>


<pre>
$ lua -l luarocks.require -i blog.lua
> p = blog.posts:new()
> p.title = "Novo post"
> p.body = "Este é um novo post. Use *Markdown* se preferir."
> p.published_at = os.time()
> p:save()
</pre>


<p>Você também pode atualizar ou deletar qualquer itens do modelo direto do seu console, bastanto obte-los do banco de dados, mudar o que você quer e chamar <code>save()</code>(ou <code>delete()</code> se você quiser remove-lo).</p>

<h2>Download e instalação</h2>

<p>A forma mais fácil de baixar e instalar o Orbit é atraves do <a href="http://luarocks.org">LuaRocks</a>. Você pode instalar o Orbit com o simples comando <code>luarocks install orbit</code> Vá para o path onde o LuaRocks coloca o Orbit para ver as aplicações e esta documentação. O Luarocks obtem e instala qualquer qualquer dependência que você ainda não tenha.</p>

<p>Você também pode obter o Orbit no site do <a href="http://luaforge.net/projects/orbit">LuaForge</a>. A instalação em sistemas Unix e similares é "configure &amp;&amp; make &amp;&amp; make install", mas você pode ter que instalar algumas dependências sozinho (como o WSAPI e o Xavante).</p>

<h2>Créditos</h2>

<p>O Orbit foi projetado e desenvolvido por Fabio Mascarenhas and André Carregal e é mantido por Fabio Mascarenhas. Orbit foi patrocinado pela Fábrica Digital, FINEP e SEBRAE</p>

<h2>Fale conosco</h2>

<p>Para maiores informações, por favor [fale conosco] (mailto:info-NO-SPAM-THANKS@keplerproject.org). Comentários são bem-vindos.</p>

<p>Você também pode nos contactar e a outros desenvolvedores e usuários na <a href="http://luaforge.net/mail/?group_id=104">lista de discussão</a> do projeto Kepler.</p>





</div> <!-- id="content" -->

</div> <!-- id="main" -->

<div id="about">
	<p><a href="http://validator.w3.org/check?uri=referer">Valid XHTML 1.0!</a></p>
</div> <!-- id="about" -->

</div> <!-- id="container" -->

</body>
</html>