Dynamiczne szablony - Liquid Markup

Dynamiczne szablony - Liquid Markup

794f638b6f7f5132d5a13230e61c9db2?s=128

Krzysztof Wawer

March 18, 2014
Tweet

Transcript

  1. Dynamiczne szablony - Liquid Markup Krzysztof Wawer! ! github.com/wafcio krzysztof.wawer@gmail.com

  2. Co to jest Liquid? github.com/Shopify/liquid

  3. Renderowanie szablonu Liquid::Template.parse('Hello {{who}}'). render({ 'who' => 'world' }) =>

    "Hello world"
  4. Zmienne i tagi "{{title}}" "{% post %}" - atrybut, zmienna

    - tag
  5. Filtry w Liquid "Hello {{ 'tobi' | capitalize}}" "Today is

    {{ 'now' | date: "%Y %h"}}"
  6. Własne filtry module TextFilter def textilize(input) RedCloth.new(input).to_html end end !

    Liquid::Template.register_filter(TextFilter) ! Liquid::Template.parse(" {{ '*hi*' | textilize }} "). render({}, filters: [TextFilter]) # => "<strong>hi</strong>"
  7. Liquid Tag class ExampleTag < Liquid::Tag def initialize(name, markup, token)

    ! end ! def render(context) end end ! Liquid::Template.register_tag('example_menu', ExampleTag) ! Liquid::Template.parse("{% example_tag key1=value1%}").render
  8. Liquid Drop class PostDrop < Liquid::Drop def initialize(post) @post =

    post end ! def title @post.title end end Liquid::Template.parse(„{{post.title}}, {{post.content}}”). render({ 'post' => PostDrop.new(Post.find(id)) }) => "Post title, "