From 70ddccd88f251afa564cc86ff949c63bb00c10bc Mon Sep 17 00:00:00 2001 From: tetchi Date: Fri, 18 Mar 2016 16:18:35 -0400 Subject: [PATCH] Revert "Docs Update" --- .gitignore | 42 +--- .travis.yml | 4 - Gruntfile.js | 72 ------ README.md | 9 - _config.yml | 23 -- _includes/home-banner.html | 8 - _includes/home-users-grid.html | 24 -- _includes/sidebar.html | 18 -- _layouts/default.html | 29 --- _sass/main.scss | 17 -- _sass/modules/_base.scss | 185 --------------- _sass/modules/_buttons.scss | 34 --- _sass/modules/_content-area.scss | 31 --- _sass/modules/_home-banner.scss | 11 - _sass/modules/_home-users-grid.scss | 20 -- _sass/modules/_layout.scss | 112 --------- _sass/partials/_colors.scss | 10 - _sass/partials/_defaults.scss | 6 - _sass/partials/_helpers.scss | 7 - _sass/vendors/_syntax-highlighting.scss | 67 ------ basics/_handles.md | 48 ---- basics/index.html | 4 - basics/introduction.md | 64 ----- basics/operators.md | 88 ------- basics/truthy-and-falsy.md | 76 ------ basics/types.md | 160 ------------- feed.xml | 30 --- filters/append.md | 29 --- filters/capitalize.md | 27 --- filters/ceil.md | 47 ---- filters/date.md | 37 --- filters/default.md | 44 ---- filters/divided_by.md | 37 --- filters/downcase.md | 25 -- filters/escape.md | 25 -- filters/escape_once.md | 25 -- filters/first.md | 33 --- filters/floor.md | 47 ---- filters/index.html | 10 - filters/join.md | 19 -- filters/last.md | 33 --- filters/lstrip.md | 15 -- filters/map.md | 25 -- filters/minus.md | 35 --- filters/modulo.md | 35 --- filters/newline_to_br.md | 25 -- filters/plus.md | 35 --- filters/prepend.md | 31 --- filters/remove.md | 15 -- filters/remove_first.md | 15 -- filters/replace.md | 15 -- filters/replace_first.md | 17 -- filters/reverse.md | 31 --- filters/round.md | 35 --- filters/rstrip.md | 15 -- filters/size.md | 39 ---- filters/slice.md | 49 ---- filters/sort.md | 19 -- filters/split.md | 23 -- filters/strip.md | 15 -- filters/strip_html.md | 15 -- filters/strip_newlines.md | 26 --- filters/times.md | 35 --- filters/truncate.md | 15 -- filters/truncatewords.md | 15 -- filters/uniq.md | 19 -- filters/upcase.md | 25 -- filters/url_encode.md | 25 -- images/500px-logo.png | Bin 20873 -> 0 bytes images/jekyll-logo.png | Bin 30409 -> 0 bytes images/rails.png | Bin 0 -> 11119 bytes images/ruby.png | Bin 0 -> 5557 bytes images/rubygems.png | Bin 0 -> 9252 bytes images/salesforcedesk-logo.png | Bin 27566 -> 0 bytes images/zendesk-logo.png | Bin 18567 -> 0 bytes index.html | 277 ++++++++++++++++++++++ index.md | 16 -- package.json | 16 -- tags/_theme.md | 238 ------------------- tags/control-flow.md | 90 ------- tags/iteration.md | 298 ------------------------ tags/variable.md | 109 --------- 82 files changed, 278 insertions(+), 3067 deletions(-) delete mode 100644 .travis.yml delete mode 100644 Gruntfile.js delete mode 100644 README.md delete mode 100644 _config.yml delete mode 100644 _includes/home-banner.html delete mode 100644 _includes/home-users-grid.html delete mode 100644 _includes/sidebar.html delete mode 100644 _layouts/default.html delete mode 100755 _sass/main.scss delete mode 100644 _sass/modules/_base.scss delete mode 100644 _sass/modules/_buttons.scss delete mode 100644 _sass/modules/_content-area.scss delete mode 100644 _sass/modules/_home-banner.scss delete mode 100644 _sass/modules/_home-users-grid.scss delete mode 100644 _sass/modules/_layout.scss delete mode 100644 _sass/partials/_colors.scss delete mode 100644 _sass/partials/_defaults.scss delete mode 100644 _sass/partials/_helpers.scss delete mode 100644 _sass/vendors/_syntax-highlighting.scss delete mode 100644 basics/_handles.md delete mode 100644 basics/index.html delete mode 100644 basics/introduction.md delete mode 100644 basics/operators.md delete mode 100644 basics/truthy-and-falsy.md delete mode 100644 basics/types.md delete mode 100644 feed.xml delete mode 100644 filters/append.md delete mode 100644 filters/capitalize.md delete mode 100644 filters/ceil.md delete mode 100644 filters/date.md delete mode 100644 filters/default.md delete mode 100644 filters/divided_by.md delete mode 100644 filters/downcase.md delete mode 100644 filters/escape.md delete mode 100644 filters/escape_once.md delete mode 100644 filters/first.md delete mode 100644 filters/floor.md delete mode 100644 filters/index.html delete mode 100644 filters/join.md delete mode 100644 filters/last.md delete mode 100644 filters/lstrip.md delete mode 100644 filters/map.md delete mode 100644 filters/minus.md delete mode 100644 filters/modulo.md delete mode 100644 filters/newline_to_br.md delete mode 100644 filters/plus.md delete mode 100644 filters/prepend.md delete mode 100644 filters/remove.md delete mode 100644 filters/remove_first.md delete mode 100644 filters/replace.md delete mode 100644 filters/replace_first.md delete mode 100644 filters/reverse.md delete mode 100644 filters/round.md delete mode 100644 filters/rstrip.md delete mode 100644 filters/size.md delete mode 100644 filters/slice.md delete mode 100644 filters/sort.md delete mode 100644 filters/split.md delete mode 100644 filters/strip.md delete mode 100644 filters/strip_html.md delete mode 100644 filters/strip_newlines.md delete mode 100644 filters/times.md delete mode 100644 filters/truncate.md delete mode 100644 filters/truncatewords.md delete mode 100644 filters/uniq.md delete mode 100644 filters/upcase.md delete mode 100644 filters/url_encode.md delete mode 100644 images/500px-logo.png delete mode 100644 images/jekyll-logo.png create mode 100644 images/rails.png create mode 100644 images/ruby.png create mode 100644 images/rubygems.png delete mode 100644 images/salesforcedesk-logo.png delete mode 100644 images/zendesk-logo.png create mode 100644 index.html delete mode 100644 index.md delete mode 100644 package.json delete mode 100644 tags/_theme.md delete mode 100644 tags/control-flow.md delete mode 100644 tags/iteration.md delete mode 100644 tags/variable.md diff --git a/.gitignore b/.gitignore index 580c589..ca35be0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,41 +1 @@ -_site/ -.sass-cache/ -node_modules/ - -# Compiled source # -################### -*.com -*.class -*.dll -*.exe -*.o -*.so - -# Packages # -############ -# it's better to unpack these files and commit the raw source -# git has its own built in compression methods -*.7z -*.dmg -*.gz -*.iso -*.jar -*.rar -*.tar -*.zip - -# Logs and databases # -###################### -*.log -*.sql -*.sqlite - -# OS generated files # -###################### -.DS_Store -.DS_Store? -._* -.Spotlight-V100 -.Trashes -ehthumbs.db -Thumbs.db \ No newline at end of file +_site diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 61799da..0000000 --- a/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -install: gem install github-pages -script: jekyll build --trace -sudo: false -rvm: 2.1 diff --git a/Gruntfile.js b/Gruntfile.js deleted file mode 100644 index f6badaa..0000000 --- a/Gruntfile.js +++ /dev/null @@ -1,72 +0,0 @@ -// Gruntfile -module.exports = function(grunt) { -require('load-grunt-tasks')(grunt); - - // Project configuration. - grunt.initConfig({ - - pkg: grunt.file.readJSON('package.json'), - - watch: { - css: { - files: ['_sass/**/*.scss'], - tasks: ['sass', 'postcss', 'shell:jekyllBuild'], - options: { - atBegin: true - } - }, - jekyll: { - files: ['index.md', '_includes/*.html', 'filters/*.*', '_layouts/*.*', 'tags/*.*', 'basics/*.*'], - tasks: ['shell:jekyllBuild'] - } - }, - - sass: { - dist: { - options: { - style: 'expanded', - sourcemap: 'none' - }, - files: { - '_site/css/main.css':'_sass/main.scss' - } - } - }, - - shell: { - jekyllServe: { - command: 'jekyll serve --no-watch' - }, - - jekyllBuild: { - command: 'jekyll build' - } - }, - - postcss: { - options: { - map: true, - processors: [ - require('autoprefixer-core')({browsers: 'last 2 versions'}) - ] - }, - dist: { - src: '_site/css/*.css' - } - }, - - concurrent: { - tasks: ['shell:jekyllServe', 'watch'], - options: { - logConcurrentOutput: true - } - } - }); - - grunt.loadNpmTasks('grunt-contrib-watch'); - grunt.loadNpmTasks('grunt-contrib-sass'); - grunt.loadNpmTasks('grunt-postcss'); - grunt.loadNpmTasks('grunt-concurrent'); - - grunt.registerTask('default', ['concurrent']); -}; diff --git a/README.md b/README.md deleted file mode 100644 index 50b6ab9..0000000 --- a/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# New Liquid Docs - -To run, follow these steps: - -1. Download ZIP or clone in GitHub -2. Navigate to `liquid` folder -3. Run `jekyll watch` -4. Open `http://127.0.0.1:4000` in your browser - diff --git a/_config.yml b/_config.yml deleted file mode 100644 index f1ac851..0000000 --- a/_config.yml +++ /dev/null @@ -1,23 +0,0 @@ -title: Liquid Templating Engine -description: "Liquid is a template language and accompanying rendering engine. It is built for security, so is perfect for rendering custom templates from your users." - -# Build settings -baseurl: "" # the subpath of your site, e.g. /blog/ -url: http://liquidmarkup.org # the base hostname & protocol for your site -markdown: redcarpet -redcarpet: - extensions: ["with_toc_data", "tables", "disable_indented_code_blocks", "no_intra_emphasis"] -highlighter: pygments -permalink: pretty -exclude: - - README.md - - CNAME - - node_modules -keep_files: ["css"] - -# Front matter defaults -defaults: - - scope: - path: "" # an empty string here means all files in the project - values: - layout: default diff --git a/_includes/home-banner.html b/_includes/home-banner.html deleted file mode 100644 index b05df9a..0000000 --- a/_includes/home-banner.html +++ /dev/null @@ -1,8 +0,0 @@ -
-

Liquid

-

Safe, customer facing template language for flexible web apps.

-

- Download - View on Github -

-
diff --git a/_includes/home-users-grid.html b/_includes/home-users-grid.html deleted file mode 100644 index 22cd1fd..0000000 --- a/_includes/home-users-grid.html +++ /dev/null @@ -1,24 +0,0 @@ -
-
- - - -
-
- - - -
-
- - - -
-
- - - -
-
- -

...and many more!

diff --git a/_includes/sidebar.html b/_includes/sidebar.html deleted file mode 100644 index 04ea6be..0000000 --- a/_includes/sidebar.html +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/_layouts/default.html b/_layouts/default.html deleted file mode 100644 index 463ea39..0000000 --- a/_layouts/default.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - {% if page.title %}{{ page.title }} – {% endif %}{{ site.title }} - - - - - - - - - - - - - - - {% include sidebar.html %} - -
-
-

{{ page.title }}

