diff --git a/Liquid-for-Designers.textile b/Liquid-for-Designers.textile deleted file mode 100644 index df6c1f7..0000000 --- a/Liquid-for-Designers.textile +++ /dev/null @@ -1,322 +0,0 @@ -There are two types of markup in Liquid: Output and Tag. - -* Output markup (which may resolve to text) is surrounded by - -
-{{ matched pairs of curly brackets (ie, braces) }}
-
- -* Tag markup (which cannot resolve to text) is surrounded by - -
-{% matched pairs of curly brackets and percent signs %}
-
- -h1. Output - -Here is a simple example of Output: - -
-Hello {{name}}          
-Hello {{user.name}}
-Hello {{ 'tobi' }}
-
- - - -h2. Advanced output: Filters - -Output markup takes filters. -Filters are simple methods. -The first parameter is always the output of the left side of the filter. -The return value of the filter will be the new left value when the next filter is run. -When there are no more filters, the template will receive the resulting string. - -
-Hello {{ 'tobi' | upcase }}
-Hello tobi has {{ 'tobi' | size }} letters!
-Hello {{ '*tobi*' | textilize | upcase }}
-Hello {{ 'now' | date: "%Y %h" }}
-
- -h3. Standard Filters - -* **date** - reformat a date ("syntax reference":http://liquid.rubyforge.org/classes/Liquid/StandardFilters.html#M000012) -* **capitalize** - capitalize words in the input sentence -* **downcase** - convert an input string to lowercase -* **upcase** - convert an input string to uppercase -* **first** - get the first element of the passed in array -* **last** - get the last element of the passed in array -* **join** - join elements of the array with certain character between them -* **sort** - sort elements of the array -* **map** - map/collect an array on a given property -* **size** - return the size of an array or string -* **escape** - escape a string -* **escape_once** - returns an escaped version of html without affecting existing escaped entities -* **strip_html** - strip html from string -* **strip_newlines** - strip all newlines (\n) from string -* **newline_to_br** - replace each newline (\n) with html break -* **replace** - replace each occurrence **e.g.** {{ 'foofoo' | replace:'foo','bar' }} #=> 'barbar' -* **replace_first** - replace the first occurrence **e.g.** {{ 'barbar' | replace_first:'bar','foo' }} #=> 'foobar' -* **remove** - remove each occurrence **e.g.** {{ 'foobarfoobar' | remove:'foo' }} #=> 'barbar' -* **remove_first** - remove the first occurrence **e.g.** {{ 'barbar' | remove_first:'bar' }} #=> 'bar' -* **truncate** - truncate a string down to x characters -* **truncatewords** - truncate a string down to x words -* **prepend** - prepend a string **e.g.** {{ 'bar' | prepend:'foo' }} #=> 'foobar' -* **append** - append a string **e.g.** {{ 'foo' | append:'bar' }} #=> 'foobar' -* **minus** - subtraction **e.g** {{ 4 | minus:2 }} #=> 2 -* **plus** - addition **e.g** {{ '1' | plus:'1' }} #=> '11', {{ 1 | plus:1 }} #=> 2 -* **times** - multiplication **e.g** {{ 5 | times:4 }} #=> 20 -* **divided_by** - division **e.g** {{ 10 | divided_by:2 }} #=> 5 - -h1. Tags - -Tags are used for the logic in your template. -New tags are very easy to code, so I hope to get many contributions to the standard tag library after releasing this code. - -Here is a list of currently supported tags: - -* **assign** - Assgins some value to a variable -* **capture** - Block tag that captures text into a variable -* **case** - Block tag, its the standard case...when block -* **comment** - Block tag, comments out the text in the block -* **cycle** - Cycle is usually used within a loop to alternate between values, like colors or DOM classes. -* **for** - For loop -* **if** - Standard if/else block -* **include** - Includes another template, useful for partials -* **unless** - Mirror of if statement - -h2. Comments - -Comment is the simplest tag. -It just swallows content. - -
-We made 1 million dollars {% comment %} in losses {% endcomment %} this year
-
- -h2. If / Else - -@if / else@ should be well known from any imaginable programming language. -Liquid allows you to write simple expressions in the @if@ or @unless@ (and optionally, @elsif@ and @else@) clause: - -
-{% if user %}
-  Hello {{ user.name }}
-{% endif %}
-
-{% if user.name == 'tobi' %}
-  Hello tobi
-{% elsif user.name == 'bob' %}
-  Hello bob
-{% endif %}
-
-{% if user.name == 'tobi' or user.name == 'bob' %}
-  Hello tobi or bob
-{% endif %}
-
-{% if user.name == 'bob' and user.age > 45 %}
-  Hello old bob 
-{% endif %}
-
-{% if user.name != 'tobi' %} 
-  Hello non-tobi
-{% endif %}
-
-# Same as above
-{% unless user.name == 'tobi' %}
-  Hello non-tobi
-{% endunless %}
-
-# Check if the user has a credit card
-{% if user.creditcard != null %}
-   poor sob
-{% endif %}
-
-# Same as above 
-{% if user.creditcard %}
-   poor sob
-{% endif %}
-
-# Check for an empty array
-{% if user.payments == empty %}
-   you never paid ! 
-{% endif %}
-
-{% if user.age > 18 %}
-   Login here
-{% else %}
-   Sorry, you are too young
-{% endif %}
-
-# array = 1,2,3
-{% if array contains 2 %} 
-   array includes 2
-{% endif %}
-
-# string = 'hello world' 
-{% if string contains 'hello' %} 
-   string includes 'hello'
-{% endif %}
-
- -h2. Case Statement - -If you need more conditions, you can use the @case@ statement: - -
-{% case condition %} 
-{% when 1 %} 
-hit 1 
-{% when 2 or 3 %} 
-hit 2 or 3
-{% else %} 
-... else ... 
-{% endcase %} 
-
- -*Example:* - -
-{% case template %}
-
-{% when 'label' %}
-     // {{ label.title }}
-{% when 'product' %}
-     // {{ product.vendor | link_to_vendor }} / {{ product.title }}
-{% else %}
-     // {{page_title}}
-{% endcase %}
-
- -h2. Cycle - -Often you have to alternate between different colors or similar tasks. -Liquid has built-in support for such operations, using the @cycle@ tag. - -
-{% cycle 'one', 'two', 'three' %} 
-{% cycle 'one', 'two', 'three' %} 
-{% cycle 'one', 'two', 'three' %} 
-{% cycle 'one', 'two', 'three' %} 
-
-will result in 
-
-one
-two
-three
-one
-
- -If no name is supplied for the cycle group, -then it's assumed that multiple calls with the same parameters are one group. - -If you want to have total control over cycle groups, you can optionally specify the name of the group. -This can even be a variable. - - -
-{% cycle 'group 1': 'one', 'two', 'three' %} 
-{% cycle 'group 1': 'one', 'two', 'three' %} 
-{% cycle 'group 2': 'one', 'two', 'three' %} 
-{% cycle 'group 2': 'one', 'two', 'three' %} 
-
-will result in 
-
-one
-two 
-one
-two
-
- -h2. For loops - -Liquid allows @for@ loops over collections: - -
-{% for item in array %} 
-  {{ item }}
-{% endfor %} 
-
- -During every @for@ loop, the following helper variables are available for extra styling needs: - -
-forloop.length      # => length of the entire for loop
-forloop.index       # => index of the current iteration 
-forloop.index0      # => index of the current iteration (zero based) 
-forloop.rindex      # => how many items are still left?
-forloop.rindex0     # => how many items are still left? (zero based)
-forloop.first       # => is this the first iteration?
-forloop.last        # => is this the last iternation? 
-
- -There are several attributes you can use to influence which items you receive in your loop - -*limit:int* lets you restrict how many items you get. -*offset:int* lets you start the collection with the nth item. - -
-# array = [1,2,3,4,5,6]
-{% for item in array limit:2 offset:2 %} 
-  {{ item }}
-{% endfor %} 
-# results in 3,4 
-
- -Reversing the loop - -
-{% for item in collection reversed %} {{item}} {% endfor %}
-
- -Instead of looping over an existing collection, you can define a range of numbers to loop through. -The range can be defined by both literal and variable numbers: - -
-# if item.quantity is 4...
-{% for i in (1..item.quantity) %}
-  {{ i }}
-{% endfor %}
-# results in 1,2,3,4
-
- -h2. Variable Assignment - -You can store data in your own variables, to be used in output or other tags as desired. -The simplest way to create a variable is with the @assign@ tag, which has a pretty straightforward syntax: - -
-{% assign name = 'freestyle' %}
-
-{% for t in collections.tags %}{% if t == name %}
-  

Freestyle!

-{% endif %}{% endfor %} -
- -Another way of doing this would be to assign @true / false@ values to the variable: - -
-{% assign freestyle = false %}
-
-{% for t in collections.tags %}{% if t == 'freestyle' %}
-  {% assign freestyle = true %}
-{% endif %}{% endfor %}
-
-{% if freestyle %}
-  

Freestyle!

-{% endif %} -
- -If you want to combine a number of strings into a single string and save it to a variable, you can do that with the @capture@ tag. This tag is a block which "captures" whatever is rendered inside it, then assigns the captured value to the given variable instead of rendering it to the screen. - -
-  {% capture attribute_name %}{{ item.title | handleize }}-{{ i }}-color{% endcapture %}
-
-  
-  
-
\ No newline at end of file