diff --git a/Es-liquid-para-programadores.textile b/Es-liquid-para-programadores.textile new file mode 100644 index 0000000..652269f --- /dev/null +++ b/Es-liquid-para-programadores.textile @@ -0,0 +1,115 @@ +h2. Primeros Pasos + +Es muy fácil empezar con Liquid. +Un template Liquid se renderiza en dos pasos: Parseo y renderización. +Para una introducción a la sintáxis de Liquid, por favor lee: [[ES-Liquid para Diseñadores]]. + +
+@template = Liquid::Template.parse("hi {{name}}") # Parsea y compila el template
+@template.render( 'name' => 'tobi' ) # Renderiza el texto => "hi tobi"
+
+
+El paso de @parseo@ crea un template totalmente compilado que puede ser re-usado tantas veces como uno quiera.
+Se puede guardar en memoria o en una caché para renderizar con velocidad más adelante.
+
+Todos los parámetros que quieras utilizar en el template Liquid deberán ser pasados como parámetros en el método @render@.
+Liquid no sabe de tus variables locales, de instancia o globales.
+
+h2. Extendiendo Liquid
+
+Es muy fácil extender Liquid.
+Sin embargo, ten en cuenta que Liquid es una librería joven que requiere ayuda de todos.
+Si creas filtros y tags útiles, por favor considera crear un patch y mandarlo como un issue aquí.
+
+h3. Crea tus propios filtros
+
+Es muy fácil crear filtros.
+Básicamente, son métodos que toman solo un parámtro y devuelven un string modificado.
+Puedes usar tus propios filtros, pasando un array de módulos así:
+@template.render(assigns, [MyTextFilters, MyDateFilters]).
+
++module TextFilter + def textilize(input) + RedCloth.new(input).to_html + end +end ++ +
+@template = Liquid::Template.parse(" {{ '*hi*' | textilize }} ")
+@template.render({}, :filters => [TextFilter]) # => "hi"
+
+
+Alternativamente, también puedes registrar tus filtros globalmente:
+
++module TextFilter + def textilize(input) + RedCloth.new(input).to_html + end +end + +Liquid::Template.register_filter(TextFilter) ++ +Una vez que el filtro está registrado globalmente, uno puede simplemente usarlo así: + +
+@template = Liquid::Template.parse(" {{ '*hi*' | textilize }} ")
+@template.render # => "hi"
+
+
+h3. Crea tus propios tags
+
+Para crear un nuevo tag, simplemente debes heredar de @Liquid::Tag@ y registrar tu block en @Liquid::Template@.
+
+
+class Random < Liquid::Tag
+ def initialize(tag_name, max, tokens)
+ super
+ @max = max.to_i
+ end
+
+ def render(context)
+ rand(@max).to_s
+ end
+end
+
+Liquid::Template.register_tag('random', Random)
+
+
+
+@template = Liquid::Template.parse(" {% random 5 %}")
+@template.render # => "3"
+
+
+h3. Crea tus propios block tags
+
+Todos los block tags son parseados por Liquid.
+Para crear un nuevo bloque, solo debes heredar de @Liquid::Block@ y registrar tu bloque en @Liquid::Template@.
+
+
+class Random < Liquid::Block
+ def initialize(tag_name, markup, tokens)
+ super
+ @rand = markup.to_i
+ end
+
+ def render(context)
+ if rand(@rand) == 0
+ super
+ else
+ ''
+ end
+ end
+end
+
+Liquid::Template.register_tag('random', Random)
+
+
+
+text = " {% random 5 %} wanna hear a joke? {% endrandom %} "
+@template = Liquid::Template.parse(text)
+@template.render # => In 20% of the cases, this will output "wanna hear a joke?"
+
\ No newline at end of file