Escolar Documentos
Profissional Documentos
Cultura Documentos
...in files
~/items>
ls
-1
show.*erb
show.de.fbml.erb
show.de.fr.fbml.erb
show.de.fr.html.erb
show.de.fr.iphone.erb
show.de.html.erb
show.de.iphone.erb
show.fbml.erb
show.fr.fbml.erb
show.fr.html.erb
show.fr.iphone.erb
show.html.erb
show.iphone.erb
Montag, 4. Januar 2010
Multiple targets...
...in source
<%
if
current_user.admin?
||
model.ediable?(current_user)
%>
<%
form_for(model)
do
|form|
%>
<%=
:name.t
%><%=
form.input
:name
%>
<%=
:city.t
%><%=
form.input
:city
%>
...
<%
end
%>
<%
else
%>
<div
class='label'><%=
:name.t
%></div>
<div
class='v'><%=h
model.name
%></div>
<div
class='label'><%=
:city.t
%></div>
<div
class='v'><%=h
model.city
%></div>
<%
end
%>
module
SimpleHtml
def
to_html
to_xml.gsub("<",
"<div
class=")
end
end
div.button
{
border:
2px
solid
blue;
}
div.button.delete
{
border-color:
red;
}
opts
=
{
:parameter1
=>
value1,
:parameter2
=>
value2
}
tmp
=
preprocess(me,
opts)
tmp
=
render(tmp,
opts)
postprocess
tmp,
opts
node
address
=
parent
address
+
a
node
specific
name
expressing
node
type,
node
position
relative
to
parent.
A general rule
<node
name>
<node
name>
...
<node
name>
{
render:
default;
}
Rule scopes
<node
name>
{
<node
name>
...
<node
name>
{
/*
...
*/
}
}
lang:de
{
/*
rules
*/
}
/*
general
rule
*/
string
{
render:
label
+
":
"
+
me.truncate(truncate);
truncate:
nil;
}
/*
html
rule
*/
:html
string
{
render:
"<span
class='l'>"
+
h(label)
+
":
</span>"
+
"<span
class='v'>"
+
h(me.truncate(truncate))
+
"</span>";
}
/*
provide
label
*/
user.name
{
label:
"user
name
";
}
/*
truncate
strings
on
iphone
*/
:iphone
string
{
truncate:
80;
}
user
{
partial:
"shared/user"
/*
short
for:
render:
render
:partial
=>
"shared/user",
:locals
=>
opts.update(:user
=>
me)
*/
}
Default scopes:
/*
two
characters
->
locale
*/
:de
.user.name
{
label:
“Benutzername”;
}
/*
>2
characters
->
target
*/
:fbml
{
/*
facebook
specific
rendering
*/
}
/**
A
quick
and
dirty
PDF
renderer
*/
:pdf
{
/*
:pdf
rules
default
to
:html
rules
*/
@import
:html;
.root
{
post:
html_to_pdf(me);
}
user.name
{
label:
Name
for
PDF;
}
}
• a cool name
• a spec for address weighing
• an example implementation
• a real-life application
http://radiospiel.org