- {{ content }} -
-
- - - diff --git a/_sass/main.scss b/_sass/main.scss deleted file mode 100755 index eb498cd..0000000 --- a/_sass/main.scss +++ /dev/null @@ -1,17 +0,0 @@ - -@charset "utf-8"; - -@import "partials/defaults"; -@import "partials/colors"; -@import "partials/helpers"; - -@import "modules/base"; -@import "modules/layout"; -@import "modules/buttons"; -@import "modules/home-banner"; -@import "modules/home-users-grid"; -@import "modules/content-area"; - -@import "vendors/syntax-highlighting"; - - diff --git a/_sass/modules/_base.scss b/_sass/modules/_base.scss deleted file mode 100644 index 635fcdc..0000000 --- a/_sass/modules/_base.scss +++ /dev/null @@ -1,185 +0,0 @@ -* { - box-sizing: border-box; -} - -/** - * Reset some basic elements - */ -body, h1, h2, h3, h4, h5, h6, -p, blockquote, pre, hr, -dl, dd, ol, ul, figure { - margin: 0; - padding: 0; -} - -/** - * Basic styling - */ -body { - font-family: $base-font-family; - font-size: $base-font-size; - line-height: $base-line-height; - font-weight: 300; - color: $color-slate; - -webkit-text-size-adjust: 100%; -} - -/** Set `margin-bottom` to maintain vertical rhythm */ - -h1, h2, h3, h4, h5, h6, -p, blockquote, pre, -ul, ol, dl, figure, -%vertical-rhythm { - margin-bottom: $spacing-unit / 2; -} - -/** Images */ - -img { - max-width: 100%; - vertical-align: middle; -} - -/** Figures */ - -figure > img { - display: block; -} - -figcaption { - font-size: $small-font-size; -} - -/** Lists */ -ul, ol { - margin-left: $spacing-unit; -} - -li { - > ul, > ol { - margin-bottom: 0; - } -} - -/** Headings */ - -h1, h2, h3, h4, h5, h6 { - font-weight: bold; -} - -/** Links */ -a { - color: $color-blue-5; - - &:visited { - color: #609; - } - - &:hover { - text-decoration: underline; - } -} - -h1 { - font-size: 2em; -} - -h2 { - font-size: 1.5em; - text-decoration: underline; - margin-top: $spacing-unit; -} - -h3 { - font-size: 1em; - text-decoration: underline; -} - -h4 { - font-size: 1em; -} - -blockquote { - color: lighten($color-slate, 30%); - border-left: 2px solid lighten($color-slate, 50%); - padding-left: $spacing-unit / 2; - letter-spacing: -1px; - font-style: italic; - - > :last-child { - margin-bottom: 0; - } -} - -pre, code { - font-size: 15px; - border-radius: 3px; - background-color: lighten($color-blue-1, 0.9); -} - -code { - padding: 1px 5px; -} - -pre { - padding: 8px 12px; - border: 1px solid $color-blue-2; - word-wrap: break-word; - - > code { - border: 0; - padding-right: 0; - padding-left: 0; - } -} - -hr { - display: block; - height: 1px; - border: 0; - background-color: lighten($color-slate, 50%); - margin-bottom: $spacing-unit/2; -} - -table { - width: 100%; - overflow: auto; - display: block; - margin: 15px 0; - border-collapse: collapse; - thead { - margin: 0; - padding: 0; - border: 0; - font-size: 100%; - font: inherit; - vertical-align: baseline; - } - th { - border: 1px solid #ddd; - padding: 6px 13px; - font-weight: bold; - text-align: center; - } - tbody { - vertical-align: middle; - border-color: inherit; - } - tr { - border-top: 1px solid #ccc; - background-color: #fff; - vertical-align: inherit; - } - td { - border: 1px solid #ddd; - padding: 6px 13px; - } - /* Don't use a margin on code samples within tables */ - pre { - margin-bottom: 0; - } -} - -p { - line-height: 1.8; -} diff --git a/_sass/modules/_buttons.scss b/_sass/modules/_buttons.scss deleted file mode 100644 index cf22944..0000000 --- a/_sass/modules/_buttons.scss +++ /dev/null @@ -1,34 +0,0 @@ -.btn { - color: $color-white; - display: flex; - background: $color-blue-5; - align-items: center; - padding: $spacing-unit/4 $spacing-unit/2; - border-radius: 8px; - text-decoration: none; - - &:hover { - background: $color-blue-4; - cursor: pointer; - text-decoration: none; - } -} - -.btn:visited { - color: $color-white; -} - -.btn-row { - display: flex; - justify-content: center; - margin-bottom: 0; - - .btn:not(:first-child) { - margin-left: $spacing-unit / 2; - } -} - -.icon { - vertical-align: middle; - margin-right: $spacing-unit / 4; -} diff --git a/_sass/modules/_content-area.scss b/_sass/modules/_content-area.scss deleted file mode 100644 index 11ed206..0000000 --- a/_sass/modules/_content-area.scss +++ /dev/null @@ -1,31 +0,0 @@ -.content__item { - margin-bottom: $spacing-unit * 2; -} - -.highlight { - - pre { - border-top: none; - border-radius: 0 0 3px 3px; - } - - &:before { - content: "Example"; - display: block; - padding: 8px 12px; - color: $color-slate; - background: #fff; - border: 1px solid $color-blue-2; - border-radius: 3px 3px 0 0; - font-size: 16px; - font-weight: bold; - } - - // Label every second code block with "Output" - & + .highlight:nth-of-type(2n) { - &:before { - content: "Output"; - } - } - -} diff --git a/_sass/modules/_home-banner.scss b/_sass/modules/_home-banner.scss deleted file mode 100644 index cec7ff0..0000000 --- a/_sass/modules/_home-banner.scss +++ /dev/null @@ -1,11 +0,0 @@ -.home-banner { - text-align: center; - border-bottom: 1px solid lighten($color-slate, 50%); - padding-bottom: $spacing-unit; - margin-bottom: $spacing-unit; - - h1 { - font-weight: bold; - font-size: 5em; - } -} diff --git a/_sass/modules/_home-users-grid.scss b/_sass/modules/_home-users-grid.scss deleted file mode 100644 index 54de4b9..0000000 --- a/_sass/modules/_home-users-grid.scss +++ /dev/null @@ -1,20 +0,0 @@ -.home-users-grid { - display: flex; - align-items: center; - flex-wrap: wrap; - margin-bottom: $spacing-unit / 2; -} - -.home-users-grid__item{ - flex: 1; - margin-right: $spacing-unit / 2; - max-width: 50%; - - &:last-child { - margin-right: 0; - } -} - -.home-users-blurb { - text-align: right; -} diff --git a/_sass/modules/_layout.scss b/_sass/modules/_layout.scss deleted file mode 100644 index 2fe6586..0000000 --- a/_sass/modules/_layout.scss +++ /dev/null @@ -1,112 +0,0 @@ - -$sidebar-width: 250px; -$logo-height: 130px; -$wrapper-width: 800px; - -/*============================================================================ - Content Area - ==============================================================================*/ - -.content__area { - padding: $spacing-unit $spacing-unit $spacing-unit ($spacing-unit + $sidebar-width); - width: 100%; -} - -.content { - max-width: $wrapper-width; - margin: 0 auto; - padding: 0 $spacing-unit; - @extend %clearfix; -} - -/*============================================================================ - Sidebar - ==============================================================================*/ - -.sidebar { - background: $color-blue-5; - width: $sidebar-width; - height: 100vh; - position: fixed; -} - -.sidebar--logo { - font-size: $base-font-size * 2; - font-weight: bold; - text-align: center; - height: $logo-height; - line-height: $logo-height; - margin-bottom: 0; - border-bottom: 1px solid $color-blue-4; - - a { - color: $color-white; - text-decoration: none; - - &:hover { - text-decoration: underline; - } - } -} - -.sidebar--nav { - padding: $spacing-unit $spacing-unit ($spacing-unit + $logo-height); // Add a bit more padding at the bottom for consistency. - font-weight: bold; - max-height: 100%; - overflow-y: scroll; - - li { - list-style: none; - - a { - color: $color-white; - - &:hover { - text-decoration: none; - } - } - } -} - -.section { - margin: 0px; - - > li { - margin-bottom: $spacing-unit / 2; - - &:last-child { - margin-bottom: $spacing-unit; - } - } -} - -.section__header { - font-weight: bold; - font-size: 1em; - text-decoration: none; - color: $color-white; - margin-bottom: $spacing-unit / 4; -} - -.section__links { - margin-left: $spacing-unit / 2; - margin-bottom: $spacing-unit; - font-weight: normal; - font-size: 0.9em; -} - -.section__link { - display: inline-block; - margin-top: $spacing-unit/4; - opacity: 0.75; - text-decoration: none; - - &:hover { - opacity: 1; - } -} - -.section__link--is-active { - font-weight: bold; - opacity: 1; -} diff --git a/_sass/partials/_colors.scss b/_sass/partials/_colors.scss deleted file mode 100644 index 5f84b85..0000000 --- a/_sass/partials/_colors.scss +++ /dev/null @@ -1,10 +0,0 @@ -// I got the blues, man. -// 1 --> 5, lightest --> darkest. - -$color-blue-1: #E8F8FF; -$color-blue-2: #B4DCED; -$color-blue-3: #91C9E8; -$color-blue-4: #67B8DE; -$color-blue-5: #3399CC; -$color-white: #ffffff; -$color-slate: #5E5E5E; diff --git a/_sass/partials/_defaults.scss b/_sass/partials/_defaults.scss deleted file mode 100644 index 5ff2048..0000000 --- a/_sass/partials/_defaults.scss +++ /dev/null @@ -1,6 +0,0 @@ -$base-font-family: 'Droid Sans', sans-serif; -$base-font-size: 18px; -$small-font-size: $base-font-size * 0.875; -$base-line-height: 1.5; -$spacing-unit: 40px; - diff --git a/_sass/partials/_helpers.scss b/_sass/partials/_helpers.scss deleted file mode 100644 index 51fd2ff..0000000 --- a/_sass/partials/_helpers.scss +++ /dev/null @@ -1,7 +0,0 @@ -%clearfix { - &:after { - content: ""; - display: table; - clear: both; - } -} diff --git a/_sass/vendors/_syntax-highlighting.scss b/_sass/vendors/_syntax-highlighting.scss deleted file mode 100644 index e36627d..0000000 --- a/_sass/vendors/_syntax-highlighting.scss +++ /dev/null @@ -1,67 +0,0 @@ -/** - * Syntax highlighting styles - */ -.highlight { - background: #fff; - @extend %vertical-rhythm; - - .c { color: #998; font-style: italic } // Comment - .err { color: #a61717; background-color: #e3d2d2 } // Error - .k { font-weight: bold } // Keyword - .o { font-weight: bold } // Operator - .cm { color: #998; font-style: italic } // Comment.Multiline - .cp { color: #999; font-weight: bold } // Comment.Preproc - .c1 { color: #998; font-style: italic } // Comment.Single - .cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special - .gd { color: #000; background-color: #fdd } // Generic.Deleted - .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific - .ge { font-style: italic } // Generic.Emph - .gr { color: #a00 } // Generic.Error - .gh { color: #999 } // Generic.Heading - .gi { color: #000; background-color: #dfd } // Generic.Inserted - .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific - .go { color: #888 } // Generic.Output - .gp { color: #555 } // Generic.Prompt - .gs { font-weight: bold } // Generic.Strong - .gu { color: #aaa } // Generic.Subheading - .gt { color: #a00 } // Generic.Traceback - .kc { font-weight: bold } // Keyword.Constant - .kd { font-weight: bold } // Keyword.Declaration - .kp { font-weight: bold } // Keyword.Pseudo - .kr { font-weight: bold } // Keyword.Reserved - .kt { color: #458; font-weight: bold } // Keyword.Type - .m { color: #099 } // Literal.Number - .s { color: #d14 } // Literal.String - .na { color: #008080 } // Name.Attribute - .nb { color: #0086B3 } // Name.Builtin - .nc { color: #458; font-weight: bold } // Name.Class - .no { color: #008080 } // Name.Constant - .ni { color: #800080 } // Name.Entity - .ne { color: #900; font-weight: bold } // Name.Exception - .nf { color: #900; font-weight: bold } // Name.Function - .nn { color: #555 } // Name.Namespace - .nt { color: #000080 } // Name.Tag - .nv { color: #008080 } // Name.Variable - .ow { font-weight: bold } // Operator.Word - .w { color: #bbb } // Text.Whitespace - .mf { color: #099 } // Literal.Number.Float - .mh { color: #099 } // Literal.Number.Hex - .mi { color: #099 } // Literal.Number.Integer - .mo { color: #099 } // Literal.Number.Oct - .sb { color: #d14 } // Literal.String.Backtick - .sc { color: #d14 } // Literal.String.Char - .sd { color: #d14 } // Literal.String.Doc - .s2 { color: #d14 } // Literal.String.Double - .se { color: #d14 } // Literal.String.Escape - .sh { color: #d14 } // Literal.String.Heredoc - .si { color: #d14 } // Literal.String.Interpol - .sx { color: #d14 } // Literal.String.Other - .sr { color: #009926 } // Literal.String.Regex - .s1 { color: #d14 } // Literal.String.Single - .ss { color: #990073 } // Literal.String.Symbol - .bp { color: #999 } // Name.Builtin.Pseudo - .vc { color: #008080 } // Name.Variable.Class - .vg { color: #008080 } // Name.Variable.Global - .vi { color: #008080 } // Name.Variable.Instance - .il { color: #099 } // Literal.Number.Integer.Long -} diff --git a/basics/_handles.md b/basics/_handles.md deleted file mode 100644 index fca2b14..0000000 --- a/basics/_handles.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Handles ---- - -A handle is used to access the attributes of a Liquid object. By default, the handle is the object's title in lowercase with any spaces and special characters replaced by hyphens (-). - -For example, a page with the title "About Us" can be accessed in Liquid via its handle `about-us` as shown below: - -{% highlight liquid %} -{% raw %} - -{{ pages.about-us.content }} -{% endraw %} -{% endhighlight %} - -## Creating handles - -An object with the title "Shirt" will automatically be given the handle `shirt`. If there is already an object with the handle `shirt`, the handle will auto-increment. In other words, "Shirt" objects created after the first one will receive the handle `shirt-1`, `shirt-2`, and so on. - -Whitespace in titles is replaced by hyphens in handles. For example, the title "My Shiny New Title" will be given the handle `my-shiny-new-title`. - -Handles also determine the URL of their corresponding objects. For example, a page with the handle `about-us` would have the url `/pages/about-us`. - -Websites often rely on static handles for pages, posts, or objects. To preserve design elements and avoid broken links, if you modify the title of an object, **its handle is not automatically updated**. For example, if you were to change a page title from "About Us" to "About This Website", its handle would still be `about-us`. - -You can change an object's handle manually (TK how to change a handle manually) - -## Accessing handle attributes - -In many cases you may know the handle of a object whose attributes you want to access. You can access its attributes by pluralizing the name of the object, then using either the square bracket ( [ ] ) or dot ( . ) notation. - -
-{% highlight liquid %} -{% raw %} -{{ pages.about-us.title }} -{{ pages["about-us"].title }} -{% endraw %} -{% endhighlight %} -
- -
-{% highlight text %} -About Us -About Us -{% endhighlight %} -
- -In the example above, notice that we are using `pages` as opposed to `page`. diff --git a/basics/index.html b/basics/index.html deleted file mode 100644 index 1ab753a..0000000 --- a/basics/index.html +++ /dev/null @@ -1,4 +0,0 @@ ---- -layout: default ---- - diff --git a/basics/introduction.md b/basics/introduction.md deleted file mode 100644 index 23b84c5..0000000 --- a/basics/introduction.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Introduction ---- - -Liquid code can be categorized into [**objects**](#objects), [**tags**](#tags), and [**filters**](#filters). - -## Objects - -**Objects** tell Liquid where to show content on a page. Objects and variable names are denoted by double curly braces: `{% raw %}{{{% endraw %}` and `{% raw %}}}{% endraw %}`. - - -```liquid -{% raw %} -{{ page.title }} -{% endraw %} -``` - -```text -Introduction -``` - -In this case, Liquid is rendering the content of an object called `page.title`, and that object contains the text `Introduction`. - -## Tags - -**Tags** create the logic and control flow for templates. They are denoted by curly braces and percent signs: `{% raw %}{%{% endraw %}` and `{% raw %}%}{% endraw %}`. - -The markup used in tags does not produce any visible text. This means that you can assign variables and create conditions and loops without showing any of the Liquid logic on the page. - -```liquid -{% raw %} -{% if user %} - Hello {{ user.name }}! -{% endif %} - -{% endraw %} -``` - -```text -Hello Adam! -``` - -Tags can be categorized into three types: - -- [Control flow](/tags/control-flow) -- [Iteration](/tags/iteration) -- [Variable assignments](/tags/variable) - -You can read more about each type of tag in their respective sections. - - -## Filters - -**Filters** change the output of a Liquid object. They are using within an output and are separated by a `|`. - -```liquid -{% raw %} -{{ "/my/fancy/url" | append: ".html" }} -{% endraw %} -``` - -```text -{{ "/my/fancy/url" | append: ".html" }} -``` diff --git a/basics/operators.md b/basics/operators.md deleted file mode 100644 index 522805b..0000000 --- a/basics/operators.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Operators ---- - -Liquid includes many logical and comparison operators. - -## Basic operators - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
==equals
!=does not equal
>greater than
<less than
>=greater than or equal to
<=less than or equal to
orlogical or
andlogical and
- -For example: - -```liquid -{% raw %} -{% if product.title == "Awesome Shoes" %} - These shoes are awesome! -{% endif %} -{% endraw %} -``` - -You can use multiple operators in a tag: - -```liquid -{% raw %} -{% if product.type == "Shirt" or product.type == "Shoes" %} - This is a shirt or a pair of shoes. -{% endif %} -{% endraw %} -``` - -## contains - -`contains` checks for the presence of a substring inside a string. - -```liquid -{% raw %} -{% if product.title contains 'Pack' %} - This product's title contains the word Pack. -{% endif %} -{% endraw %} -``` - -`contains` can also check for the presence of a string in an array of strings. - -```liquid -{% raw %} -{% if product.tags contains 'Hello' %} - This product has been tagged with 'Hello'. -{% endif %} -{% endraw %} -``` - -`contains` can only search strings. You cannot use it to check for an object in an array of objects. diff --git a/basics/truthy-and-falsy.md b/basics/truthy-and-falsy.md deleted file mode 100644 index c760a6a..0000000 --- a/basics/truthy-and-falsy.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Truthy and falsy ---- - -In programming, anything that returns `true` in a conditional is called **truthy**. Anything that returns `false` in a conditional is called **falsy**. All object types can be described as either truthy or falsy. - -- [Truthy](#truthy) -- [Falsy](#falsy) -- [Summary](#summary) - -## Truthy - -All values in Liquid are truthy except `nil` and `false`. - -In the example below, the string "Tobi" is not a boolean, but it is truthy in a conditional: - -```liquid -{% raw %} -{% assign tobi = "Tobi" %} - -{% if tobi == true %} - This condition will always be true. -{% endif %} -{% endraw %} -``` - -[Strings](/basics/types/#string), even when empty, are truthy. The example below will result in empty HTML tags if `settings.fp_heading` is empty: - -```liquid -{% raw %} -{% if settings.fp_heading %} -

{{ settings.fp_heading }}

-{% endif %} -{% endraw %} -``` - -```html -

-``` - -[EmptyDrops](/basics/types/#emptydrop) are also truthy. In the example below, if `settings.page` is an empty string or set to a hidden or deleted object, you will end up with an EmptyDrop. The result is an empty `div`: - -```liquid -{% raw %} -{% if pages[settings.page] %} -
{{ pages[settings.page].content }}
-{% endif %} -{% endraw %} -``` - -```html -
-``` - -## Falsy - -The falsy values in Liquid are [`nil`](/basics/types/#nil) and [`false`](/basics/types/#boolean). - -## Summary - -The table below summarizes what is truthy or falsy in Liquid. - -| | truthy | falsy | -| ------------- |:-------------:|:-------------:| -| true | • | | -| false | | • | -| nil | | • | -| string | • | | -| empty string | • | | -| 0 | • | | -| integer | • | | -| float | • | | -| array | • | | -| empty array | • | | -| page | • | | -| EmptyDrop | • | | diff --git a/basics/types.md b/basics/types.md deleted file mode 100644 index f4f5825..0000000 --- a/basics/types.md +++ /dev/null @@ -1,160 +0,0 @@ ---- -title: Types ---- - -Liquid objects can have one of six types: - -- [String](#string) -- [Number](#number) -- [Boolean](#boolean) -- [Nil](#nil) -- [Array](#array) -- [EmptyDrop](#emptydrop) - -You can initialize Liquid variables with the [assign](/tags/#assign) or [capture](/tags/#capture) tags. - -## String - -Declare a string by wrapping a variable's value in single or double quotes: - -```liquid -{% raw %} -{% assign my_string = "Hello World!" %} -{% endraw %} -``` - -## Number - -Numbers include floats and integers: - -```liquid -{% raw %} -{% assign my_int = 25 %} -{% assign my_float = 39.756 %} -{% endraw %} -``` - -## Boolean - -Booleans are either `true` or `false`. No quotations are necessary when declaring a boolean: - -```liquid -{% raw %} -{% assign foo = true %} -{% assign bar = false %} -{% endraw %} -``` - -## Nil - -Nil is a special empty value that is returned when Liquid code has no results. It is **not** a string with the characters "nil". - -Nil is [treated as false](/basics/truthy-and-falsy) in the conditions of `if` blocks and other Liquid tags that check the truthfulness of a statement. - -In the following example, if the user does not exist (that is, `user` returns `nil`), Liquid will not print the greeting: - -```liquid -{% raw %} -{% if user %} - Hello {{ user.name }}! -{% endif %} -{% endraw %} -``` - -Tags or outputs that return `nil` will not print anything to the page. - -```liquid -{% raw %} -The current user is {{ user.name }} -{% endraw %} -``` - -```text -The current user is -``` - -## Array - -Arrays hold lists of variables of any type. - -### Accessing items in arrays - -To access all the items in an array, you can loop through each item in the array using an [iteration tag](/tags/iteration/). - -```liquid -{% raw %} - -{% for user in site.users %} - {{ user }} -{% endfor %} -{% endraw %} -``` - -```text -{% raw %} -Tobi Laura Tetsuro Adam -{% endraw %} -``` - -### Accessing specific items in arrays - -You can use square bracket `[` `]` notation to access a specific item in an array. Array indexing starts at zero. - -```liquid -{% raw %} - -{{ site.users[0] }} -{{ site.users[1] }} -{{ site.users[3] }} -{% endraw %} -``` - -```text -Tobi -Laura -Adam -``` - -### Initializing arrays - -You cannot initialize arrays using only Liquid. - -You can, however, use the [split](/filters/split) filter to break a string into an array of substrings. - -## EmptyDrop - -An EmptyDrop object is returned if you try to access a deleted object by name. In the example below, `page_1`, `page_2` and `page_3` are all EmptyDrop objects. - -```liquid -{% raw %} -{% assign variable = "hello" %} -{% assign page_1 = pages[variable] %} -{% assign page_2 = pages["does-not-exist"] %} -{% assign page_3 = pages.this-handle-does-not-exist %} -{% endraw %} -``` - -EmptyDrop objects only have one attribute, `empty?`, which is always *true*. - -Collections and pages that *do* exist do not have an `empty?` attribute. Their `empty?` is "falsy", which means that calling it inside an if statement will return *false*. When using an `unless` statement on existing collections and pages, `empty?` will return `true`. - -### Checking for emptiness - -Using the `empty?` attribute, you can check to see if an object exists or not before you access any of its attributes. - -```liquid -{% raw %} -{% unless pages.about.empty? %} - -

{{ pages.frontpage.title }}

-
{{ pages.frontpage.content }}
-{% endunless %} -{% endraw %} -``` - -If you don't check for emptiness first, Liquid might print empty HTML elements to the page: - -```html -

-
-``` diff --git a/feed.xml b/feed.xml deleted file mode 100644 index a6628bd..0000000 --- a/feed.xml +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: null ---- - - - - {{ site.title | xml_escape }} - {{ site.description | xml_escape }} - {{ site.url }}{{ site.baseurl }}/ - - {{ site.time | date_to_rfc822 }} - {{ site.time | date_to_rfc822 }} - Jekyll v{{ jekyll.version }} - {% for post in site.posts limit:10 %} - - {{ post.title | xml_escape }} - {{ post.content | xml_escape }} - {{ post.date | date_to_rfc822 }} - {{ post.url | prepend: site.baseurl | prepend: site.url }} - {{ post.url | prepend: site.baseurl | prepend: site.url }} - {% for tag in post.tags %} - {{ tag | xml_escape }} - {% endfor %} - {% for cat in post.categories %} - {{ cat | xml_escape }} - {% endfor %} - - {% endfor %} - - diff --git a/filters/append.md b/filters/append.md deleted file mode 100644 index 1b6202f..0000000 --- a/filters/append.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: append ---- - -Concatenates two strings and returns the concatenated value. - -```liquid -{% raw %} -{{ "/my/fancy/url" | append: ".html" }} -{% endraw %} -``` - -```text -{{ "/my/fancy/url" | append: ".html" }} -``` - -`append` can also be used with variables: - -```liquid -{% raw %} -{% assign filename = "/index.html" %} -{{ "website.com" | append: filename }} -{% endraw %} -``` - -```text -{% assign filename = "/index.html" %} -{{ "website.com" | append: filename }} -``` diff --git a/filters/capitalize.md b/filters/capitalize.md deleted file mode 100644 index ef9ecbe..0000000 --- a/filters/capitalize.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: capitalize ---- - -Makes the first character of a string capitalized. - -```liquid -{% raw %} -{{ "title" | capitalize }} -{% endraw %} -``` - -```text -Title -``` - -`capitalize` only capitalizes the first character of the string, so later words are not affected: - - ```liquid -{% raw %} -{{ "my great title" | capitalize }} -{% endraw %} -``` - -```text -My great title -``` diff --git a/filters/ceil.md b/filters/ceil.md deleted file mode 100644 index f297651..0000000 --- a/filters/ceil.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: ceil ---- - -Rounds the input up to the nearest whole number. Liquid tries to convert the input to a number before the filter is applied. - -```liquid -{% raw %} -{{ 1.2 | ceil }} -{% endraw %} -``` - -```text -{{ 1.2 | ceil }} -``` - -```liquid -{% raw %} -{{ 2.0 | ceil }} -{% endraw %} -``` - -```text -{{ 2.0 | ceil }} -``` - -```liquid -{% raw %} -{{ 183.357 | ceil }} -{% endraw %} -``` - -```text -{{ 183.357 | ceil }} -``` - -Here the input value is a string: - -```liquid -{% raw %} -{{ "3.5" | ceil }} -{% endraw %} -``` - -```text -{{ "3.5" | ceil }} -``` diff --git a/filters/date.md b/filters/date.md deleted file mode 100644 index 4048def..0000000 --- a/filters/date.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: date ---- - -Converts a timestamp into another date format. The format for this syntax is the same as [`strftime`](//strftime.net). - -```liquid -{% raw %} -{{ article.published_at | date: "%a, %b %d, %y" }} -{% endraw %} -``` - -```text -Fri, Jul 17, 15 -``` - -```liquid -{% raw %} -{{ article.published_at | date: "%Y" }} -{% endraw %} -``` - -```text -2015 -``` - -`date` works on strings if they contain well-formatted dates: - -```liquid -{% raw %} -{{ "March 14, 2016" | date: "%b %d, %y" }} -{% endraw %} -``` - -```text -{{ "March 14, 2016" | date: "%b %d, %y" }} -``` diff --git a/filters/default.md b/filters/default.md deleted file mode 100644 index 28020e9..0000000 --- a/filters/default.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: default ---- - -Allows you to specify a fallback in case a value doesn't exist. `default` will show its value if the left side is `nil`, `false`, or empty. - -In this example, `product_price` is not defined, so the default value is used. - -```liquid -{% raw %} -{{ product_price | default: 2.99 }} -{% endraw %} -``` - -```text -2.99 -``` - -In this example, `product_price` is defined, so the default value is not used. - -```liquid -{% raw %} -{% assign product_price = 4.99 %} -{{ product_price | default: 2.99 }} -{% endraw %} -``` - -```text -4.99 -``` - -In this example, `product_price` is empty, so the default value is used. - -```liquid -{% raw %} -{% assign product_price = "" %} -{{ product_price | default: 2.99 }} -{% endraw %} -``` - -```text -2.99 -``` - diff --git a/filters/divided_by.md b/filters/divided_by.md deleted file mode 100644 index a455fd1..0000000 --- a/filters/divided_by.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: divided_by ---- - -Divides a number by the specified number. - -The result is rounded down to the nearest integer (that is, the [floor](/filters/floor)). - -```liquid -{% raw %} -{{ 4 | divided_by: 2 }} -{% endraw %} -``` - -```text -{{ 4 | divided_by: 2 }} -``` - -```liquid -{% raw %} -{{ 16 | divided_by: 4 }} -{% endraw %} -``` - -```text -{{ 16 | divided_by: 4 }} -``` - -```liquid -{% raw %} -{{ 5 | divided_by: 3 }} -{% endraw %} -``` - -```text -{{ 5 | divided_by: 3 }} -``` diff --git a/filters/downcase.md b/filters/downcase.md deleted file mode 100644 index f86c952..0000000 --- a/filters/downcase.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: downcase ---- - -Makes each character in a string lowercase. It has no effect on strings which are already all lowercase. - -```liquid -{% raw %} -{{ "Parker Moore" | downcase }} -{% endraw %} -``` - -```text -{{ "Parker Moore" | downcase }} -``` - -```liquid -{% raw %} -{{ "apple" | downcase }} -{% endraw %} -``` - -```text -{{ "apple" | downcase }} -``` diff --git a/filters/escape.md b/filters/escape.md deleted file mode 100644 index 508f808..0000000 --- a/filters/escape.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: escape ---- - -Escapes a string by replacing characters with escape sequences (so that the string can be used in a URL, for example). It doesn't change strings that don't have anything to escape. - -```liquid -{% raw %} -{{ "Have you read 'James & the Giant Peach'?" | escape }} -{% endraw %} -``` - -```text -{{ "Have you read 'James & the Giant Peach'?" | escape }} -``` - -```liquid -{% raw %} -{{ "Tetsuro Takara" | escape }} -{% endraw %} -``` - -```text -{{ "Tetsuro Takara" | escape }} -``` diff --git a/filters/escape_once.md b/filters/escape_once.md deleted file mode 100644 index e8160a9..0000000 --- a/filters/escape_once.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: escape_once ---- - -Escapes a string without changing existing escaped entities. It doesn't change strings that don't have anything to escape. - -```liquid -{% raw %} -{{ "1 < 2 & 3" | escape_once }} -{% endraw %} -``` - -```text -{{ "1 < 2 & 3" | escape_once }} -``` - -```liquid -{% raw %} -{{ "1 < 2 & 3" | escape_once }} -{% endraw %} -``` - -```text -{{ "1 < 2 & 3" | escape_once }} -``` diff --git a/filters/first.md b/filters/first.md deleted file mode 100644 index 8513a60..0000000 --- a/filters/first.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: first ---- - -Returns the first item of an array. - -```liquid -{% raw %} -{% assign my_array = "apples, oranges, peaches, plums" | split: ", " %} - -{{ my_array.first }} -{% endraw %} -``` - -```text -{% assign my_array = "apples, oranges, peaches, plums" | split: ", " %} - -{{ my_array.first }} -``` - -```liquid -{% raw %} -{% assign my_array = "zebra, octopus, giraffe, tiger" | split: ", " %} - -{{ my_array.first }} -{% endraw %} -``` - -```text -{% assign my_array = "zebra, octopus, giraffe, tiger" | split: ", " %} - -{{ my_array.first }} -``` diff --git a/filters/floor.md b/filters/floor.md deleted file mode 100644 index 306ae15..0000000 --- a/filters/floor.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: floor ---- - -Rounds a number down to the nearest whole number. Liquid tries to convert the input to a number before the filter is applied. - -```liquid -{% raw %} -{{ 1.2 | floor }} -{% endraw %} -``` - -```text -{{ 1.2 | floor }} -``` - -```liquid -{% raw %} -{{ 2.0 | floor }} -{% endraw %} -``` - -```text -{{ 2.0 | floor }} -``` - -```liquid -{% raw %} -{{ 183.357 | floor }} -{% endraw %} -``` - -```text -{{ 183.357 | floor }} -``` - -Here the input value is a string: - -```liquid -{% raw %} -{{ "3.5" | floor }} -{% endraw %} -``` - -```text -{{ "3.5" | floor }} -``` diff --git a/filters/index.html b/filters/index.html deleted file mode 100644 index 43d6324..0000000 --- a/filters/index.html +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default ---- - -{% for doc in site.collections["filters"].docs %} -

{{ doc.title }}

-
- {{ doc.content }} -
-{% endfor %} diff --git a/filters/join.md b/filters/join.md deleted file mode 100644 index dfff763..0000000 --- a/filters/join.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: join ---- - -Combines the items in an array into a single string using the argument as a separator. - -```liquid -{% raw %} -{% assign beatles = "John, Paul, George, Ringo" | split: ", " %} - -{{ beatles | join: " and " }} -{% endraw %} -``` - -```text -{% assign beatles = "John, Paul, George, Ringo" | split: ", " %} - -{{ beatles | join: " and " }} -``` diff --git a/filters/last.md b/filters/last.md deleted file mode 100644 index 5e4454e..0000000 --- a/filters/last.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: last ---- - -Returns the last item of an array. - -```liquid -{% raw %} -{% assign my_array = "apples, oranges, peaches, plums" | split: ", " %} - -{{ my_array.last }} -{% endraw %} -``` - -```text -{% assign my_array = "apples, oranges, peaches, plums" | split: ", " %} - -{{ my_array.last }} -``` - -```liquid -{% raw %} -{% assign my_array = "zebra, octopus, giraffe, tiger" | split: ", " %} - -{{ my_array.last }} -{% endraw %} -``` - -```text -{% assign my_array = "zebra, octopus, giraffe, tiger" | split: ", " %} - -{{ my_array.last }} -``` diff --git a/filters/lstrip.md b/filters/lstrip.md deleted file mode 100644 index 72db9ab..0000000 --- a/filters/lstrip.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: lstrip ---- - -Removes all whitespaces (tabs, spaces, and newlines) from the beginning of a string. The filter does not affect spaces between words. - -```liquid -{% raw %} -{{ " So much room for activities! " | lstrip }} -{% endraw %} -``` - -```text -{{ " So much room for activities! " | lstrip }} -``` diff --git a/filters/map.md b/filters/map.md deleted file mode 100644 index 37b7b9a..0000000 --- a/filters/map.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: map ---- - -Creates an array of values by extracting the values of a named property from another object. - -In this example, assume the object `site.pages` contains all the metadata for a website. Using `assign` with the `map` filter creates a variable that contains only the values of the `category` properties of everything in the `site.pages` object. - -```liquid -{% raw %} -{% assign all_categories = site.pages | map: "category" %} - -{% for item in all_categories %} -{{ item }} -{% endfor %} -{% endraw %} -``` - -```text -business -celebrities -lifestyle -sports -technology -``` diff --git a/filters/minus.md b/filters/minus.md deleted file mode 100644 index 0ccc036..0000000 --- a/filters/minus.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: minus ---- - -Subtracts a number from another number. - -```liquid -{% raw %} -{{ 4 | minus: 2 }} -{% endraw %} -``` - -```text -{{ 4 | minus: 2 }} -``` - -```liquid -{% raw %} -{{ 16 | minus: 4 }} -{% endraw %} -``` - -```text -{{ 16 | minus: 4 }} -``` - -```liquid -{% raw %} -{{ 183.357 | minus: 12 }} -{% endraw %} -``` - -```text -{{ 183.357 | minus: 12 }} -``` diff --git a/filters/modulo.md b/filters/modulo.md deleted file mode 100644 index 6a57cd3..0000000 --- a/filters/modulo.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: modulo ---- - -Returns the remainder of a division operation. - -```liquid -{% raw %} -{{ 3 | modulo: 2 }} -{% endraw %} -``` - -```text -{{ 3 | modulo: 2 }} -``` - -```liquid -{% raw %} -{{ 24 | modulo: 7 }} -{% endraw %} -``` - -```text -{{ 24 | modulo: 7 }} -``` - -```liquid -{% raw %} -{{ 183.357 | modulo: 12 }} -{% endraw %} -``` - -```text -{{ 183.357 | modulo: 12 }} -``` diff --git a/filters/newline_to_br.md b/filters/newline_to_br.md deleted file mode 100644 index c5aabbc..0000000 --- a/filters/newline_to_br.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: newline_to_br ---- - -Replaces every newline (`\n`) with an HTML line break (`
`). - -```liquid -{% raw %} -{% capture string_with_newlines %} -Hello -there -{% endcapture %} - -{{ string_with_newlines | newline_to_br }} -{% endraw %} -``` - -```html -{% capture string_with_newlines %} -Hello -there -{% endcapture %} - -{{ string_with_newlines | newline_to_br }} -``` diff --git a/filters/plus.md b/filters/plus.md deleted file mode 100644 index 617a855..0000000 --- a/filters/plus.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: plus ---- - -Adds a number to another number. - -```liquid -{% raw %} -{{ 4 | plus: 2 }} -{% endraw %} -``` - -```text -{{ 4 | plus: 2 }} -``` - -```liquid -{% raw %} -{{ 16 | plus: 4 }} -{% endraw %} -``` - -```text -{{ 16 | plus: 4 }} -``` - -```liquid -{% raw %} -{{ 183.357 | plus: 12 }} -{% endraw %} -``` - -```text -{{ 183.357 | plus: 12 }} -``` diff --git a/filters/prepend.md b/filters/prepend.md deleted file mode 100644 index 2702edb..0000000 --- a/filters/prepend.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: prepend ---- - -Adds the specified string to the beginning of another string. - -```liquid -{% raw %} -{{ "apples, oranges, and bananas" | prepend: "Some fruit: " }} -{% endraw %} -``` - -```text -{{ "apples, oranges, and bananas" | prepend: "Some fruit: " }} -``` - -You can also `prepend` variables: - -```liquid -{% raw %} -{% assign url = "liquidmarkup.com" %} - -{{ "/index.html" | prepend: url }} -{% endraw %} -``` - -```text -{% assign url = "liquidmarkup.com" %} - -{{ "/index.html" | prepend: url }} -``` diff --git a/filters/remove.md b/filters/remove.md deleted file mode 100644 index 6e9f695..0000000 --- a/filters/remove.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: remove ---- - -Removes every occurrence of the specified substring from a string. - -```liquid -{% raw %} -{{ "I strained to see the train through the rain" | remove: "rain" }} -{% endraw %} -``` - -```text -{{ "I strained to see the train through the rain" | remove: "rain" }} -``` diff --git a/filters/remove_first.md b/filters/remove_first.md deleted file mode 100644 index 3b7157d..0000000 --- a/filters/remove_first.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: remove_first ---- - -Removes only the first occurrence of the specified substring from a string. - -```liquid -{% raw %} -{{ "I strained to see the train through the rain" | remove_first: "rain" }} -{% endraw %} -``` - -```text -{{ "I strained to see the train through the rain" | remove_first: "rain" }} -``` diff --git a/filters/replace.md b/filters/replace.md deleted file mode 100644 index 62a14f2..0000000 --- a/filters/replace.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: replace ---- - -Replaces every occurrence of an argument in a string with the second argument. - -```liquid -{% raw %} -{{ "Take my protein pills and put my helmet on" | replace: "my", "your" }} -{% endraw %} -``` - -```text -{{ "Take my protein pills and put my helmet on" | replace: "my", "your" }} -``` diff --git a/filters/replace_first.md b/filters/replace_first.md deleted file mode 100644 index b8056cc..0000000 --- a/filters/replace_first.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: replace_first ---- - -Replaces only the first occurrence of the first argument in a string with the second argument. - -```liquid -{% raw %} -{% assign my_string = "Take my protein pills and put my helmet on" %} -{{ my_string | replace_first: "my", "your" }} -{% endraw %} -``` - -```text -{% assign my_string = "Take my protein pills and put my helmet on" %} -{{ my_string | replace_first: "my", "your" }} -``` diff --git a/filters/reverse.md b/filters/reverse.md deleted file mode 100644 index 15432f9..0000000 --- a/filters/reverse.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: reverse ---- - -Reverses the order of the items in an array. `reverse` cannot reverse a string. - -```liquid -{% raw %} -{% assign my_array = "apples, oranges, peaches, plums" | split: ", " %} - -{{ my_array | reverse | join: ", " }} -{% endraw %} -``` - -```text -{% assign my_array = "apples, oranges, peaches, plums" | split: ", " %} - -{{ my_array | reverse | join: ", " }} -``` - -`reverse` cannot be used directly on a string, but you can split a string into an array, reverse the array, and rejoin it by chaining together filters: - -```liquid -{% raw %} -{{ "Ground control to Major Tom." | split: "" | reverse | join: "" }} -{% endraw %} -``` - -```text -{{ "Ground control to Major Tom." | split: "" | reverse | join: "" }} -``` diff --git a/filters/round.md b/filters/round.md deleted file mode 100644 index 548386f..0000000 --- a/filters/round.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: round ---- - -Rounds an input number to the nearest integer or, if a number is specified as an argument, to that number of decimal places. - -```liquid -{% raw %} -{{ 1.2 | round }} -{% endraw %} -``` - -```text -{{ 1.2 | round }} -``` - -```liquid -{% raw %} -{{ 2.7 | round }} -{% endraw %} -``` - -```text -{{ 2.7 | round }} -``` - -```liquid -{% raw %} -{{ 183.357 | round: 2 }} -{% endraw %} -``` - -```text -{{ 183.357 | round: 2 }} -``` diff --git a/filters/rstrip.md b/filters/rstrip.md deleted file mode 100644 index 3aee7da..0000000 --- a/filters/rstrip.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: rstrip ---- - -Removes all whitespace (tabs, spaces, and newlines) from the right side of a string. - -```liquid -{% raw %} -{{ " So much room for activities! " | rstrip }} -{% endraw %} -``` - -```text -{{ " So much room for activities! " | rstrip }} -``` diff --git a/filters/size.md b/filters/size.md deleted file mode 100644 index 0242459..0000000 --- a/filters/size.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: size ---- - -Returns the number of characters in a string or the number of items in an array. `size` can also be used with dot notation (for example, `{% raw %}{{ my_string.size }}{% endraw %}`). This allows you to use `size` inside tags such as conditionals. - -```liquid -{% raw %} -{{ "Ground control to Major Tom." | size }} -{% endraw %} -``` - -```text -{{ "Ground control to Major Tom." | size }} -``` - -```liquid -{% raw %} -{% assign my_array = "apples, oranges, peaches, plums" | split: ", " %} - -{{ my_array | size }} -{% endraw %} -``` - -```text -{% assign my_array = "apples, oranges, peaches, plums" | split: ", " %} - -{{ my_array | size }} -``` - -Using dot notation: - -```liquid -{% raw %} -{% if site.pages.size > 10 %} - This is a big website! -{% endif %} -{% endraw %} -``` diff --git a/filters/slice.md b/filters/slice.md deleted file mode 100644 index 79aedad..0000000 --- a/filters/slice.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: slice ---- - -Returns a substring of 1 character beginning at the index specified by the argument passed in. An optional second argument specifies the length of the substring to be returned. - -String indices are numbered starting from 0. - -```liquid -{% raw %} -{{ "Liquid" | slice: 0 }} -{% endraw %} -``` - -```text -{{ "Liquid" | slice: 0 }} -``` - -```liquid -{% raw %} -{{ "Liquid" | slice: 2 }} -{% endraw %} -``` - -```text -{{ "Liquid" | slice: 2 }} -``` - -```liquid -{% raw %} -{{ "Liquid" | slice: 2, 5 }} -{% endraw %} -``` - -```text -{{ "Liquid" | slice: 2, 5 }} -``` - -If the first parameter is a negative number, the indices are counted from the end of the string: - -```liquid -{% raw %} -{{ "Liquid" | slice: -3, 2 }} -{% endraw %} -``` - -```text -{{ "Liquid" | slice: -3, 2 }} -``` diff --git a/filters/sort.md b/filters/sort.md deleted file mode 100644 index 4c3c599..0000000 --- a/filters/sort.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: sort ---- - -Sorts items in an array by a property of an item in the array. The order of the sorted array is case-sensitive. - -```liquid -{% raw %} -{% assign my_array = "zebra, octopus, giraffe, Sally Snake" | split: ", " %} - -{{ my_array | sort | join: ", " }} -{% endraw %} -``` - -```text -{% assign my_array = "zebra, octopus, giraffe, Sally Snake" | split: ", " %} - -{{ my_array | sort | join: ", " }} -``` diff --git a/filters/split.md b/filters/split.md deleted file mode 100644 index 740b6b4..0000000 --- a/filters/split.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: split ---- - -Divides an input string into an array using the argument as a separator. `split` is commonly used to convert comma-separated items from a string to an array. - -```liquid -{% raw %} -{% assign beatles = "John, Paul, George, Ringo" | split: ", " %} - -{% for member in beatles %} - {{ member }} -{% endfor %} -{% endraw %} -``` - -```text -{% assign beatles = "John, Paul, George, Ringo" | split: ", " %} - -{% for member in beatles %} - {{ member }} -{% endfor %} -``` diff --git a/filters/strip.md b/filters/strip.md deleted file mode 100644 index 588bbdf..0000000 --- a/filters/strip.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: strip ---- - -Removes all whitespace (tabs, spaces, and newlines) from both the left and right side of a string. It does not affect spaces between words. - -```liquid -{% raw %} -{{ " So much room for activities! " | strip }} -{% endraw %} -``` - -```text -{{ " So much room for activities! " | strip }} -``` diff --git a/filters/strip_html.md b/filters/strip_html.md deleted file mode 100644 index b41eafd..0000000 --- a/filters/strip_html.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: strip_html ---- - -Removes any HTML tags from a string. - -```liquid -{% raw %} -{{ "Have you read Ulysses?" | strip_html }} -{% endraw %} -``` - -```text -{{ "Have you read Ulysses?" | strip_html }} -``` diff --git a/filters/strip_newlines.md b/filters/strip_newlines.md deleted file mode 100644 index 0a0d48d..0000000 --- a/filters/strip_newlines.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: strip_newlines ---- - -Removes any newline characters (line breaks) from a string. - -```liquid -{% raw %} -{% capture string_with_newlines %} -Hello -there -{% endcapture %} - -{{ string_with_newlines | strip_newlines }} -{% endraw %} -``` - -```html -{% capture string_with_newlines %} -Hello -there -{% endcapture %} - -{{ string_with_newlines | strip_newlines }} -``` - diff --git a/filters/times.md b/filters/times.md deleted file mode 100644 index 694959f..0000000 --- a/filters/times.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: times ---- - -Multiplies a number by another number. - -```liquid -{% raw %} -{{ 3 | times: 2 }} -{% endraw %} -``` - -```text -{{ 3 | times: 2 }} -``` - -```liquid -{% raw %} -{{ 24 | times: 7 }} -{% endraw %} -``` - -```text -{{ 24 | times: 7 }} -``` - -```liquid -{% raw %} -{{ 183.357 | times: 12 }} -{% endraw %} -``` - -```text -{{ 183.357 | times: 12 }} -``` diff --git a/filters/truncate.md b/filters/truncate.md deleted file mode 100644 index 45f018d..0000000 --- a/filters/truncate.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: truncate ---- - -`truncate` shortens a string down to the number of characters passed as a parameter. If the number of characters specified is less than the length of the string, an ellipsis (...) is appended to the string and is included in the character count. - -```liquid -{% raw %} -{{ "Ground control to Major Tom." | truncate: 20 }} -{% endraw %} -``` - -```text -{{ "Ground control to Major Tom." | truncate: 20 }} -``` diff --git a/filters/truncatewords.md b/filters/truncatewords.md deleted file mode 100644 index c9ee849..0000000 --- a/filters/truncatewords.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: truncatewords ---- - -Shortens a string down to the number of words passed as the argument. If the specified number of words is less than the number of words in the string, an ellipsis (...) is appended to the string. - -```liquid -{% raw %} -{{ "Ground control to Major Tom." | truncatewords: 3 }} -{% endraw %} -``` - -```text -{{ "Ground control to Major Tom." | truncatewords: 3 }} -``` diff --git a/filters/uniq.md b/filters/uniq.md deleted file mode 100644 index 7ff73b9..0000000 --- a/filters/uniq.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: uniq ---- - -Removes any duplicate elements in an array. - -```liquid -{% raw %} -{% assign my_array = "ants, bugs, bees, bugs, ants" | split: ", " %} - -{{ my_array | uniq | join: ", " }} -{% endraw %} -``` - -```text -{% assign my_array = "ants, bugs, bees, bugs, ants" | split: ", " %} - -{{ my_array | uniq | join: ", " }} -``` diff --git a/filters/upcase.md b/filters/upcase.md deleted file mode 100644 index 2aa7f0d..0000000 --- a/filters/upcase.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: upcase ---- - -Makes each character in a string uppercase. It has no effect on strings which are already all uppercase. - -```liquid -{% raw %} -{{ "Parker Moore" | upcase }} -{% endraw %} -``` - -```text -{{ "Parker Moore" | upcase }} -``` - -```liquid -{% raw %} -{{ "APPLE" | upcase }} -{% endraw %} -``` - -```text -{{ "APPLE" | upcase }} -``` diff --git a/filters/url_encode.md b/filters/url_encode.md deleted file mode 100644 index 68b10d1..0000000 --- a/filters/url_encode.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: url_encode ---- - -Converts any URL-unsafe characters in a string into percent-encoded characters. - -```liquid -{% raw %} -{{ "john@liquid.com" | url_encode }} -{% endraw %} -``` - -```text -{{ "john@liquid.com" | url_encode }} -``` - -```liquid -{% raw %} -{{ "Tetsuro Takara" | url_encode }} -{% endraw %} -``` - -```text -{{ "Tetsuro Takara" | url_encode }} -``` diff --git a/images/500px-logo.png b/images/500px-logo.png deleted file mode 100644 index 7d86372f97d041239d20d986471bdbe953b3d224..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20873 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

=+dil>WQ@(BIrwM6V4FY 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 F{ud0q#{>WX diff --git a/images/rails.png b/images/rails.png new file mode 100644 index 0000000000000000000000000000000000000000..2ca83815bfea3de134c06184f84d830475e4911d GIT binary patch literal 11119 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 Bgk}H$ literal 0 HcmV?d00001 diff --git a/images/ruby.png b/images/ruby.png new file mode 100644 index 0000000000000000000000000000000000000000..258dad85c7d4e2bd2ae06d190188e45a9a7483c6 GIT binary patch literal 5557 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 diff --git a/images/zendesk-logo.png b/images/zendesk-logo.png deleted file mode 100644 index baeca7ad84915a882c0727ce2293f81e3727cf96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18567 zcmY(qbzGBg)HsZyB8ng&-5?-R4x~$^L|UYqNtZBcq)84?>6W2{lyrj#Y{X!U8Za6e zqhpMYck1`~J zI9rr9v`Upnl_lz0r0nycup&4m^f7c%g(|YO$gx=yr49`p;romG$P4jO6GcbI_;mCk zN(ChW4N=jIHe)C`cc5_>ZB*X_eju1wmq+Ip_+I`Cf2YGF4$-YOHXWy+R$b*(tFoq5 zcjhV7Xuf9-BNz*ob{JLb{RMnot$kz@0jo4xR6U7u(EifuK+Pt6JmQr#y86^i;2-bC z{O0&9-izsk&?-8tZ3S;y!t#b-|gBu5#d)ZDGgGl{8 ze7{@TNZ3F{*+Zr&NVVC2{2)he}PE6nDHPUu_a$Zq>~>R0j2B{_MWgqQp)uADW{^rjMB1T+xJmp zXfD$joEuulQx-4bJo+Cl6W*0aGS}A^>Y-F#DKbWZW3GNicv#B(51HLSF+NNCT!DI8 zVD-7Jr5g(h>}}NlZ*epLYzptoURT1~Lfxyr6*^B~r{rc*fAJn2<~RHQcI?Y&!Z(Lq z^{rHX;``%aDeFI)ZotqN(EMhj1l60ydZPUN&(DjUmi|dIpT6q{ji;5uen<97Ec=BW zk&-7``YZ2!t@)>|_s)n2x}S+?iRH7tk{l+LEq=ZI7UzwB$hORQ%#D`_LykxX!KyeT z9Zulc6*IYi@&x2JtN+rNO@COlWc4k%8;n14Cj5uRgfG46)a&XSpUowjS0)=d6WNT2 zK&}2;<1aC6-c2`zA%BXg^}F!_%6~YfY2KEX&MW3%77`_hz$U)k-Ti#Re-hdvjJpyq zbPZHM$@-pE>gSJvS4xS&P5f|D07K>TPjwaeTnyEwv+j7AmVf(Stenn|7pi25`u>4+ zNB*CZ@d{>2f3Y5&=Qj&4_g&-{L63S1J7{Gb{}UpK8P5w?xV4%qw)!IlSMap2;ZnnHWu5XYeOvmgND5cY}7Q;j`C$*^xOBv-TL?c5hFec zFvYt@s-Ho#>N9Y?Px9@|zb7B#0UY7;BAOk~O3-yYf@sCPf6?(e7;;3Px>4y97DWiu zc)29|`TroinGn$&RtcdwoqGcy`%9<0C)G1zLd5(eMXwyBZj_(!e>k@$la!T(M@!Of zh{!(i`Q$NA-@6X zk%jV2!`}aphaRqga7Xs2peQChhmU!fxV^Ombk|MC_3B^TrZs4?HB7PJ?EiZ-{6*<@1)%NQd$CX&4O7`+?tk2( zT?f(B+K|Ci-TS$2qAGfE<>pCgo>`9dk`dg0T(k=kcGWY!s`v(HCjv;SFHRcbLNin8Xt3)qd^ zc=6&rPTEp~zNVy7J|=R8VrqnaNQ-G8`e$mno}GNYD_>u8Xi0-+byO%LRQ>O=9#KOA zG*Oif=QFnkw?n>SzN!|l-4FO+pQ*ULF~=Z*Kh3)=wR8;lW)M}uXaZ}K>x$D5dZhc; zIIr*AIx2zkJQNI2ajYP8wCh7d=|W#iiw%0mMopzES*fx5m2LYwU2bmQv-oGs_K)S9 zjT(Edo&I62e0VukK_k8MesM+qoDbQMsZNaF=(-fYpekXwQOa&f0k@92BQtS?;U<&G-v zdJ9v+#*YZMv(MW4<<}-|og!ZLc__B;eaCgM`aN+{Bkc2z9i38!UMN7XuB`kO^EQ;r z`jL%Fa28ame=4MFF6>ei6YLeCK5|;HYb?BYhff*eP5_A*14X~H~>B z+ImMrcFU+)3HUDV**=&~@#Kd6X?76ENidMYmQ0QOFS}RH-)r$c*JQ7R(n@U6Dv{sppWD*trg>7zGVN2wpn+dn&IJbu^; z+0~-yXL<$RTR)QMPn<6n``lVXevd1c{RjuY_b-M=Q}Y#}3^!i(dO~b(R)z=(bY-?d zi-)Ka3%=n_`Fg#4m@dYyy{RdpQn?98|0~@iUWcMKT8r@%=&@s2}nh%n!y2 zl6UZeSF*KkgZ}w9Z(2s^Rq-W*kvTQi^4wdA&TEl zDE<?OQxf}mBvg;;?ke@_jM?i&xs0JZE=*FT!{TH zC~=wO7KC<#;2_AtFUxPz3ahTiy+lcy@0B)@$Pb*ib+Mcrg@@`pqVPl^>h2CbZH(f> zC@itAuS zpeUW&EkehoZ>|=_sP^%?AQ*%}@J*AGG+1l{p91Z)=>vl@jV=exLW6Z7+4?V}zp&J` zZ5e6ZBqWc%Y>l=;F?|6A3W8?g>7@5Yqya6{-}hXj7CX->I95s=3lHeeo)-jDMepAc zc9+T^R9v(coQ2hdZ84losKp)?5k>#bL%YTr80H`GmhuLN+T=BLu@X{}M>bod63iMx zm`oqwoC8CI&EBm98nV#wJ6=}GJ;C4P0p5{HSnA}AeO@1Odc7W zTgqs3apEYwbvie;&AG3WkX&jpK+~LAEH!O#y3la0ctJgrqJH^8OnK~pieGh1VYpv~ zS;b1mK41mQuQF9a4Zb%|nt-dPryq}D!Ot!crSvJjdo7%fSsG8Dkj))ULUOxX&am9( zOg8TTbKB((XOGttf1F}gJL8TaL_J!#VYS+?{zEW`P)0H9xwZB?!R+c&kIeCcZjJh-H1!ei`O>PJ z0f%9o#eN&IM5-+GC3xC}fx-16SY_J!m1Vou5zk-g1ZkXNnr>^5kX)b3YD|3RKeag` z^yvBG`!f2l%pK{9r!Re9MJOC}1}?+bnDI$#XJNiA`|G~v!O*h_Hs7#zq9bF2P&H5v z##)W9!jzoE0J{A%h!9M+RbNnK`uZy@Dwh%#HOyW7PItWl>GUhL{P{AH5IOi>_QD!{ zEfky3*k)tX4mq;$DJ>+sdiMPSczHvw>Uk|6^besXf;QQfO#h|ftjViS9Wq~idUdqa zz4~Rp;lTY@s#L!D+8H7zX3;n7u{nzBDqzWTuoTLEJJ2}os@UCFu74D2-gT&a?|a@s z(gUH3mto}DOYf?sX2zfOJ;X|lm=i z2@B?EG^~EtzTG)#7X~FBhA%Z+pV%TUeR*H8&=v=a3Z))x-`Gc#r+hpujldb4RB@~~ zgQs(f&IY}L&aB149z%}4`xHBoy-W1wYF1GphBlCrgb`l|IZBRwY3(T_7&QHUG;i(n zsF!GlzVJ{~=VeBak-#DwMIhe@B^3{G-LHweK?wK-tT_ueJ^4XWUtN5Xe?$Pe;7dWQ z`-}U_ZBb@XvQbtQO2c8rmdb6o)XR+ceV^h&viF{}&JlQOZDQc3l9IsW?*q%snmoiD z#h0s0#*WWeq&3UT$C0$|_F?{7Svlyi;&$t5n}z(~8rHVDb3xa>}+XJl3niiB8&ws_@w?(*qBcIh7<0%ddZrs#&IjKrm zw zFXEG?sS2EN<}~ehF)#Z9)2M($+A6n6hiVxAtg-!Q z;#R&iN@X515Bik08=;}{KiVWhP;?5*FlNX}%o~T>r&{_z3aO}L%g$B?Vy%hi_1P#a zr}zI8N51b7!fDw)BsJZ$YVxw1v0JG~WAOmNQ;r&io1B&XRGPf?WQ3@4U>tz#XDSe3 zc?GCI6^=DUSun}F3Zn9%3@nFic~K5N?pv9WT1W0G#1i=cOB59%1Dmpcq$b1KELym) z=xxq5tFq@JF1Wi9>G0592YBppH~*Ba@&|FF17ihJ{!wld_no%X(eyY?VwgTL;`<}%Nr*lI zz!J3vX+ZwO-N))0UYqAZK@An*e$ev!7T>ls?!NPM+)&L?x9N@NGW(+ucq-{19Pkx& zr1yo9Es5f7LivLKL8aE(=)<=mk#^heZUI;FPsKI`{~DZVF``{%R{85Fj2IXtWIy z43J!^kOC&(6 z5l#;JIfBVnR3k0ha)qZS`PgnW{w|8IF)7>WuQ~o!1L(DYkEMDS>|Z>(e#pdMn976( zOr-txAd+cf{0Bg0TyAi3PtU-r_+3nrlpk&X(^BPykZ0vAnVL%6(S8hB+>K^Fb%b~1`6(Mp66GCj zs#1{ybZqw~O{xpAAz#!$QgfuLL6IVN6hw~o9+pBXwpf~u@q8`zofM~9BOW33sdAcW-oQ$o*^(qa?iTeuQB)N1OfDGNXp6{;2{A{Jpu(YNs*W*bRmHYBMN)jl zF!S|t>MVy1`$FDscU4bscG0u#hVM@5C@v`8je^bfd+cz`e$L`LlH*P+y`@WtpAv?; zF`ZCs6g5fNz$^%Hg$$@-+5IdPU76@lWj|+KVPC0gZjm44Z9>B)?_Tsk zJS7ediAPH@)V|AMk=OFh2%8F73_JDN?`?(sd~L~yDB0(D9lHthhZa6@AtZfb*|hyX zJh@h*08}FTW)bEwB9%Z;+e`U2{l(C5r@WFy>%q|P9C^rx@6KvE_Ae4@BFxv7SJI*E zjQBlBgYf4P+bz?L@~!9@8U;>S3#G~r$8*c-4#XQuR(}g)x`Qz$>zIRv5KG08+M=o< zGJ%7f^RY1wB$qAruI5PnWkIR5E|4OMe1B+QF=YRp_MOqMb-dh$UEbs|OEK(=QvI;E zmQ@d&8S&Bl^L^1e3@zA(3!N%e%9c?l#XwsPylzNXmJ7!{iPl zUoDGpV!;>@N=7-3mCMap8en1@$V|Pdrio;%BPlbfgzd7%aqesV()EB^YIhe*l5$|V zHa#21$V;wMll|I_vV_Z#v&dS7Pyt9o$~e;bY^mk-@%BwgrPaqC-AxqDbwf4}DfQ9ge zYjz0n_#jP|wN0vKsx`Sq8r134%{*au{=xCcWx%2k{HNBXF;Up*#TwL;4h|v!5m+#T zO>8&+Y03j(fzB^8y+$?HmQGp4P2Vyi{OoTm$GlttSR?!*I*riCm@)f3r&mG~Fu(K8 zJ4kDHZ>5|1r{c+^!nSrofRSm#DqDoOI9OCoT4ar~>*`IX?i^jW-1)#JaGpIU0Rp(l zW50&^H0jbSZ&{28Mndm1Zh+^ch2LKN+h+{?8u^BP|7ZQN2-(wf3b;2ZtBSocD5EV0`Puv z)#7~TvUs@}>@ZFS?VB6h0RGS+jv(N*M65b0Z^Ndz!o^3m{2rkNwIyj4*m~dpsd`T$hppBgE=wGsLPrdji z;uEymPu@zVp6{nMc)S82Z&l71DoEZdchvE!1KpxRW$qk?o|1j5gy7*a80B|SbH-zED*JPHm>>*yX%IL z(}A62pjqgCr&zLiy=yCbzk90~&+DB}f3?f#3w&~Vp+h+hf&p*XCL;DGkRX%x*#=tW{`R4#2+5uYD@HDX#^o%q zRL51<;8uofC-+UX5#|px@6CR{bvk8yynIz`sc!<^h+V~lnt%jp77GIFtdHU8%$Q`F zNnh)GbI)*g$`B?3eN~#4~V}EEzCcg9$Amx-9Oed2-*P#8^>V(0zpGyH?*X<_EBNb=Pf;w=TZF`7MZ_S~He(Rk@#G&EB{R70szu{g65 zP0p*T~?b- z*{CPRr9!j=(N6Y9U16n97o;OL8o52faO>QRAaGnZ_140k^MLWqk~a277QI6#Mto&o zwbp=oy5yeWAe!5Kq&)d^q1O2Ti@k#u%sO-dtKkD(m9P^7AyDS&wjJ6 z%9Xkg*1CX{c3hs%j$R2>uauvq_-o<{6)_M!!VCOGVanGCw zfaOif18JWdXSuv>kO`&>D0s?J&5TTYc5gPy@H7q%oSgJn7TL7@adJW@9=CSpy($+c z+U;vsE8uHs3JXS^UW$Liayzfm$1}EI4bTT!)ac}6SaL^*-n~YrQ69aT3Y>DNe(At< z_?F5|s+8S+NKg!(4#VWM*vf@JiNt)5Tcl|Llpifh#u;BuJrG)~Ql4gBdk^j0HOx3w z7yoo2e%YY45yxYt7q+T~ES7VNDzic!KK*&G4Ol_KN8Q*9F!TACZCaV7AU@W=FL2S4 zkX6IVY1W2~7Zmm!{v9Br)YN*n;N~leb>N~zNRj*otqCido3Be8yW8Y{^UJBrWLdRv z)tZUj?@eFr@}+VdFY~=g3(#aF`wbhGgEntS)>g3Gtod#^aO12YvFocL6S8CreGZjS z35pu1df(cLy_R6P)f+pV>gp{oSN6%VEl_tE(keId`>8djd9q&ZxhZ9!EGL;X)5d!N zH$9Huw_~{Wza<}+b6P=X*zLY1lr)zihb-9Dqv?CTu*OV!Wk`A7@B4O%eV*L*W=WZa zr48-LW628i`nKgpN1uH11+X|>sVuNT@O2b?M9=TB3EPK<{6~g+i7glE(POlwFV8%6 z63!3kT+Zut{jJRjqg9bgwg}C*lOdUGHbaA!ru|`x+WB%*Jp2}i^?O-SzdK4CQIa(w z7M}Q$eab$l6qB&Xq_R&?KZh}0<2__9`vT23KwYbk8p&cVdqFzN-*J^;<*t==@-*o1 z@`=?`(+3+d8!V}fYNK)ysfCYC1}Me}wfC8eTXzl#K>*#I20(;gVewS4w3}z+uK;UQ zZOd43guAyEjNpl)Pip9J)kraF_-Kvn6Si*I)nE@T`LBqT48A`hg_sbV#^JM!?~J3$gqMd_xzN?nS2Ha}U6x7BYyQC;j-c)+))ADM4_>bNnAl+<5K@iLViR}Yupw4UW!mM%-c zpDgI397N)Vaq3iO()^9>idY-OMVp5RzPS+e$>H|Fi&~?x9Hl)I*ogw%Qxndi_cjea z5wUGwax2833r=f&lUkn%bn-FnfRNhw&b>pP#k6F?mFivvX@f<`;3%F;rqhk?WHNlm z!wPOwA;``eM)^(D@dckk72i@)PeinToRI8C1l?GJ^f=da^#h;>5~cU{+`hB)#j84 z6K9%2%?Fqz?JpG*_H|Va3T28`>lGHQwcU!Q8>U^5Ub%>ZQIG_~MR!H!nL;aqpuEMG z-G@dG{5)nBkM9$R;{gRI1v{wUHp9NaeiPz<%oW>^W@v4Giu47GG(g14HwD1U@K$f` z(fX#b?ZQZ`wx9|3#%%hbN!aHtsvH0#sIQIY3C*tg8sBVx6+k#|Zidiy|yBzRZme8z3h^Lx1>4pm2u4lzoWK0kP`tfvm+uec+YW=*AEv;AzF*pL=B zzq0!zatE@jz?-~qdd#Mu=ce<&t1t&pUNJZ!<` zY89Zb1aMT3wnwq|wpmdwrB_AKMGHyH7zerMH=lg1cM)mZazbu>$a}I@oa}s@0c8Y< z7bpcjSW+fsOK39trHUrs44(2?Sm?(2B6^1;v3}wjGsYCFn}eguH^wbKrI+$(3R!0x zFIyOBca$D2D$W!G#?lHIIzSrkn@{3N=ckB{^(#Ukp0kxd@bKQm5GXA;b0S#aih)%D zA|h}#Zy0<2ZHktKF)0>$d_3N<*qY;am8|h_xsM-wU4e*?+u^J zWZ-Std+T3El%52s?{4~r1Z(;8BJSh@INA|H3P2ATgX|kW87#01`>{foYpuSjx$e{S zj&XevH*f5BYFJhS z0CpoS>zh4-fQ=#XwqIEo9N;2zE4Z#bR>zy{-b#{lHc6A+L~ERDU)Il*&EoEP6O$FI zxbVu3Qm|80u9eEa=sIu)x$`ybb%8fTaChg5x$kM07n{)UdWzPvURlXsp^eFKs{9#9 z1KTht4TIZARZJc$N{MCrGgC8P)rOr*i+2c54hPgx{fJn8m_0g52A<(GaIxQD%k2ql z?W`=lGgr0N=Tu9R9rA&M`PH+@sQHF=Kgp`;qLnq~8?(#tWO5?I0BU%sU!_D;OTyo0V^=7u zJqV24r2I)H&-zQ4_1lZ_Tn-y6jX0ba$63dU8tED8M7fm{G$|Dt5`N>45% zk1Y(maRLD3{V!z_)OuW~h7Es9$#bhLJis*kVTdG)eA z15lUuPz1Af>r;G>xJhK53ww=igJ^pZvvX0b$(a#H&RD7f5>xe z6&(?L3czX~Nc3I88<2#$CX8REU;MuQhCJ9ux}sAI!TfVnKmhkNe7UWKbtRZp=F+%07OACwsZC;Wg~_vM?rlu z+3)Eep8(`9CbA_70TQS{nPiZKn;LIHpc!JG5#5dwFQ0!u(Fd2}R#zTJAWx$^B#RpE1wMFp6O+2Oc^`H2 z65{el@xoDAW_m;nMEBSBO=P9gRv=-0cJlAyNH-}PT$+PgmGTj)fr!*b!CW` z{$57gPnxx^DKS&dzP8 z)oDDKK@&yHrNk7(PiG~pe_z%S=JW@8Y-KN!rY?sGn2CRQ?aql(fPYM{buSU)7z`w)>5l!*?pUq+^MhAsmU8}x4? zE~hT8_0xgA()_r^^UyTr+ODdi;D(`Evze@-X6pBA3;}u`8@M=B_+H@5GN?2@c;&&` zmQPe|!U>zZ;M(UM(EiUs2{WlC*^-Pi@!)~lxN;4Q#QaY1)32~#@(AR~Q)tEJoRi$i zFlA0dn2yXRt6I=eNX5bolt=(TI}h9Miib{w9^9Dws=MLU))rgoS*m}oW&(ko8Z zuE#d?t+`TZNYD7oOxh04%!_j*;DdE(+cqOK{5=r(F{A+RLMh9SQ0i;IE@EVdsn`cr zB7`>@?+37l%bjf$8SZbfDNueCy!ssL&X$Z%eUIrK0!&5D1*D*7KEYqfMjQ;yvT1OH zd?i^tjwLp1UGdqpYRqfQ>b|v!9gbs3=TUDEXE1ZNff#`9Gme5(^{9i2>WiR zfC=t@N6=Gy3`r>S&V6|ZDVGg|am0ATD;BBBOl5`oCVXe!b8B72E#+ zR<_x5Ciw|q^P(FzMKjXi;>bYfRH7uv4Q%BH+PpgM1O*ZA8a`=;jG3=LbzAF(M<>=+ z=IA9}3LPD9O;6OXb>#MV?PyFryrklZ-#yAXrvJ)u()eNSL@%MB8&s+jMD?7M=KJBT{zn#@1t+l8S_O8h0(X7s)JdCEb`h zaUtJ6N&Q?bwn&p6wH-=g+_Qbm=e!oU+A(bLa=rftyQJ+ey02rf)Sxv|^=lpo2GICG zI74@;C*vnTTO{DYQ{REy>HXT0Nx&HT1cg&#RV3 z{LIZ^M;zQ`O+hMxb_mdL-SHY!HH};0WR@H6` zXSFFf1ziGI;|ifdDxs89;xe)GShsABv6a(2|6VOisCOc2MFjSfb5wL$Qoat?+P${@ z7^U<8d$b8L@LOa6f$^+=DcRxPoQhW`?K^nkdI_RCE8BOWm1Uc~|Ht6>P>nQQ({Vl+;Tv!bhe(Hg36JgHscZXZMxrucHOV zDI;0rM@wg-X7X_PS3Y>{GZ0rq<$HAylt~=T(1(~$usHL$t6E# zUrz{X-?=G{1t%E3=q3EJv{o~X(=MS_%r^9UDjwh(>A`SDV`~}gfF|vqhCX@Q%xmO-EK&h4SFnxQXkn&sJS_WIr4}+dq)Lb>N#7&BqvB;vo%W z&sHq$*=9F^fcId*!UL&}&*K4EfVKp$2hFAEH+5S^&|IiGcd4}{Zb)#<%ofqI@&lT7 zY2$7&<|}UP(c8hcPDeDw#~l9SE)WBQdEL@%rsl)vdrq8!D;$$af@@K-HTUj4-?x{? zYK=?&I-dAIZv0ACdXW)`Sd_%Rw5Mug@97;7$^STce7RP9x9|Fzsehi|K*RaD`4_(y zd;R{$<{_8N#43%wDSk@Y%j1*Cr8?zQ#APA=4C0;q7W%!E#(LdErEm}X?h zI<99FypJ78FZMy#LKb*fTt?eZwdnHYK6{O%%L&GDi;88 z%hi^|^rkr=O1!q;J&`wW7)Um4_UKGD$7=60d>vZKU0N`j>hmFitg~yA{;ziTP5d0M zurHr+i(%p7?ANMV0$)C91yZ3BK8>82gLw-mex??SZi9Ib?o8Xi0XfwVm%P+q^?|;6 z<5cYnC5IZ9R*bBwp5WEpp7`hEIOTMk0&2`3yCq!=U#4iz!=H*d`YL2;w;rdxu^xF? zaAsO3gv_M>B3e_n<4?5?0&viMbj*qGG2X1>!R@4QQ34@=cucCl&-l5>{lTF55@Mp= zgv2&Hi*K_OG?PZP4jR8Oz{3q2xZt**ov?42Kxdp4kqU4WdsumL0|O=Z=|GU*<7@L< zLMtlj&}@|^wxu1`u&wU3@9#Q}QPXTZdhaHu`~>&5Zv!FVPGVBoxv7pkRCzOV^FZw- z!gAB(lwr{`Z^(VNFWfIAB_bZLPL?@p>7P<78VNv8|CnBrSJ#Z#+6v!u`viL4HDt?h zf82QJVlwWXk&4o!WK&f^Efh>julsetVww{WN6(}Z48ZQN;2BtF#!>m4XLB);kcPhE zX-dZz@6{%!pVyv9R!>(h-}OL*RRPO{Spw)=D7Qk9GWFxRECK4m3nA%&ZZ-xKfj;iO z61wC%`SuFbeGN0`SqF5nfBN=PN02&MRwTXXBaYO*9XT#n;0)}uSVO>=CKFw5+J1q$ zX~eihlhQRYQELf(V3`bT%nb`}ls%QsIElD@ukDS8(HuxEVZFrI(d^0g#)~>&$WoCd zYpTg~7WPNkQ?1B9GddR#xa@k~3H=u;H#%Y|cg&u{ndZEF@m_2)H~rU!itds;2fB3M zomL!+OiG{A0oj^9@w6tiD3vN9D2p`UjTw)Hy}57K{tlnkaoiqP6V>=}9xhi>-d?Ro zOzO?6j#E>%9Bk&V6<-10!%oE_qWUKRVo$ERKTn{^5j~bHXgC}oXTtaO_S=8yxvpv* zq@~rwRjN2OP!DX6J=(8+YlCr+YfAfxW*gq1Dd`B!bnGPNq<4~75l`L2es!8(tc#ej zj+bK}0J8)0c#;0@>xR|+BG4?Aa&UG`+u~wm5fG?os9;EktWEC#iriY_G)<=GC_4hT zeaSynZWSS$mK4R;$KGG+DJ~X%evzAGN1SLeR00aZi(fSHO`W56w?kjqB9<5530#?} z^RZxdnP?8_??K0nr?#bZsRNFrYWGcMbE1xiCp*?(V;DwKx77CDxhIeXY7GFWu%!zd zdM(bS#OVp}DDvoa2f*XWuZ=Jt2+=Xm6x5L?G(0>n$8`v1fOF=xO4D;H9$*h5d&=A!jI~7A8L$o5961BNx zd+n?_aZDX{${m4}=g8xEIb|gmt>Y&zb@Geg=NAEMwuT|WQR+&2Dh-Yc?YadlW)Fa^ zGWt}NY$6T^kta^182Ya|O_LM+#&8m|A#VV&n0?O%nZkk7saG)PQQ0%JWssvr%A6xN zHT72`9)!bge@e{eFGjo)gVq)S7v*6m!r&0mRLq%w>cwpHal?~7{)kfNzRC2={0|ZI zSHfS_Dmc2LmgC^fZ^&y-tm69LPyuIVY!_tvO&=)m+?94|>XSJgZ);d|jQ^F2sq(9E zMF)fP5}c>!eQO)m8)Fl-8yt!(Ax>oIec7n&osnxE_)llzKaQt=ElJ)pdqAAtu_9Di z%?C`eWb~3b3&7LZmnk|}lRNAY@h{(BiE#H9Ro~br4$%^?t{6&Y2+}hfPu3{QtJpr* z12|L@-?@T>-C1Je57*FeovUZtfG*pXGV70l>t(dQC|l^TDtuBs-s+DrlaQ;6(i4$a z?7kleUwn=PShvrE*5clp-VhT(dQ6nWkI7`?Y*4oq82TytOtb2|5`S*X65IFL;7f3P z-EmBcveUe+ujKS|DG_~xa|dc|(<|8K}yRK*?N{OXRpR3z#pv0`tYp2drG6z*J%9!P^~PIDj*5Oalkf=L&aS)Lp3xhF4Oi7`TbAmDB`CLYZDPt-4q*1b1H0xSVIXidlu^LqmWMhVHb5b$SMFi;nmmu<|-{Fve-MzPzAa=s(gAHO|6uh!3X$IE)` zZiV_wJ*s8E&2AySh=zJymOnhrvvFZ77m=^bSP3oCbs&UL^NiNB^0=5@h6=-93z(x;uB+pHn4pV25B!&pdAAQv-=0 z<=^4TAghn+s{KKy&3$Hy?_*S!BZ=cq33C<;s$hQenQM#*k z4kYT5+py2~5o^59*^7{s@mVgYV)J)i&%R1ZNuRxvn^K@+RGWmeB{y)*E^czUj1m92 zPpk^(9uJ(q{)hE1g7>rL=S6XxF6}kBmI__xeRtY)99d&RvlVNd$EN5mm*2F^ox+G6 zI9i^o|JiZh$Ts))(Aqm4U@a9)xYSt^>uySE-wHqgCqnEkL+|euD{pjTRO5QXAn%qf zyEfxQd6_nn02~$7{#e>LyQ;T~j=Hc^b1=4MioDg&q!dOWTQb0?neR7n`vcnVT1+V6 z;j0p@*pxd7pV-Op%1^X@IyJq?_BYul|C0$mAQgoo{FmWnMzoqjc#`;@t+(P>BeH|Q z`{>`d%bzDWy4cI9@yQ9D6hep>8&^#iB;HJGd}2S6?bj!cQ%NhpnxSBXZZ_k2inef)5YMo|Mfs-e-PjHQh5~9J2!RIHS zz<9+4yo-RiWJ=I+081la%Xp#J)o3U%N8okq_nzr7RD2qHZ?F#xdA@Z&dr4hx0WI}e zro)tSarbM4*j-0NsRav|Rea`V2wYpg9~_C9ERU2~bAq~mD}akX;MZTIV;aek-$zZl z2Zw;}Z$)QUrDcEkWAmL;Ja{vQ;G2WXf!4 z8!8OsgTccXyST<(((VvkmH$XNLS-=+(|C<)gru{ha_+4$}z$ z)--wk-MV;yBCB6>c~Rz#kO%+{UbBFf5` zk{4abkcYK|Pe+#-l^sV*FQCL*;N6UP&;haME;wt-elj#I6do?M!j#!=*=CA+1*Lv@ zQqMi)y1zR@=C|MU4lZ3&ElL0<9Z6`zc+4Kg#JeV^I*{wfhA^fl8#M4WggV+7Df$r6z{fR*LCKh|=yd|hyTJ~=nQS>dA4m|S8T5m>h& z4}F}Rx=Yd2bdGssSDzM9Z;K$l+iMipaM=Z|I{bqbv-SE>+4m4*pRA2%EDpuf3acDm zKjNQ?W2glr{DPuHDo(k%Sd9nqQ=pfOIjRau7ykQi);LjSrdjx!cs^2h#|d1f;+N7$ z0I~#<#cFYuzD9lJUK=$|W`PW3VrmgSNmZ#J^xGC=K)sh1dblfpbRo1Yn?^HEoeuNK zC`ctL&<0T|#3If|-JZ3USao!nAU zCL}YTAaAWB{cGtC1=p4L%`g3i1pWkuJ)222mvOw)vH}Rtm<#=tL9((Rm8WoPfa=3X z)jQ1YH>m(=eOjJIp!}-0^NV9nC7sa_DxSuyIjy#_NV=0vfx-X&|1 zQzWDit);jw6bpXLs=^@besGblhZh{ zd9E{=YQC<^J2Ri^9n(WT;?)&6;RwZWGlK;2N($`8CRh0H?0Kn9sS)1YC_>${ zJHIT-!q1$jEEItaj_}qRdM`h`bejhPZih4^6}#G`P2z`wl3SXIQ*d@+++L!l>J6=G z=+D!iQY$JK`EULn47)*;VJavvdM!#icbi`=3t?hhnY7Rr7uW2u4j5K`+ln>r#h<61rRP=lGxo?;yu*2=c)`fK6K_ZOR@AnFnH_Pbn29~+Vb>JvR} zp8W1n!1oWNo{QpdpR3}JfCw~@0(b~}fRbtBuA4i)5e&D`RZ z_Zgecz4IsoM;ET50QUZy_dwcxu5@2MF_u3cjEZROHli$PV_PgN(d89mcV8VPB2zBxX5lVmHC21 z#-qhuW#JFF%soAvBlImzK)GHsc8nSf)hFS!Yc*88ubOGLc_uKymQUmTQu zy+p>MR+bDZ>-yO@g0gSusO-L_S8&c<;s=TEGXC8wMcC$b^?Z9rt6?GNbNdL>KBAcP z6`kRreTFP;e;WtdKVHqSochtFPsH!Ybu&H!HK+vu1lQ5qI@(rPM4c3g`Pn`Z6Hsf& zHK|(vNc!8&4(^6-o6vZ4M8@@_+l6P2r0kt->*kM<_QT`KF<^FYbymOsp2*w%^p=e5 zhlC7yP0Yt1?QCyN;tBhHwvP~91CGN68J73V1m2N5XH*wY;D7+a?dZDI`9B!zs-&5g zTSpZ0j-tIIHt17Cr|5Bv$okqMW@56chiwxZi@J$EE%HRnju>6!Xm^DRjTJ3gK{?xt zp2^4r_DQ7u>vrl3$((n5{7GdVSMY5p8kT4@lcZz7lh6R;z@uw!3EP zXIMt{^OmkeMqCfNrS>$@w}JM>=c_$NAwS>SCd`#S!#AR36YK*sSgwqZA~AWl=v8&8 zU!QA>7(0p{jr7J7{pfjuXx7N;eLB(jD$4zt=5$D?9qJbUtE%X)8{m2X;_2{ucl|k{ zcQD;eW*mOS4Av|O#ePXk68B|b^*zyYANlaiy8^?@QT~*Qui&E8IHzR;t_dq+D~^ zx!3=Az6bp^(P6G~IoKp~PtnIEZo@n^=G_n#){(B(ZfPI&rsOa#>!kiV(bged2^vUj zbjRT!yMp$i0CELPvaRZRKD%Q=_1w~S%)MXY2MJv~>6CceTT!ooD`8G`0sR&LAdP{4 zLD4RDj{c2|xA0A~NrbLC9H`q;Q~&T$uWtWY##UZ6Ejy*SeZ7hL(H%VZma#?e%%T`J zz1GMk-lyBdEK4(>ZS6KYFFcROGIh}G(3a3qkJo%++fZM#tDLm`&%l`czm@dmZD+|C z2V35!TK!*cb-rNg+tf3TkA8R^Xdjy{w*KjAReiF34A7&9Tcnb2p_%&CBY5lUbzgR* z=40EY|Ei4>`cb!A!P?wndKH}Qj=0O_RQf*Lyl8a+08q3^M<>xzqT!;0ZRPi7O9C~) z^p0&o*Z=;Ut$<%=_rxA(*F!C#yE3THKewyuB>43@Nxy!z)nBc*O^fuwqJcUZVB7Y_ z+qvSpXD0tG+CSv0@;ud%t~$?cXY}_r!+xFZuz1G$;+vxX+O=jAY&-JxHmTpkcFN4k zC>Le?^<4VOnh?@fZZ9>{{)EN)C5!zl_P?JJ-EC)8Pcaj@j(rSkLycx0pO&`kZjkLd zIK);lbqB=5b>j4u~@8 diff --git a/index.html b/index.html new file mode 100644 index 0000000..e23da8d --- /dev/null +++ b/index.html @@ -0,0 +1,277 @@ + + + + + + + Liquid Templating language + + + + + + +

+ + +
+ + +
+

Liquid is an extraction from the e-commerce system Shopify. Shopify powers many thousands of e-commerce stores which all call for + unique designs. For this we developed Liquid which allows our customers complete design freedom while + maintaining the integrity of our servers.

+ +

Liquid has been in production use since June 2006 and is now used by many + other hosted web applications.

+ +

It was developed for usage in Ruby on Rails web applications and + integrates seamlessly as a plugin but it also works excellently as a stand alone library.

+ +

What does it look like?

+ +

Example snippet:

+ + + + + +
+
+<ul id="products">
+  {% for product in products %}
+    <li>
+      <h2>{{ product.title }}</h2>
+      Only {{ product.price | format_as_money }}
+
+      <p>{{ product.description | prettyprint | truncate: 200  }}</p>
+
+    </li>
+  {% endfor %}
+</ul>
+
+
+ +

Code to render

+ + + + + +
+
+Liquid::Template.parse(template).render 'products' => Product.find(:all)
+
+ +
+ +

How do I get it?

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Rubygems +

Rubygems

+ +

gem install liquid

+
Ruby on Rails +

Ruby on Rails plugin

+

Rails 3.0

+

Add gem 'liquid' to your Gemfile.

+ +

Rails 2.3

+

./script/plugin install \ +   git://github.com/Shopify/liquid.git

+
Ruby +

Download Release

+ +

from RubyGems

+
Ruby +

Git Clone

+ +

from Github

+
+
+ +
+ Liquid is a sponsored and made possible by constant development from Shopify. +
+
+ + +
+ + diff --git a/index.md b/index.md deleted file mode 100644 index 7ce0a6a..0000000 --- a/index.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: default ---- - -{% include home-banner.html %} - -## What is Liquid? - -Liquid is an open-source template language created by [Shopify](https://www.shopify.com) and written in Ruby. It is the backbone of Shopify themes and is used to load dynamic content on storefronts. - -Liquid has been in production use since June 2006 and is now used by many other hosted web applications. - -## Who uses Liquid? - -{% include home-users-grid.html %} - diff --git a/package.json b/package.json deleted file mode 100644 index 316b602..0000000 --- a/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "liquid-docs", - "version": "0.1.0", - "devDependencies": { - "autoprefixer-core": "^5.2.1", - "grunt": "~0.4.1", - "grunt-autoprefixer": "^3.0.3", - "grunt-concurrent": "^1.0.0", - "grunt-contrib-concat": "^0.5.1", - "grunt-contrib-sass": "^0.9.2", - "grunt-contrib-watch": "^0.6.1", - "grunt-postcss": "^0.5.5", - "grunt-shell": "^1.1.2", - "load-grunt-tasks": "^3.1.0" - } -} diff --git a/tags/_theme.md b/tags/_theme.md deleted file mode 100644 index 812ace5..0000000 --- a/tags/_theme.md +++ /dev/null @@ -1,238 +0,0 @@ ---- -title: Theme ---- - - -Theme Tags have various functions, including: - -- Outputting template-specific HTML markup -- Telling the theme which layout and snippets to use -- Splitting a returned array into multiple pages. - - -### comment - -

Allows you to leave un-rendered code inside a Liquid template. Any text within the opening and closing comment blocks will not be output, and any Liquid code within will not be executed.

- -
-{% highlight html %}{% raw %} - My name is {% comment %}super{% endcomment %} Shopify. -{% endraw %}{% endhighlight %} -
- -
-{% highlight html %}{% raw %} -My name is Shopify. -{% endraw %}{% endhighlight %} -
- -### include - -Inserts a snippet from the **snippets** folder of a theme. - -{% highlight html %}{% raw %} -{% include 'snippet-name' %} -{% endraw %}{% endhighlight %} - -Note that the .liquid extension is omitted in the above code. - -When a snippet is included, the code inside it will have access to the variables within its parent template. - -

Including multiple variables in a snippet

- -There are two ways to include multiple variables in a snippet. You can assign and include them on different lines: - -{% highlight html %}{% raw %} -{% assign snippet_variable = 'this is it' %} -{% assign snippet_variable_two = 'this is also it' %} -{% include 'snippet' %} -{% endraw %}{% endhighlight %} - -Or you can consolidate them into one line of code: - -{% highlight html %}{% raw %} -{% include 'snippet', snippet_variable: 'this is it', snippet_variable_two: 'this is also it' %} -{% endraw %}{% endhighlight %} - -

parameters include

- -### with - -The with parameter assigns a value to a variable inside a snippet that shares the same name as the snippet. - -For example, we can have a snippet named **color.liquid** which contains the following: - -{% highlight html %}{% raw %} -color: '{{ color }}' -shape: '{{ shape }}' -{% endraw %}{% endhighlight %} - -Within **theme.liquid**, we can include the **color.liquid** snippet as follows: - -{% highlight html %}{% raw %} -{% assign shape = 'circle' %} -{% include 'color' %} -{% include 'color' with 'red' %} -{% include 'color' with 'blue' %} -{% assign shape = 'square' %} -{% include 'color' with 'red' %} -{% endraw %}{% endhighlight %} - -The output will be: - -{% highlight html %}{% raw %} -color: shape: 'circle' -color: 'red' shape: 'circle' -color: 'blue' shape: 'circle' -color: 'red' shape: 'square' -{% endraw %}{% endhighlight %} - -### form - -Creates an HTML <form> element with all the necessary attributes (action, id, etc.) and <input> to submit the form successfully. - -

parameters form

- -### new_comment - -Generates a form for creating a new comment in the article.liquid template. Requires the article object as a parameter. - -

Input

-
-{% highlight html %}{% raw %} -{% form "new_comment", article %} -... -{% endform %} -{% endraw %}{% endhighlight %} -
- - -

Output

-
-{% highlight html %}{% raw %} -
- - - ... -
-{% endraw %}{% endhighlight %} -
- -### layout - -Loads an alternate template file from the **layout** folder of a theme. If no alternate layout is defined, the **theme.liquid** template is loaded by default. - -{% highlight html %}{% raw %} - -{% layout 'alternate' %} -{% endraw %}{% endhighlight %} - -If you don't want **any** layout to be used on a specific template, you can use none. - -{% highlight html %}{% raw %} -{% layout none %} -{% endraw %}{% endhighlight %} - - - - - - - - - - - - - - - - -### paginate - -Splitting products, blog articles, and search results across multiple pages is a necessary component of theme design as you are limited to 50 results per page in any for loop. - -The paginate tag works in conjunction with the for tag to split content into numerous pages. It must wrap a for tag block that loops through an array, as shown in the example below: - -{% highlight html %}{% raw %} -{% paginate collection.products by 5 %} - {% for product in collection.products %} - - {% endfor %} -{% endpaginate %} -{% endraw %}{% endhighlight %} - -The by parameter is followed by an integer between 1 and 50 that tells the paginate tag how many results it should output per page. - - -Within paginate tags, you can access attributes of the paginate object. This includes the attributes to output the links required to navigate within the generated pages. - - -{% comment %} - -Accessing any attributes of the array you are paginating before the opening paginate tag will cause errors. To avoid this, make sure any variables - - -**Bad Example** -
-{% highlight html %}{% raw %} -{{ collection.title }} -{% paginate collection.products by 5 %} - {% for product in collection.products %} - {{ product.title }} - {% endfor %} -{% endpaginate %} -{% endraw %}{% endhighlight %} -
- - -**Good Example** -
-{% highlight html %}{% raw %} -{% paginate collection.products by 5 %} - {% for product in collection.products %} - - {% endfor %} -{% endpaginate %} -{% endraw %}{% endhighlight %} -
- -{% endcomment %} - - - - - - - - - - - - - - - - - - - - -### raw - -

Allows output of Liquid code on a page without being parsed.

- -

Input

- -
-
{% raw %}{{ 5 | plus: 6 }}{% endraw %} is equal to 11.
-
- -

Output

- -
-
{{ 5 | plus: 6 }} is equal to 11.
-
- - - diff --git a/tags/control-flow.md b/tags/control-flow.md deleted file mode 100644 index 976e663..0000000 --- a/tags/control-flow.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Control flow ---- - -Control flow tags can change the information Liquid shows using programming logic. - -## case/when - -Creates a switch statement to compare a variable with different values. `case` initializes the switch statement, and `when` compares its values. - -```liquid -{% raw %} -{% assign handle = 'cake' %} -{% case handle %} - {% when 'cake' %} - This is a cake - {% when 'cookie' %} - This is a cookie - {% else %} - This is not a cake nor a cookie -{% endcase %} -{% endraw %} -``` - -```text -This is a cake -``` - -## if - -Executes a block of code only if a certain condition is `true`. - -```liquid -{% raw %} -{% if product.title == 'Awesome Shoes' %} - These shoes are awesome! -{% endif %} -{% endraw %} -``` - -```text -These shoes are awesome! -``` - -## unless - -The opposite of `if` – executes a block of code only if a certain condition is **not** met. - -```liquid -{% raw %} -{% unless product.title == 'Awesome Shoes' %} - These shoes are not awesome. -{% endunless %} -{% endraw %} -``` - -```text -These shoes are not awesome. -``` - -This would be the equivalent of doing the following: - -```liquid -{% raw %} -{% if product.title != 'Awesome Shoes' %} - These shoes are not awesome. -{% endif %} -{% endraw %} -``` - -## elsif / else - -Adds more conditions within an `if` or `unless` block. - -```liquid -{% raw %} - -{% if customer.name == 'kevin' %} - Hey Kevin! -{% elsif customer.name == 'anonymous' %} - Hey Anonymous! -{% else %} - Hi Stranger! -{% endif %} -{% endraw %} -``` - -```text -Hey Anonymous! -``` diff --git a/tags/iteration.md b/tags/iteration.md deleted file mode 100644 index fbc7902..0000000 --- a/tags/iteration.md +++ /dev/null @@ -1,298 +0,0 @@ ---- -title: Iteration ---- - -Iteration tags run blocks of code repeatedly. - -## for - -Repeatedly executes a block of code. For a full list of attributes available within a `for` loop, see [forloop (object)](https://docs.shopify.com/themes/liquid/objects/for-loops). - -```liquid -{% raw %} - {% for product in collection.products %} - {{ product.title }} - {% endfor %} -{% endraw %} -``` - -```text -hat shirt pants -``` - -### break - -Causes the loop to stop iterating when it encounters the `break` tag. - -```liquid -{% raw %} -{% for i in (1..5) %} - {% if i == 4 %} - {% break %} - {% else %} - {{ i }} - {% endif %} -{% endfor %} -{% endraw %} -``` - -```text -1 2 3 -``` - -### continue - -Causes the loop to skip the current iteration when it encounters the `continue` tag. - -```liquid -{% raw %} -{% for i in (1..5) %} - {% if i == 4 %} - {% continue %} - {% else %} - {{ i }} - {% endif %} -{% endfor %} -{% endraw %} -``` - -```text -1 2 3 5 -``` - -## for (parameters) - -### limit - -Limits the loop to the specified number of iterations. - -```liquid -{% raw %} - -{% for item in array limit:2 %} - {{ item }} -{% endfor %} -{% endraw %} -``` - -```text -1 2 -``` - -### offset - -Begins the loop at the specified index. - -```liquid -{% raw %} - -{% for item in array offset:2 %} - {{ item }} -{% endfor %} -{% endraw %} -``` - -```text -3 4 5 6 -``` - -### range - -Defines a range of numbers to loop through. The range can be defined by both literal and variable numbers. - -```liquid -{% for i in (3..5) %} - {{ i }} -{% endfor %} - -{% raw %} -{% assign num = 4 %} -{% for i in (1..num) %} - {{ i }} -{% endfor %} -{% endraw %} -``` - -```text -3 4 5 -1 2 3 4 -``` - -### reversed - -Reverses the order of the loop. - -```liquid -{% raw %} - -{% for item in array reversed %} - {{ item }} -{% endfor %} -{% endraw %} -``` - -```text -6 5 4 3 2 1 -``` - -## cycle - -Loops through a group of strings and outputs them in the order that they were passed as parameters. Each time `cycle` is called, the next string that was passed as a parameter is output. - -`cycle` must be used within a [for](#for) loop block. - -```liquid -{% raw %} -{% cycle 'one', 'two', 'three' %} -{% cycle 'one', 'two', 'three' %} -{% cycle 'one', 'two', 'three' %} -{% cycle 'one', 'two', 'three' %} -{% endraw %} -``` - -```text -one -two -three -one -``` - -Uses for `cycle` include: - -- applying odd/even classes to rows in a table -- applying a unique class to the last product thumbnail in a row - -## cycle (parameters) - -`cycle` accepts a parameter called `cycle group` in cases where you need multiple `cycle` blocks in one template. If no name is supplied for the cycle group, then it is assumed that multiple calls with the same parameters are one group. - -## tablerow - -Generates an HTML table. Must be wrapped in opening `` and closing `
` HTML tags. - -```liquid -{% raw %} - -{% tablerow product in collection.products %} - {{ product.title }} -{% endtablerow %} -
-{% endraw %} -``` - -```html - - - - - - - - - -
- Cool Shirt - - Alien Poster - - Batman Poster - - Bullseye Shirt - - Another Classic Vinyl - - Awesome Jeans -
-``` - -## tablerow (parameters) - -### cols - -Defines how many columns the tables should have. - -```liquid -{% raw %} -{% tablerow product in collection.products cols:2 %} - {{ product.title }} -{% endtablerow %} -{% endraw %} -``` - -```html - - - - - - - - - - - - - -
- Cool Shirt - - Alien Poster -
- Batman Poster - - Bullseye Shirt -
- Another Classic Vinyl - - Awesome Jeans -
-``` - -#### limit - -Exits the tablerow after a specific index. - -```liquid -{% raw %} -{% tablerow product in collection.products cols:2 limit:3 %} - {{ product.title }} -{% endtablerow %} -{% endraw %} -``` - -### offset - -Starts the tablerow after a specific index. - -```liquid -{% raw %} -{% tablerow product in collection.products cols:2 offset:3 %} - {{ product.title }} -{% endtablerow %} -{% endraw %} -``` - -### range - -Defines a range of numbers to loop through. The range can be defined by both literal and variable numbers. - -```liquid -{% raw %} - - -{% assign num = 4 %} - -{% tablerow i in (1..num) %} - {{ i }} -{% endtablerow %} -
- - - - -{% tablerow i in (3..5) %} - {{ i }} -{% endtablerow %} -
-{% endraw %} -``` diff --git a/tags/variable.md b/tags/variable.md deleted file mode 100644 index 618e02b..0000000 --- a/tags/variable.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: Variable ---- - -Variable tags create new Liquid variables. - -## assign - -Creates a new variable. - -```liquid -{% raw %} -{% assign my_variable = false %} -{% if my_variable != true %} - This statement is valid. -{% endif %} -{% endraw %} -``` - -```text - This statement is valid. -``` - -Wrap a variable in quotations `"` to save it as a string. - -```liquid -{% raw %} -{% assign foo = "bar" %} -{{ foo }} -{% endraw %} -``` - -```text -bar -``` - -## capture - -Captures the string inside of the opening and closing tags and assigns it to a variable. Variables created through `{% raw %}{% capture %}{% endraw %}` are strings. - -```liquid -{% raw %} -{% capture my_variable %}I am being captured.{% endcapture %} -{{ my_variable }} -{% endraw %} -``` - -```text -I am being captured. -``` - -## increment - -Creates a new number variable, and increases its value by one every time it is called. The initial value is 0. - -```liquid -{% raw %} -{% increment my_counter %} -{% increment my_counter %} -{% increment my_counter %} -{% endraw %} -``` - -```text -0 -1 -2 -``` - -Variables created through the `increment` tag are independent from variables created through `assign` or `capture`. - -In the example below, a variable named "var" is created through `assign`. The `increment` tag is then used several times on a variable with the same name. Note that the `increment` tag does not affect the value of "var" that was created through `assign`. - -```liquid -{% raw %} -{% assign var = 10 %} -{% increment var %} -{% increment var %} -{% increment var %} -{{ var }} -{% endraw %} -``` - -```text -0 -1 -2 -10 -``` - -## decrement - -Creates a new number variable, and decreases its value by one every time it is called. The initial value is -1. - -```liquid -{% raw %} -{% decrement variable %} -{% decrement variable %} -{% decrement variable %} -{% endraw %} -``` - -```text --1 --2 --3 -``` - -Like [increment](#increment), variables declared inside `decrement` are independent from variables created through `assign` or `capture`.