From 3fd671b610aeb92fb539168affcd0c2c92abc5c7 Mon Sep 17 00:00:00 2001 From: harttle Date: Mon, 19 Aug 2024 19:37:14 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20harttle/?= =?UTF-8?q?liquidjs@5b1658c8232c6f30fb883b196c974c8df4eb147d=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- css/navy.css | 2 +- filters/abs.html | 2 +- filters/append.html | 2 +- filters/array_to_sentence_string.html | 2 +- filters/at_least.html | 2 +- filters/at_most.html | 2 +- filters/capitalize.html | 2 +- filters/ceil.html | 2 +- filters/cgi_escape.html | 2 +- filters/compact.html | 2 +- filters/concat.html | 2 +- filters/date.html | 2 +- filters/date_to_long_string.html | 2 +- filters/date_to_rfc822.html | 2 +- filters/date_to_string.html | 2 +- filters/date_to_xmlschema.html | 2 +- filters/default.html | 2 +- filters/divided_by.html | 2 +- filters/downcase.html | 2 +- filters/escape.html | 2 +- filters/escape_once.html | 2 +- filters/find.html | 2 +- filters/find_exp.html | 2 +- filters/first.html | 2 +- filters/floor.html | 2 +- filters/group_by.html | 2 +- filters/group_by_exp.html | 2 +- filters/inspect.html | 2 +- filters/join.html | 2 +- filters/json.html | 2 +- filters/jsonify.html | 2 +- filters/last.html | 2 +- filters/lstrip.html | 2 +- filters/map.html | 2 +- filters/minus.html | 2 +- filters/modulo.html | 2 +- filters/newline_to_br.html | 2 +- filters/normalize_whitespace.html | 2 +- filters/number_of_words.html | 2 +- filters/overview.html | 2 +- filters/plus.html | 2 +- filters/pop.html | 2 +- filters/prepend.html | 2 +- filters/push.html | 2 +- filters/raw.html | 2 +- filters/remove.html | 2 +- filters/remove_first.html | 2 +- filters/remove_last.html | 2 +- filters/replace.html | 2 +- filters/replace_first.html | 2 +- filters/replace_last.html | 2 +- filters/reverse.html | 2 +- filters/round.html | 2 +- filters/rstrip.html | 2 +- filters/shift.html | 2 +- filters/size.html | 2 +- filters/slice.html | 2 +- filters/slugify.html | 2 +- filters/sort.html | 2 +- filters/sort_natural.html | 2 +- filters/split.html | 2 +- filters/strip.html | 2 +- filters/strip_html.html | 2 +- filters/strip_newlines.html | 2 +- filters/sum.html | 2 +- filters/times.html | 2 +- filters/to_integer.html | 2 +- filters/truncate.html | 2 +- filters/truncatewords.html | 2 +- filters/uniq.html | 2 +- filters/unshift.html | 2 +- filters/upcase.html | 2 +- filters/uri_escape.html | 2 +- filters/url_decode.html | 2 +- filters/url_encode.html | 2 +- filters/where.html | 2 +- filters/where_exp.html | 2 +- filters/xml_escape.html | 2 +- sitemap.xml | 2790 +++++++++--------- tags/assign.html | 2 +- tags/capture.html | 2 +- tags/case.html | 2 +- tags/comment.html | 2 +- tags/cycle.html | 2 +- tags/decrement.html | 2 +- tags/echo.html | 2 +- tags/for.html | 2 +- tags/if.html | 2 +- tags/include.html | 2 +- tags/increment.html | 2 +- tags/inline_comment.html | 2 +- tags/layout.html | 2 +- tags/liquid.html | 2 +- tags/overview.html | 2 +- tags/raw.html | 2 +- tags/render.html | 2 +- tags/tablerow.html | 2 +- tags/unless.html | 2 +- tutorials/access-scope-in-filters.html | 2 +- tutorials/caching.html | 2 +- tutorials/changelog.html | 2 +- tutorials/contribution-guidelines.html | 2 +- tutorials/differences.html | 2 +- tutorials/dos.html | 2 +- tutorials/drops.html | 2 +- tutorials/escaping.html | 2 +- tutorials/intro-to-liquid.html | 2 +- tutorials/migrate-to-9.html | 2 +- tutorials/operators.html | 2 +- tutorials/options.html | 2 +- tutorials/parse-parameters.html | 4 +- tutorials/partials-and-layouts.html | 2 +- tutorials/plugins.html | 2 +- tutorials/register-filters-tags.html | 2 +- tutorials/render-file.html | 2 +- tutorials/render-tag-content.html | 34 +- tutorials/setup.html | 2 +- tutorials/sync-and-async.html | 2 +- tutorials/truthy-and-falsy.html | 2 +- tutorials/use-in-expressjs.html | 2 +- tutorials/whitespace-control.html | 2 +- zh-cn/filters/abs.html | 2 +- zh-cn/filters/append.html | 2 +- zh-cn/filters/array_to_sentence_string.html | 2 +- zh-cn/filters/at_least.html | 2 +- zh-cn/filters/at_most.html | 2 +- zh-cn/filters/capitalize.html | 2 +- zh-cn/filters/ceil.html | 2 +- zh-cn/filters/cgi_escape.html | 2 +- zh-cn/filters/compact.html | 2 +- zh-cn/filters/concat.html | 2 +- zh-cn/filters/date.html | 2 +- zh-cn/filters/date_to_long_string.html | 2 +- zh-cn/filters/date_to_rfc822.html | 2 +- zh-cn/filters/date_to_string.html | 2 +- zh-cn/filters/date_to_xmlschema.html | 2 +- zh-cn/filters/default.html | 2 +- zh-cn/filters/divided_by.html | 2 +- zh-cn/filters/downcase.html | 2 +- zh-cn/filters/escape.html | 2 +- zh-cn/filters/escape_once.html | 2 +- zh-cn/filters/find.html | 2 +- zh-cn/filters/find_exp.html | 2 +- zh-cn/filters/first.html | 2 +- zh-cn/filters/floor.html | 2 +- zh-cn/filters/group_by.html | 2 +- zh-cn/filters/group_by_exp.html | 2 +- zh-cn/filters/inspect.html | 2 +- zh-cn/filters/join.html | 2 +- zh-cn/filters/json.html | 2 +- zh-cn/filters/jsonify.html | 2 +- zh-cn/filters/last.html | 2 +- zh-cn/filters/lstrip.html | 2 +- zh-cn/filters/map.html | 2 +- zh-cn/filters/minus.html | 2 +- zh-cn/filters/modulo.html | 2 +- zh-cn/filters/newline_to_br.html | 2 +- zh-cn/filters/normalize_whitespace.html | 2 +- zh-cn/filters/number_of_words.html | 2 +- zh-cn/filters/overview.html | 2 +- zh-cn/filters/plus.html | 2 +- zh-cn/filters/pop.html | 2 +- zh-cn/filters/prepend.html | 2 +- zh-cn/filters/push.html | 2 +- zh-cn/filters/raw.html | 2 +- zh-cn/filters/remove.html | 2 +- zh-cn/filters/remove_first.html | 2 +- zh-cn/filters/remove_last.html | 2 +- zh-cn/filters/replace.html | 2 +- zh-cn/filters/replace_first.html | 2 +- zh-cn/filters/replace_last.html | 2 +- zh-cn/filters/reverse.html | 2 +- zh-cn/filters/round.html | 2 +- zh-cn/filters/rstrip.html | 2 +- zh-cn/filters/shift.html | 2 +- zh-cn/filters/size.html | 2 +- zh-cn/filters/slice.html | 2 +- zh-cn/filters/slugify.html | 2 +- zh-cn/filters/sort.html | 2 +- zh-cn/filters/sort_natural.html | 2 +- zh-cn/filters/split.html | 2 +- zh-cn/filters/strip.html | 2 +- zh-cn/filters/strip_html.html | 2 +- zh-cn/filters/strip_newlines.html | 2 +- zh-cn/filters/times.html | 2 +- zh-cn/filters/to_integer.html | 2 +- zh-cn/filters/truncate.html | 2 +- zh-cn/filters/truncatewords.html | 2 +- zh-cn/filters/uniq.html | 2 +- zh-cn/filters/unshift.html | 2 +- zh-cn/filters/upcase.html | 2 +- zh-cn/filters/uri_escape.html | 2 +- zh-cn/filters/url_decode.html | 2 +- zh-cn/filters/url_encode.html | 2 +- zh-cn/filters/where.html | 2 +- zh-cn/filters/where_exp.html | 2 +- zh-cn/filters/xml_escape.html | 2 +- zh-cn/tags/assign.html | 2 +- zh-cn/tags/capture.html | 2 +- zh-cn/tags/case.html | 2 +- zh-cn/tags/comment.html | 2 +- zh-cn/tags/cycle.html | 2 +- zh-cn/tags/decrement.html | 2 +- zh-cn/tags/echo.html | 2 +- zh-cn/tags/for.html | 2 +- zh-cn/tags/if.html | 2 +- zh-cn/tags/include.html | 2 +- zh-cn/tags/increment.html | 2 +- zh-cn/tags/inline_comment.html | 2 +- zh-cn/tags/layout.html | 2 +- zh-cn/tags/liquid.html | 2 +- zh-cn/tags/overview.html | 2 +- zh-cn/tags/raw.html | 2 +- zh-cn/tags/render.html | 2 +- zh-cn/tags/tablerow.html | 2 +- zh-cn/tags/unless.html | 2 +- zh-cn/tutorials/access-scope-in-filters.html | 2 +- zh-cn/tutorials/caching.html | 2 +- zh-cn/tutorials/changelog.html | 2 +- zh-cn/tutorials/contribution-guidelines.html | 2 +- zh-cn/tutorials/differences.html | 2 +- zh-cn/tutorials/dos.html | 2 +- zh-cn/tutorials/drops.html | 2 +- zh-cn/tutorials/escaping.html | 2 +- zh-cn/tutorials/intro-to-liquid.html | 2 +- zh-cn/tutorials/migrate-to-9.html | 2 +- zh-cn/tutorials/operators.html | 2 +- zh-cn/tutorials/options.html | 2 +- zh-cn/tutorials/parse-parameters.html | 4 +- zh-cn/tutorials/partials-and-layouts.html | 2 +- zh-cn/tutorials/plugins.html | 2 +- zh-cn/tutorials/register-filters-tags.html | 2 +- zh-cn/tutorials/render-file.html | 2 +- zh-cn/tutorials/render-tag-content.html | 34 +- zh-cn/tutorials/setup.html | 2 +- zh-cn/tutorials/sync-and-async.html | 2 +- zh-cn/tutorials/truthy-and-falsy.html | 2 +- zh-cn/tutorials/use-in-expressjs.html | 2 +- zh-cn/tutorials/whitespace-control.html | 2 +- 239 files changed, 1693 insertions(+), 1641 deletions(-) diff --git a/css/navy.css b/css/navy.css index 768b1cc56..592268c40 100644 --- a/css/navy.css +++ b/css/navy.css @@ -1 +1 @@ -:root{--color-default:#444;--color-default-invert:#d1d2d4;--color-gray:#999;--color-border:#e3e3e3;--color-navy:#171f26;--color-content-bg:#fff;--color-news-bg:#161d24;--color-navy-lighter:#283542;--color-link:#0e83cd;--color-link-hover:#1094e8}@media (prefers-color-scheme:dark){:root{--color-default:#d1d2d4;--color-default-invert:#444;--color-gray:#666;--color-border:#6a6a6a;--color-background:#fff;--color-navy:#171f26;--color-news-bg:#161d24;--color-navy-lighter:#232e3a;--color-content-bg:#1c1c1c;--color-link:#0e83cd;--color-link-hover:#1094e8}}a,abbr,acronym,address,applet,big,blockquote,body,caption,cite,code,dd,del,dfn,div,dl,dt,em,fieldset,form,h1,h2,h3,h4,h5,h6,html,iframe,img,ins,kbd,label,legend,li,object,ol,p,pre,q,s,samp,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,tr,tt,ul,var{margin:0;padding:0;border:0;outline:0;font-weight:inherit;font-style:inherit;font-family:inherit;font-size:100%;vertical-align:baseline}body{line-height:1;color:#000;background:#fff}ol,ul{list-style:none}table{border-collapse:separate;border-spacing:0;vertical-align:middle}caption,td,th{text-align:left;font-weight:400;vertical-align:middle}a img{border:none}html{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*,:after,:before{-webkit-box-sizing:inherit;-moz-box-sizing:inherit;box-sizing:inherit}button::-moz-focus-inner,input[type=button]::-moz-focus-inner,input[type=reset]::-moz-focus-inner,input[type=submit]::-moz-focus-inner{padding:0;margin:0;border:0}button,input,select{margin:0;padding:0;border:0}body{background:var(--color-navy);font-size:16px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;color:var(--color-default);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}a{color:var(--color-link);text-decoration:none}a:hover{color:var(--color-link-hover);text-decoration:underline}@media print{a{color:var(--color-default);text-decoration:underline}a:after{content:" (" attr(href) ")";font-size:80%}}@media screen and (max-device-width:480px){body{-webkit-text-size-adjust:none}}@media screen{.wrapper{max-width:1800px;margin:0 auto}}@media screen{#article-toc-inner,.inner{padding:0 20px}}#content-wrap{background:var(--color-content-bg);overflow:hidden}.video-container{text-align:center}#header{position:relative;padding:10px 0}@media print{#header{display:none}}#header-inner{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-webkit-box-lines:single;-moz-box-lines:single;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-align:center;-moz-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center}@media screen and (max-width:768px){#header-inner{-webkit-box-pack:center;-moz-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}}#logo-wrap{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;-webkit-flex:0 36px;-ms-flex:0 36px;flex:0 36px}#logo{text-indent:101%;white-space:nowrap;overflow:hidden;background:url(../icon/logo.png);width:36px;height:36px;-webkit-background-size:36px 36px;-moz-background-size:36px 36px;background-size:36px 36px;display:block}#main-nav{display:none;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto}@media screen and (min-width:769px){#main-nav{display:block}}#search-input-wrap{display:none;padding-left:6px;border-bottom:1px solid var(--color-gray)}#search-input-wrap.on{display:inline-block}#search-input-wrap #search-input,#search-input-wrap>i,#search-input-wrap>span{vertical-align:middle;color:#fff;line-height:36px}#search-input-icon{padding-right:.5em;opacity:.7}#search-input{background:0 0;font-size:inherit;outline:0;-webkit-appearance:none}.main-nav-link{color:#fff;text-decoration:none;line-height:36px;white-space:nowrap;opacity:.7;-webkit-transition:opacity .2s,color .2s;-moz-transition:opacity .2s,color .2s;-ms-transition:opacity .2s,color .2s;transition:opacity .2s,color .2s;display:inline-block;padding:0 12px}.main-nav-link.active{opacity:1}.main-nav-link:hover{opacity:1;color:var(--color-link-hover);text-decoration:none}.icon-nav-link{display:none;position:relative;padding:0 8px}.icon-nav-link .icon-nav-title{display:none}@media screen and (min-width:992px){.icon-nav-link .icon-nav-title{display:inline}}@media screen and (min-width:769px){.icon-nav-link{display:block}}#lang-select{opacity:0;position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:menulist-button;font-size:inherit}#banner{color:rgba(255,255,255,.8);text-align:center}#banner-title,.theme-intro-title{line-height:1.15;font-weight:300;font-size:40px}@media screen and (min-width:769px){#banner-title,.theme-intro-title{font-size:50px}}#banner-title{padding-top:20px}@media screen and (min-width:769px){#banner-title{padding-top:100px}}.theme-intro-title{margin-bottom:24px;padding-top:24px}@media screen and (min-width:769px){.theme-intro-title{padding-top:0}}#banner-start{text-align:center;padding:40px 0;line-height:47px}@media screen and (min-width:769px){#banner-start{padding:60px 0;font-size:18px}}#banner-start-command{background:var(--color-navy-lighter);padding:0 15px;color:#fff;display:inline-block}#banner-start-command:before{content:"$";opacity:.5;padding-right:10px}#banner-start-link{color:#fff;background:var(--color-link);display:inline-block;padding:0 15px;text-decoration:none;-webkit-transition:background .2s;-moz-transition:background .2s;-ms-transition:background .2s;transition:background .2s}#banner-start-link:hover{background:var(--color-link-hover)}#banner-share{display:block;padding-bottom:60px}#intro-news-list{background-color:var(--color-news-bg);margin:-1px 0}#intro-news-flex{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-orient:vertical;-moz-box-orient:vertical;-webkit-flex-flow:column;-ms-flex-flow:column;flex-flow:column}@media screen and (min-width:769px){#intro-news-flex{-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-webkit-box-lines:multiple;-moz-box-lines:multiple;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap}}.intro-news-wrap{padding:24px 30px;text-decoration:none}.intro-news-wrap:hover{background-color:var(--color-link-hover)}@media screen and (min-width:769px){.intro-news-wrap{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;padding:36px 30px}}@media screen and (min-width:960px){.intro-news-wrap{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%}}.intro-news-time{font-size:14px;color:rgba(255,255,255,.6)}.intro-news-wrap:hover .intro-news-time{color:rgba(255,255,255,.8)}.intro-news-title{padding-top:4px;font-size:15px;line-height:1.2;color:#fff}#intro-feature-list{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-orient:vertical;-moz-box-orient:vertical;-webkit-flex-flow:column;-ms-flex-flow:column;flex-flow:column;margin:30px 0}@media screen and (min-width:769px){#intro-feature-list{-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-webkit-box-lines:multiple;-moz-box-lines:multiple;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap}}.intro-feature-wrap{margin-top:20px}@media screen and (min-width:769px){.intro-feature-wrap{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;margin-top:50px}}.intro-feature{position:relative;text-align:center}@media screen and (min-width:769px){.intro-feature{text-align:left;padding-left:70px}}.intro-feature-icon{color:var(--color-link);font-size:36px;margin-bottom:6px;text-align:center}@media screen and (min-width:769px){.intro-feature-icon{margin-bottom:26px;position:absolute;top:0;left:20px;font-size:24px;width:24px}}.intro-feature-title{color:var(--color-link);font-size:24px}.intro-feature-desc{margin-top:1em;line-height:1.8em}@media screen and (min-width:769px){.intro-feature-desc{margin-top:1.8em}}.intro-feature-desc a{text-decoration:none;color:#000}.intro-feature-desc a:hover,.intro-feature-desc a:visited{color:#000}.intro-feature-desc a:hover{text-decoration:underline}@media (prefers-color-scheme:dark){.intro-feature-desc a{color:#fff}.intro-feature-desc a:hover,.intro-feature-desc a:visited{color:#fff}}#intro-cmd-wrap{max-width:700px;padding:15px 30px;font-size:16px;overflow:auto;margin:50px auto 0}#intro-cmd-wrap pre{line-height:32px}@media screen and (min-width:769px){#intro-cmd-wrap{margin:70px auto 0}}#intro-get-started-wrap{text-align:center;margin:20px 0 50px}@media screen and (min-width:769px){#intro-get-started-wrap{margin:30px 0 70px}}#intro-get-started-link{font-size:18px;display:inline-block;text-decoration:none;border:3px solid var(--color-link-hover);padding:12px 24px;position:relative;-webkit-transition:background .2s,color .2s;-moz-transition:background .2s,color .2s;-ms-transition:background .2s,color .2s;transition:background .2s,color .2s;color:var(--color-link)}#intro-get-started-link:hover{background:var(--color-link-hover);color:#fff}#contributors-wrap,#sponsors-wrap{background:var(--color-navy-lighter);border-top:1px solid #161d24;border-bottom:1px solid #161d24;margin:-1px 0}#contributors-wrap .inner,#sponsors-wrap .inner{margin:48px 16px}@media screen and (min-width:480px){#contributors-wrap .inner,#sponsors-wrap .inner{margin:64px 32px}}#contributors-wrap .inner h3,#sponsors-wrap .inner h3{color:#fff;font-size:32px}#contributors-wrap .inner p,#sponsors-wrap .inner p{color:#ccc;margin:36px 0 24px;font-size:20px;line-height:1.5}#contributors-wrap .inner .description a,#sponsors-wrap .inner .description a{text-decoration:none}#contributors-wrap .description a{color:#fff}#contributors-wrap .description a:hover{background:#fff;color:var(--color-navy-lighter)}#sponsors-wrap{border:none;text-align:right;background:var(--color-content-bg);overflow:hidden}#sponsors-wrap .contributors{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-pack:right;-moz-box-pack:right;-ms-flex-pack:right;-webkit-justify-content:right;justify-content:right}#sponsors-wrap .inner h3{color:var(--color-default)}#sponsors-wrap .inner p{color:var(--color-gray)}#sponsors-wrap .inner .open-collective{max-width:100%}#sponsors-wrap .inner .description a{color:#333}#sponsors-wrap .inner .description a:hover{background:var(--color-navy);color:#fff}@media (prefers-color-scheme:dark){#sponsors-wrap .inner p{color:var(--color-default)}#sponsors-wrap .inner .description a{color:#fff}#sponsors-wrap .inner .description a:hover{background:#fff;color:var(--color-navy-lighter)}}.contributors tr{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.contributors td{margin:10px 2px 0}.contributors td a img{display:inline-block;height:72px;width:72px;background:var(--color-gray);border-radius:50%;margin-bottom:10px}#playground{background:var(--color-content-bg);overflow:hidden}#playground .wrapper{margin-bottom:40px}#playground h1{font-size:36px;font-weight:300;margin:40px 0 24px}#playground .row{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-moz-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;font-size:1em}#playground .row .col{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;-webkit-flex:1 1 100%;-ms-flex:1 1 100%;flex:1 1 100%;margin-bottom:10px}@media screen and (min-width:769px){#playground .row{-webkit-box-lines:single;-moz-box-lines:single;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}#playground .col:first-child{margin-right:15px}}#playground #editorEl{height:40vh}#playground #dataEl{height:28vh;margin-top:2vh}#playground #previewEl{height:70vh}#playground .hide{display:none}#playground .loader{width:75px;height:75px;margin:150px auto 200px;border-top:5px solid #292929;border-right:5px solid #efefef;border-bottom:5px solid #efefef;border-left:5px solid #efefef;border-radius:100px;-webkit-animation:spin 1s infinite linear;-moz-animation:spin 1s infinite linear;-ms-animation:spin 1s infinite linear;animation:spin 1s infinite linear}@-moz-keyframes spin{100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes spin{100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}#sidebar{width:220px;padding-bottom:40px;opacity:.8;display:none;padding-top:40px}@media screen and (min-width:769px){#sidebar{display:block}}.sidebar-title{margin-top:40px;padding:10px 0;font-weight:700;color:var(--color-link);display:inline-block;border-top:1px solid var(--color-border);line-height:1}.sidebar-title:first-child{margin-top:0}.sidebar-link,.toc-link{display:block;color:var(--color-default);text-decoration:none;padding:7px 0;line-height:1;position:relative;width:100%}.sidebar-link.current,.toc-link.current{color:var(--color-link)}.sidebar-link:hover,.toc-link:hover{color:var(--color-link-hover)}#content{position:relative}#content-inner{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex}#content-inner #sidebar{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;-webkit-flex:0 0 220px;-ms-flex:0 0 220px;flex:0 0 220px}#content-inner .article-container{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;-webkit-flex:1 100%;-ms-flex:1 100%;flex:1 100%}.article-inner{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex}.article-inner .article{width:0;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;-webkit-flex:1 1 100%;-ms-flex:1 1 100%;flex:1 1 100%;padding:40px 0;overflow:hidden;text-overflow:ellipsis}@media print{.article-inner .article{padding:0}}.article-inner #article-toc{display:none;width:220px;opacity:.8}@media screen and (min-width:769px){.article-inner #article-toc{display:block}}#article-toc-inner{width:220px;position:sticky;top:0;margin:40px auto}#article-toc-inner .sidebar-title{border-top:none}.toc-child{padding-left:1em;font-size:.9em}#article-toc-inner-list{overflow-y:auto}#article-toc-top{margin-top:13px;font-size:.9em;text-decoration:none;color:var(--color-default);display:block}#article-toc-top:hover{color:var(--color-link-hover)}.article-header{padding-bottom:20px;overflow:hidden}.article-title{float:left;font-size:36px;font-weight:300;text-decoration:none;color:var(--color-default);-webkit-transition:.2s;-moz-transition:.2s;-ms-transition:.2s;transition:.2s}a.article-title:hover{color:var(--color-link-hover)}.post .article-title{float:none}.article-date{color:var(--color-gray);text-decoration:none;display:inline-block;margin-top:1em}.article-date:hover{color:var(--color-link-hover)}.article-edit-link{float:right;text-decoration:none;color:#bbb;font-size:24px;line-height:36px;-webkit-transition:.2s;-moz-transition:.2s;-ms-transition:.2s;transition:.2s;display:none}.article-edit-link:hover{color:var(--color-link-hover)}@media screen and (min-width:769px){.article-edit-link{display:block}}.article-anchor{margin-left:10px;display:none}.article-anchor:before{content:"#"}@media print{.article-anchor{display:none!important}}.article-heading:hover .article-anchor{display:inline-block}.article-content{line-height:1.8em;color:var(--color-default)}@media print{.article-content{font-size:12pt}}.article-content .highlight,.article-content blockquote,.article-content dl,.article-content iframe,.article-content ol,.article-content p,.article-content table,.article-content ul{margin:1em 0}.article-content h1{font-size:2em}.article-content h2{font-size:1.5em;border-bottom:1px solid var(--color-border);padding-bottom:10px;margin-bottom:15px}.article-content h3{font-size:1.3em}.article-content h1,.article-content h2,.article-content h3,.article-content h4,.article-content h5,.article-content h6{line-height:1em;font-weight:700;margin:1em 0}.article-content hr{border-bottom:none;border-top:1px dashed var(--color-border)}.article-content a[target="_blank"]{position:relative}.article-content a[target="_blank"]::after{content:'\00f08e';font-family:icomoon;padding-left:3px;vertical-align:super;zoom:.7}.article-content strong{font-weight:700}.article-content em{font-style:italic}.article-content dl,.article-content ol,.article-content ul{margin-left:20px}.article-content dl dl,.article-content dl ol,.article-content dl ul,.article-content ol dl,.article-content ol ol,.article-content ol ul,.article-content ul dl,.article-content ul ol,.article-content ul ul{margin-top:0;margin-bottom:0}.article-content ul{list-style:disc}.article-content ol{list-style:decimal}.article-content dl{list-style:square}.article-content li p{margin:0}.article-content li .highlight,.article-content li blockquote,.article-content li iframe,.article-content li table{margin:1em 0}.article-content img,.article-content video{max-width:100%}.article-content img[src*="@2x"]{zoom:50%}.article-content blockquote{padding:0 20px;position:relative;border:1px solid var(--color-border);border-left:5px solid #ddd}.article-content blockquote footer{margin:1em 0;font-style:italic}.article-content blockquote footer cite:before{content:"—";padding:0 .3em}.article-content blockquote footer cite a{color:color-grey}@media (prefers-color-scheme:dark){.article-content blockquote{border-color:var(--color-gray)}}.article-content .note.tip{border-left-color:#0fff00}.article-content .note.info{border-left-color:#0af}.article-content .note.warn{border-left-color:red}.article-content .since{margin-top:0;font-style:italic}.article-content .since::before{content:"Added in: "}.article-content .note-title{margin:1em 0 .5em;display:block;font-size:1.3em;font-weight:700}.article-content .note-title+*{margin-top:0}.article-content table{max-width:100%;border:1px solid var(--color-border)}.article-content table th{font-weight:700}.article-content table td,.article-content table th{padding:5px 15px}.article-content table tr:nth-child(2n){background:#eee}@media (prefers-color-scheme:dark){.article-content table tr:nth-child(2n){background:var(--color-gray)}}.article-footer{margin:60px 0 0;border-top:1px solid var(--color-border);text-align:center;color:var(--color-gray);line-height:1em;padding-top:1em;position:relative}@media print{.article-footer{display:none}}.article-footer-next,.article-footer-prev{color:var(--color-link);text-decoration:none;font-weight:700;text-transform:uppercase;position:absolute}.article-footer-next:hover,.article-footer-prev:hover{color:var(--color-link-hover)}@media print{.article-footer-next,.article-footer-prev{display:none}}.article-footer-next span,.article-footer-prev span{padding:0 6px}.article-footer-next i,.article-footer-next span,.article-footer-prev i,.article-footer-prev span{vertical-align:middle}.article-footer-prev{left:0}.article-footer-next{right:0}.article-footer-updated{font-size:.9em}[lang=zh-cn] .since::before{content:"支持版本:"}.mobile-nav-on{overflow:hidden;height:100%;max-height:100%}#mobile-nav{position:fixed;top:0;width:260px;left:-260px;height:100%;background:var(--color-navy);-webkit-transition:.4s;-moz-transition:.4s;-ms-transition:.4s;transition:.4s}.mobile-nav-on #mobile-nav{-webkit-transform:translateX(100%);-moz-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.mobile-sidebar-list{background:var(--color-navy-lighter)}#mobile-nav-inner{overflow-y:auto;position:absolute;top:0;bottom:40px;left:0;right:0;-webkit-overflow-scrolling:touch}#mobile-nav-inner>:first-child{padding-top:10px}#mobile-nav-inner>:last-child{padding-bottom:10px}#mobile-nav-toggle{position:absolute;top:0;bottom:0;left:20px;width:25px;height:20px;margin:auto;opacity:.5;cursor:pointer;-webkit-transition:.2s;-moz-transition:.2s;-ms-transition:.2s;transition:.2s}#mobile-nav-toggle:active,.mobile-nav-on #mobile-nav-toggle{opacity:1}@media screen and (min-width:769px){#mobile-nav-toggle{display:none}}.mobile-nav-toggle-bar{background:#fff;position:absolute;left:0;width:100%;height:2px;-webkit-transition:.4s;-moz-transition:.4s;-ms-transition:.4s;transition:.4s;-webkit-transform-origin:0;-moz-transform-origin:0;-ms-transform-origin:0;transform-origin:0;border-radius:2px}.mobile-nav-toggle-bar:first-child{top:0}.mobile-nav-on .mobile-nav-toggle-bar:first-child{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.mobile-nav-toggle-bar:nth-child(2){top:9px}.mobile-nav-on .mobile-nav-toggle-bar:nth-child(2){opacity:0}.mobile-nav-toggle-bar:last-child{top:18px}.mobile-nav-on .mobile-nav-toggle-bar:last-child{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.mobile-nav-link{color:#fff;text-decoration:none;display:block;padding:12px 16px;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-nav-title{color:var(--color-link);font-weight:700;padding:10px 15px;line-height:1;display:block;border-top:1px solid #444;margin-top:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#mobile-button-list{position:absolute;bottom:0;left:0;width:100%;background:var(--color-navy);border-top:1px solid #444;padding:12px 16px}#mobile-button-list .mobile-nav-link{display:inline-block;padding:0;margin-right:16px}#mobile-lang-select-wrap{position:relative}#mobile-lang-select{-webkit-appearance:menulist-button;opacity:0;position:absolute;top:0;left:0;width:100%;height:100%}#container{-webkit-transition:.4s;-moz-transition:.4s;-ms-transition:.4s;transition:.4s;height:100%;-webkit-overflow-scrolling:touch}.mobile-nav-on #container{-webkit-transform:translateX(260px);-moz-transform:translateX(260px);-ms-transform:translateX(260px);transform:translateX(260px);overflow:hidden}#mobile-nav-dimmer{position:absolute;top:0;left:100%;height:100%;background:#000;opacity:0;-webkit-transition:opacity .4s,-webkit-transform 0s .4s;-moz-transition:opacity .4s,-moz-transform 0s .4s;-ms-transition:opacity .4s,-ms-transform 0s .4s;transition:opacity .4s,transform 0s .4s}.mobile-nav-on #mobile-nav-dimmer{width:100%;opacity:.7;-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);-webkit-transition:opacity .4s;-moz-transition:opacity .4s;-ms-transition:opacity .4s;transition:opacity .4s}#footer{padding:24px 0;color:rgba(255,255,255,.6);position:relative;background:var(--color-navy);text-align:center}#footer:after,#footer:before{content:"";display:table}#footer:after{clear:both}@media screen and (min-width:769px){#footer{padding:40px 0;text-align:left}}@media print{#footer{display:none}}#footer a{color:inherit;text-decoration:none;-webkit-transition:.2s;-moz-transition:.2s;-ms-transition:.2s;transition:.2s}#footer a:hover{color:#fff}#footer .icon-twitter:hover{color:#1da1f2}#footer .icon-opencollective:hover{color:#3384ff}#footer-copyright{line-height:1.4}@media screen and (min-width:769px){#footer-copyright{float:left}}#footer-copyright a{font-weight:700}#footer-links{margin-top:1em}@media screen and (min-width:769px){#footer-links{float:right;margin-top:0}}.footer-link{font-size:20px;margin-left:10px}.footer-link:first-child{margin-left:0}@media screen and (min-width:769px){.footer-link{font-size:30px}}.icon-oc{height:36px;width:30px;display:inline-block;-webkit-background-size:contain;-moz-background-size:contain;background-size:contain;background-repeat:no-repeat;vertical-align:text-bottom;fill:#a2a5a8;-webkit-transition:.2s;-moz-transition:.2s;-ms-transition:.2s;transition:.2s}:root{--highlight-background:#2d2d2d;--highlight-current-line:#393939;--highlight-selection:#515151;--highlight-foreground:#ccc;--highlight-comment:#999;--highlight-red:#f2777a;--highlight-orange:#f99157;--highlight-yellow:#fc6;--highlight-green:#9c9;--highlight-aqua:#6cc;--highlight-blue:#69c;--highlight-purple:#c9c}code,pre{font-family:"Source Code Pro",Monaco,Menlo,Consolas,monospace;color:var(--highlight-foreground);background:var(--highlight-background);white-space:pre-wrap}code{padding:0 5px}pre{padding:10px 15px;line-height:22px}pre code{border:none;display:block;padding:0}.highlight{padding:10px 15px;color:var(--highlight-foreground);background:var(--highlight-background);overflow:auto;margin:0}.highlight table{margin:0!important;border:0}.highlight table td,.highlight table th{padding:0}.highlight figcaption{margin:-5px 0 5px;color:var(--color-gray)}.highlight figcaption:after,.highlight figcaption:before{content:"";display:table}.highlight figcaption:after{clear:both}.highlight figcaption a{float:right}.highlight pre{margin:0;padding:0;background:0 0}.highlight .line{height:22px}pre .comment,pre .title{color:var(--highlight-comment)}pre .attribute,pre .css .class,pre .css .id,pre .css .pseudo,pre .html .doctype,pre .regexp,pre .ruby .constant,pre .tag,pre .variable,pre .xml .doctype,pre .xml .pi,pre .xml .tag .title{color:var(--highlight-red)}pre .built_in,pre .constant,pre .literal,pre .number,pre .params,pre .preprocessor{color:var(--highlight-orange)}pre .class,pre .css .rules .attribute,pre .ruby .class .title{color:var(--highlight-green)}pre .header,pre .inheritance,pre .ruby .symbol,pre .string,pre .value,pre .xml .cdata{color:var(--highlight-green)}pre .css .hexcolor{color:var(--highlight-aqua)}pre .coffeescript .title,pre .function,pre .javascript .title,pre .perl .sub,pre .python .decorator,pre .python .title,pre .ruby .function .title,pre .ruby .title .keyword{color:var(--highlight-blue)}pre .javascript .function,pre .keyword{color:var(--highlight-purple)}@font-face{font-family:icomoon;src:url(../fonts/icomoon.eot?e8nnma);src:url(../fonts/icomoon.eot?e8nnma#iefix) format('embedded-opentype'),url(../fonts/icomoon.ttf?e8nnma) format('truetype'),url(../fonts/icomoon.woff?e8nnma) format('woff'),url(../fonts/icomoon.svg?e8nnma#icomoon) format('svg');font-weight:400;font-style:normal;font-display:block}i{font-family:icomoon!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-shopify:before{content:"\e905"}.icon-network:before{content:"\e902"}.icon-opencollective:before{content:"\e903"}.icon-search:before{content:"\f002"}.icon-gear:before{content:"\f013"}.icon-pencil:before{content:"\f040"}.icon-chevron-left:before{content:"\f053"}.icon-chevron-right:before{content:"\f054"}.icon-arrow-right:before{content:"\f061"}.icon-twitter:before{content:"\f099"}.icon-github:before{content:"\f09b"}.icon-shield:before{content:"\f132"}.icon-rocket:before{content:"\e9a5"}.icon-typescript:before{content:"\e900"}.icon-chat-bubble-dots:before{content:"\e901"}.searchbox{display:inline-block;position:relative;width:200px;height:32px!important;white-space:nowrap;box-sizing:border-box;visibility:visible!important}.searchbox .algolia-autocomplete{display:block;width:100%;height:100%}.searchbox__wrapper{width:100%;height:100%;z-index:999;position:relative}.searchbox__input{display:inline-block;box-sizing:border-box;transition:box-shadow .4s ease,background .4s ease;border:0;border-radius:16px;box-shadow:inset 0 0 0 1px #ccc;background:#fff!important;padding:0 26px 0 32px;width:100%;height:100%;vertical-align:middle;white-space:normal;font-size:12px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.searchbox__input::-webkit-search-cancel-button,.searchbox__input::-webkit-search-decoration,.searchbox__input::-webkit-search-results-button,.searchbox__input::-webkit-search-results-decoration{display:none}.searchbox__input:hover{box-shadow:inset 0 0 0 1px #b3b3b3}.searchbox__input:active,.searchbox__input:focus{outline:0;box-shadow:inset 0 0 0 1px #aaa;background:#fff}.searchbox__input::-webkit-input-placeholder{color:#aaa}.searchbox__input:-ms-input-placeholder{color:#aaa}.searchbox__input::-ms-input-placeholder{color:#aaa}.searchbox__input::placeholder{color:#aaa}.searchbox__submit{position:absolute;top:0;margin:0;border:0;border-radius:16px 0 0 16px;background-color:rgba(69,142,225,0);padding:0;width:32px;height:100%;vertical-align:middle;text-align:center;font-size:inherit;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;right:inherit;left:0}.searchbox__submit:before{display:inline-block;margin-right:-4px;height:100%;vertical-align:middle;content:""}.searchbox__submit:active,.searchbox__submit:hover{cursor:pointer}.searchbox__submit:focus{outline:0}.searchbox__submit svg{width:14px;height:14px;vertical-align:middle;fill:#6d7e96}.searchbox__reset{display:block;position:absolute;top:8px;right:8px;margin:0;border:0;background:0 0;cursor:pointer;padding:0;font-size:inherit;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;fill:rgba(0,0,0,.5)}.searchbox__reset.hide{display:none}.searchbox__reset:focus{outline:0}.searchbox__reset svg{display:block;margin:4px;width:8px;height:8px}.searchbox__input:valid~.searchbox__reset{display:block;-webkit-animation-name:sbx-reset-in;animation-name:sbx-reset-in;-webkit-animation-duration:.15s;animation-duration:.15s}@-webkit-keyframes sbx-reset-in{0%{-webkit-transform:translate3d(-20%,0,0);transform:translate3d(-20%,0,0);opacity:0}to{-webkit-transform:none;transform:none;opacity:1}}@keyframes sbx-reset-in{0%{-webkit-transform:translate3d(-20%,0,0);transform:translate3d(-20%,0,0);opacity:0}to{-webkit-transform:none;transform:none;opacity:1}}.algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu{right:0!important;left:inherit!important}.algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu:before{right:48px}.algolia-autocomplete.algolia-autocomplete-left .ds-dropdown-menu{left:0!important;right:inherit!important}.algolia-autocomplete.algolia-autocomplete-left .ds-dropdown-menu:before{left:48px}.algolia-autocomplete .ds-dropdown-menu{top:-6px;border-radius:4px;margin:6px 0 0;padding:0;text-align:left;height:auto;position:relative;background:0 0;border:none;z-index:999;max-width:600px;min-width:500px;box-shadow:0 1px 0 0 rgba(0,0,0,.2),0 2px 3px 0 rgba(0,0,0,.1)}.algolia-autocomplete .ds-dropdown-menu:before{display:block;position:absolute;content:"";width:14px;height:14px;background:#fff;z-index:1000;top:-7px;border-top:1px solid #d9d9d9;border-right:1px solid #d9d9d9;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);border-radius:2px}.algolia-autocomplete .ds-dropdown-menu .ds-suggestions{position:relative;z-index:1000;margin-top:8px}.algolia-autocomplete .ds-dropdown-menu .ds-suggestions a:hover{text-decoration:none}.algolia-autocomplete .ds-dropdown-menu .ds-suggestion{cursor:pointer}.algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion.suggestion-layout-simple,.algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion:not(.suggestion-layout-simple) .algolia-docsearch-suggestion--content{background-color:rgba(69,142,225,.05)}.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-]{position:relative;border:1px solid #d9d9d9;background:#fff;border-radius:4px;overflow:auto;padding:0 8px 8px}.algolia-autocomplete .ds-dropdown-menu *{box-sizing:border-box}.algolia-autocomplete .algolia-docsearch-suggestion{display:block;position:relative;padding:0 8px;background:#fff;color:#02060c;overflow:hidden}.algolia-autocomplete .algolia-docsearch-suggestion--highlight{color:#174d8c;background:rgba(143,187,237,.1);padding:.1em .05em}.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl0 .algolia-docsearch-suggestion--highlight,.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl1 .algolia-docsearch-suggestion--highlight,.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{padding:0 0 1px;background:inherit;box-shadow:inset 0 -2px 0 0 rgba(69,142,225,.8);color:inherit}.algolia-autocomplete .algolia-docsearch-suggestion--content{display:block;float:right;width:70%;position:relative;padding:5.33333px 0 5.33333px 10.66667px;cursor:pointer}.algolia-autocomplete .algolia-docsearch-suggestion--content:before{content:"";position:absolute;display:block;top:0;height:100%;width:1px;background:#ddd;left:-1px}.algolia-autocomplete .algolia-docsearch-suggestion--category-header{position:relative;border-bottom:1px solid #ddd;display:none;margin-top:8px;padding:4px 0;font-size:1em;color:#33363d}.algolia-autocomplete .algolia-docsearch-suggestion--wrapper{width:100%;float:left;padding:8px 0 0}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column{float:left;width:30%;text-align:right;position:relative;padding:5.33333px 10.66667px;color:#a4a7ae;font-size:.9em;word-wrap:break-word}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column:before{content:"";position:absolute;display:block;top:0;height:100%;width:1px;background:#ddd;right:0}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-inline{display:none}.algolia-autocomplete .algolia-docsearch-suggestion--title{margin-bottom:4px;color:#02060c;font-size:.9em;font-weight:700}.algolia-autocomplete .algolia-docsearch-suggestion--text{display:block;line-height:1.2em;font-size:.85em;color:#63676d}.algolia-autocomplete .algolia-docsearch-suggestion--no-results{width:100%;padding:8px 0;text-align:center;font-size:1.2em}.algolia-autocomplete .algolia-docsearch-suggestion--no-results:before{display:none}.algolia-autocomplete .algolia-docsearch-suggestion code{padding:1px 5px;font-size:90%;border:none;color:#222;background-color:#ebebeb;border-radius:3px;font-family:Menlo,Monaco,Consolas,Courier New,monospace}.algolia-autocomplete .algolia-docsearch-suggestion code .algolia-docsearch-suggestion--highlight{background:0 0}.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__main .algolia-docsearch-suggestion--category-header,.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__secondary{display:block}@media (min-width:768px){.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column{display:block}}@media (max-width:768px){.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column{display:inline-block;width:auto;float:left;padding:0;color:#02060c;font-size:.9em;font-weight:700;text-align:left;opacity:.5}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column:before{display:none}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column:after{content:"|"}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--content{display:inline-block;width:auto;text-align:left;float:left;padding:0}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--content:before{display:none}}.algolia-autocomplete .suggestion-layout-simple.algolia-docsearch-suggestion{border-bottom:1px solid #eee;padding:8px;margin:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--content{width:100%;padding:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--content:before{display:none}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header{margin:0;padding:0;display:block;width:100%;border:none}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl0,.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl1{opacity:.6;font-size:.85em}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl1:before{background-image:url('data:image/svg+xml;utf8,');content:"";width:10px;height:10px;display:inline-block}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--wrapper{width:100%;float:left;margin:0;padding:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--duplicate-content,.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--subcategory-inline{display:none!important}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--title{margin:0;color:#458ee1;font-size:.9em;font-weight:400}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--title:before{content:"#";font-weight:700;color:#458ee1;display:inline-block}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--text{margin:4px 0 0;display:block;line-height:1.4em;padding:5.33333px 8px;background:#f8f8f8;font-size:.85em;opacity:.8}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{color:#3f4145;font-weight:700;box-shadow:none}.algolia-autocomplete .algolia-docsearch-footer{width:134px;height:20px;z-index:2000;margin-top:10.66667px;float:right;font-size:0;line-height:0}.algolia-autocomplete .algolia-docsearch-footer--logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='168' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M78.988.938h16.594a2.968 2.968 0 0 1 2.966 2.966V20.5a2.967 2.967 0 0 1-2.966 2.964H78.988a2.967 2.967 0 0 1-2.966-2.964V3.897A2.961 2.961 0 0 1 78.988.938zm41.937 17.866c-4.386.02-4.386-3.54-4.386-4.106l-.007-13.336 2.675-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-10.846-2.18c.821 0 1.43-.047 1.855-.129v-2.719a6.334 6.334 0 0 0-1.574-.199 5.7 5.7 0 0 0-.897.069 2.699 2.699 0 0 0-.814.24c-.24.116-.439.28-.582.491-.15.212-.219.335-.219.656 0 .628.219.991.616 1.23s.938.362 1.615.362zm-.233-9.7c.883 0 1.629.109 2.231.328.602.218 1.088.525 1.444.915.363.396.609.922.76 1.483.157.56.232 1.175.232 1.85v6.874a32.5 32.5 0 0 1-1.868.314c-.834.123-1.772.185-2.813.185-.69 0-1.327-.069-1.895-.198a4.001 4.001 0 0 1-1.471-.636 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.803 0-.656.13-1.073.384-1.525a3.24 3.24 0 0 1 1.047-1.106c.445-.287.95-.492 1.532-.615a8.8 8.8 0 0 1 1.82-.185 8.404 8.404 0 0 1 1.972.24v-.438c0-.307-.035-.6-.11-.874a1.88 1.88 0 0 0-.384-.73 1.784 1.784 0 0 0-.724-.493 3.164 3.164 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.735 7.735 0 0 0-1.26.307l-.321-2.192c.335-.117.834-.233 1.478-.349a10.98 10.98 0 0 1 2.073-.178zm52.842 9.626c.822 0 1.43-.048 1.854-.13V13.7a6.347 6.347 0 0 0-1.574-.199c-.294 0-.595.021-.896.069a2.7 2.7 0 0 0-.814.24 1.46 1.46 0 0 0-.582.491c-.15.212-.218.335-.218.656 0 .628.218.991.615 1.23.404.245.938.362 1.615.362zm-.226-9.694c.883 0 1.629.108 2.231.327.602.219 1.088.526 1.444.915.355.39.609.923.759 1.483a6.8 6.8 0 0 1 .233 1.852v6.873c-.41.088-1.034.19-1.868.314-.834.123-1.772.184-2.813.184-.69 0-1.327-.068-1.895-.198a4.001 4.001 0 0 1-1.471-.635 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.804 0-.656.13-1.073.384-1.524.26-.45.608-.82 1.047-1.107.445-.286.95-.491 1.532-.614a8.803 8.803 0 0 1 2.751-.13c.329.034.671.096 1.04.185v-.437a3.3 3.3 0 0 0-.109-.875 1.873 1.873 0 0 0-.384-.731 1.784 1.784 0 0 0-.724-.492 3.165 3.165 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.75 7.75 0 0 0-1.26.307l-.321-2.193c.335-.116.834-.232 1.478-.348a11.633 11.633 0 0 1 2.073-.177zm-8.034-1.271a1.626 1.626 0 0 1-1.628-1.62c0-.895.725-1.62 1.628-1.62.904 0 1.63.725 1.63 1.62 0 .895-.733 1.62-1.63 1.62zm1.348 13.22h-2.689V7.27l2.69-.423v11.956zm-4.714 0c-4.386.02-4.386-3.54-4.386-4.107l-.008-13.336 2.676-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-8.698-5.903c0-1.156-.253-2.119-.746-2.788-.493-.677-1.183-1.01-2.067-1.01-.882 0-1.574.333-2.065 1.01-.493.676-.733 1.632-.733 2.788 0 1.168.246 1.953.74 2.63.492.683 1.183 1.018 2.066 1.018.882 0 1.574-.342 2.067-1.019.492-.683.738-1.46.738-2.63zm2.737-.007c0 .902-.13 1.584-.397 2.33a5.52 5.52 0 0 1-1.128 1.906 4.986 4.986 0 0 1-1.752 1.223c-.685.286-1.739.45-2.265.45-.528-.006-1.574-.157-2.252-.45a5.096 5.096 0 0 1-1.744-1.223c-.487-.527-.863-1.162-1.137-1.906a6.345 6.345 0 0 1-.41-2.33c0-.902.123-1.77.397-2.508a5.554 5.554 0 0 1 1.15-1.892 5.133 5.133 0 0 1 1.75-1.216c.679-.287 1.425-.423 2.232-.423.808 0 1.553.142 2.237.423a4.88 4.88 0 0 1 1.753 1.216 5.644 5.644 0 0 1 1.135 1.892c.287.738.431 1.606.431 2.508zm-20.138 0c0 1.12.246 2.363.738 2.882.493.52 1.13.78 1.91.78.424 0 .828-.062 1.204-.178.377-.116.677-.253.917-.417V9.33a10.476 10.476 0 0 0-1.766-.226c-.971-.028-1.71.37-2.23 1.004-.513.636-.773 1.75-.773 2.788zm7.438 5.274c0 1.824-.466 3.156-1.404 4.004-.936.846-2.367 1.27-4.296 1.27-.705 0-2.17-.137-3.34-.396l.431-2.118c.98.205 2.272.26 2.95.26 1.074 0 1.84-.219 2.299-.656.459-.437.684-1.086.684-1.948v-.437a8.07 8.07 0 0 1-1.047.397c-.43.13-.93.198-1.492.198-.739 0-1.41-.116-2.018-.349a4.206 4.206 0 0 1-1.567-1.025c-.431-.45-.774-1.017-1.013-1.694-.24-.677-.363-1.885-.363-2.773 0-.834.13-1.88.384-2.577.26-.696.629-1.298 1.129-1.796.493-.498 1.095-.881 1.8-1.162a6.605 6.605 0 0 1 2.428-.457c.87 0 1.67.109 2.45.24.78.129 1.444.265 1.985.415V18.17z' fill='%235468FF'/%3E%3Cpath d='M6.972 6.677v1.627c-.712-.446-1.52-.67-2.425-.67-.585 0-1.045.13-1.38.391a1.24 1.24 0 0 0-.502 1.03c0 .425.164.765.494 1.02.33.256.835.532 1.516.83.447.192.795.356 1.045.495.25.138.537.332.862.582.324.25.563.548.718.894.154.345.23.741.23 1.188 0 .947-.334 1.691-1.004 2.234-.67.542-1.537.814-2.601.814-1.18 0-2.16-.229-2.936-.686v-1.708c.84.628 1.814.942 2.92.942.585 0 1.048-.136 1.388-.407.34-.271.51-.646.51-1.125 0-.287-.1-.55-.302-.79-.203-.24-.42-.42-.655-.542-.234-.123-.585-.29-1.053-.503a61.27 61.27 0 0 1-.582-.271 13.67 13.67 0 0 1-.55-.287 4.275 4.275 0 0 1-.567-.351 6.92 6.92 0 0 1-.455-.4c-.18-.17-.31-.34-.39-.51-.08-.17-.155-.37-.224-.598a2.553 2.553 0 0 1-.104-.742c0-.915.333-1.638.998-2.17.664-.532 1.523-.798 2.576-.798.968 0 1.793.17 2.473.51zm7.468 5.696v-.287c-.022-.607-.187-1.088-.495-1.444-.309-.357-.75-.535-1.324-.535-.532 0-.99.194-1.373.583-.382.388-.622.949-.717 1.683h3.909zm1.005 2.792v1.404c-.596.34-1.383.51-2.362.51-1.255 0-2.255-.377-3-1.132-.744-.755-1.116-1.744-1.116-2.968 0-1.297.34-2.316 1.021-3.055.68-.74 1.548-1.11 2.6-1.11 1.033 0 1.852.323 2.458.966.606.644.91 1.572.91 2.784 0 .33-.033.676-.096 1.038h-5.314c.107.702.405 1.239.894 1.611.49.372 1.106.558 1.85.558.862 0 1.58-.202 2.155-.606zm6.605-1.77h-1.212c-.596 0-1.045.116-1.349.35-.303.234-.454.532-.454.894 0 .372.117.664.35.877.235.213.575.32 1.022.32.51 0 .912-.142 1.204-.424.293-.281.44-.651.44-1.108v-.91zm-4.068-2.554V9.325c.627-.361 1.457-.542 2.489-.542 2.116 0 3.175 1.026 3.175 3.08V17h-1.548v-.957c-.415.68-1.143 1.02-2.186 1.02-.766 0-1.38-.22-1.843-.661-.462-.442-.694-1.003-.694-1.684 0-.776.293-1.38.878-1.81.585-.431 1.404-.647 2.457-.647h1.34V11.8c0-.554-.133-.971-.399-1.253-.266-.282-.707-.423-1.324-.423a4.07 4.07 0 0 0-2.345.718zm9.333-1.93v1.42c.394-1 1.101-1.5 2.123-1.5.148 0 .313.016.494.048v1.531a1.885 1.885 0 0 0-.75-.143c-.542 0-.989.24-1.34.718-.351.479-.527 1.048-.527 1.707V17h-1.563V8.91h1.563zm5.01 4.084c.022.82.272 1.492.75 2.019.479.526 1.15.79 2.01.79.639 0 1.235-.176 1.788-.527v1.404c-.521.319-1.186.479-1.995.479-1.265 0-2.276-.4-3.031-1.197-.755-.798-1.133-1.792-1.133-2.984 0-1.16.38-2.151 1.14-2.975.761-.825 1.79-1.237 3.088-1.237.702 0 1.346.149 1.93.447v1.436a3.242 3.242 0 0 0-1.77-.495c-.84 0-1.513.266-2.019.798-.505.532-.758 1.213-.758 2.042zM40.24 5.72v4.579c.458-1 1.293-1.5 2.505-1.5.787 0 1.42.245 1.899.734.479.49.718 1.17.718 2.042V17h-1.564v-5.106c0-.553-.14-.98-.422-1.284-.282-.303-.652-.455-1.11-.455-.531 0-1.002.202-1.411.606-.41.405-.615 1.022-.615 1.851V17h-1.563V5.72h1.563zm14.966 10.02c.596 0 1.096-.253 1.5-.758.404-.506.606-1.157.606-1.955 0-.915-.202-1.62-.606-2.114-.404-.495-.92-.742-1.548-.742-.553 0-1.05.224-1.491.67-.442.447-.662 1.133-.662 2.058 0 .958.212 1.67.638 2.138.425.469.946.703 1.563.703zM53.004 5.72v4.42c.574-.894 1.388-1.341 2.44-1.341 1.022 0 1.857.383 2.506 1.149.649.766.973 1.781.973 3.047 0 1.138-.309 2.109-.925 2.912-.617.803-1.463 1.205-2.537 1.205-1.075 0-1.894-.447-2.457-1.34V17h-1.58V5.72h1.58zm9.908 11.104l-3.223-7.913h1.739l1.005 2.632 1.26 3.415c.096-.32.48-1.458 1.15-3.415l.909-2.632h1.66l-2.92 7.866c-.777 2.074-1.963 3.11-3.559 3.11a2.92 2.92 0 0 1-.734-.079v-1.34c.17.042.351.064.543.064 1.032 0 1.755-.57 2.17-1.708z' fill='%235D6494'/%3E%3Cpath d='M89.632 5.967v-.772a.978.978 0 0 0-.978-.977h-2.28a.978.978 0 0 0-.978.977v.793c0 .088.082.15.171.13a7.127 7.127 0 0 1 1.984-.28c.65 0 1.295.088 1.917.259.082.02.164-.04.164-.13m-6.248 1.01l-.39-.389a.977.977 0 0 0-1.382 0l-.465.465a.973.973 0 0 0 0 1.38l.383.383c.062.061.15.047.205-.014.226-.307.472-.601.746-.874.281-.28.568-.526.883-.751.068-.042.075-.137.02-.2m4.16 2.453v3.341c0 .096.104.165.192.117l2.97-1.537c.068-.034.089-.117.055-.184a3.695 3.695 0 0 0-3.08-1.866c-.068 0-.136.054-.136.13m0 8.048a4.489 4.489 0 0 1-4.49-4.482 4.488 4.488 0 0 1 4.49-4.482 4.488 4.488 0 0 1 4.489 4.482 4.484 4.484 0 0 1-4.49 4.482m0-10.85a6.363 6.363 0 1 0 0 12.729 6.37 6.37 0 0 0 6.372-6.368 6.358 6.358 0 0 0-6.371-6.36' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat;background-position:50%;background-size:100%;overflow:hidden;text-indent:-9000px;padding:0!important;width:100%;height:100%;display:block} \ No newline at end of file +:root{--color-default:#444;--color-default-invert:#d1d2d4;--color-gray:#999;--color-border:#e3e3e3;--color-navy:#171f26;--color-content-bg:#fff;--color-news-bg:#161d24;--color-navy-lighter:#283542;--color-link:#0e83cd;--color-link-hover:#1094e8}@media (prefers-color-scheme:dark){:root{--color-default:#d1d2d4;--color-default-invert:#444;--color-gray:#666;--color-border:#6a6a6a;--color-background:#fff;--color-navy:#171f26;--color-news-bg:#161d24;--color-navy-lighter:#232e3a;--color-content-bg:#1c1c1c;--color-link:#0e83cd;--color-link-hover:#1094e8}}a,abbr,acronym,address,applet,big,blockquote,body,caption,cite,code,dd,del,dfn,div,dl,dt,em,fieldset,form,h1,h2,h3,h4,h5,h6,html,iframe,img,ins,kbd,label,legend,li,object,ol,p,pre,q,s,samp,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,tr,tt,ul,var{margin:0;padding:0;border:0;outline:0;font-weight:inherit;font-style:inherit;font-family:inherit;font-size:100%;vertical-align:baseline}body{line-height:1;color:#000;background:#fff}ol,ul{list-style:none}table{border-collapse:separate;border-spacing:0;vertical-align:middle}caption,td,th{text-align:left;font-weight:400;vertical-align:middle}a img{border:none}html{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*,:after,:before{-webkit-box-sizing:inherit;-moz-box-sizing:inherit;box-sizing:inherit}button::-moz-focus-inner,input[type=button]::-moz-focus-inner,input[type=reset]::-moz-focus-inner,input[type=submit]::-moz-focus-inner{padding:0;margin:0;border:0}button,input,select{margin:0;padding:0;border:0}body{background:var(--color-navy);font-size:16px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;color:var(--color-default);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}a{color:var(--color-link);text-decoration:none}a:hover{color:var(--color-link-hover);text-decoration:underline}@media print{a{color:var(--color-default);text-decoration:underline}a:after{content:" (" attr(href) ")";font-size:80%}}@media screen and (max-device-width:480px){body{-webkit-text-size-adjust:none}}@media screen{.wrapper{max-width:1800px;margin:0 auto}}@media screen{#article-toc-inner,.inner{padding:0 20px}}#content-wrap{background:var(--color-content-bg);overflow:hidden}.video-container{text-align:center}#header{position:relative;padding:10px 0}@media print{#header{display:none}}#header-inner{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-webkit-box-lines:single;-moz-box-lines:single;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-align:center;-moz-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center}@media screen and (max-width:768px){#header-inner{-webkit-box-pack:center;-moz-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}}#logo-wrap{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;-webkit-flex:0 36px;-ms-flex:0 36px;flex:0 36px}#logo{text-indent:101%;white-space:nowrap;overflow:hidden;background:url(../icon/logo.png);width:36px;height:36px;-webkit-background-size:36px 36px;-moz-background-size:36px 36px;background-size:36px 36px;display:block}#main-nav{display:none;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto}@media screen and (min-width:769px){#main-nav{display:block}}#search-input-wrap{display:none;padding-left:6px;border-bottom:1px solid var(--color-gray)}#search-input-wrap.on{display:inline-block}#search-input-wrap #search-input,#search-input-wrap>i,#search-input-wrap>span{vertical-align:middle;color:#fff;line-height:36px}#search-input-icon{padding-right:.5em;opacity:.7}#search-input{background:0 0;font-size:inherit;outline:0;-webkit-appearance:none}.main-nav-link{color:#fff;text-decoration:none;line-height:36px;white-space:nowrap;opacity:.7;-webkit-transition:opacity .2s,color .2s;-moz-transition:opacity .2s,color .2s;-ms-transition:opacity .2s,color .2s;transition:opacity .2s,color .2s;display:inline-block;padding:0 12px}.main-nav-link.active{opacity:1}.main-nav-link:hover{opacity:1;color:var(--color-link-hover);text-decoration:none}.icon-nav-link{display:none;position:relative;padding:0 8px}.icon-nav-link .icon-nav-title{display:none}@media screen and (min-width:992px){.icon-nav-link .icon-nav-title{display:inline}}@media screen and (min-width:769px){.icon-nav-link{display:block}}#lang-select{opacity:0;position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:menulist-button;font-size:inherit}#banner{color:rgba(255,255,255,.8);text-align:center}#banner-title,.theme-intro-title{line-height:1.15;font-weight:300;font-size:40px}@media screen and (min-width:769px){#banner-title,.theme-intro-title{font-size:50px}}#banner-title{padding-top:20px}@media screen and (min-width:769px){#banner-title{padding-top:100px}}.theme-intro-title{margin-bottom:24px;padding-top:24px}@media screen and (min-width:769px){.theme-intro-title{padding-top:0}}#banner-start{text-align:center;padding:40px 0;line-height:47px}@media screen and (min-width:769px){#banner-start{padding:60px 0;font-size:18px}}#banner-start-command{background:var(--color-navy-lighter);padding:0 15px;color:#fff;display:inline-block}#banner-start-command:before{content:"$";opacity:.5;padding-right:10px}#banner-start-link{color:#fff;background:var(--color-link);display:inline-block;padding:0 15px;text-decoration:none;-webkit-transition:background .2s;-moz-transition:background .2s;-ms-transition:background .2s;transition:background .2s}#banner-start-link:hover{background:var(--color-link-hover)}#banner-share{display:block;padding-bottom:60px}#intro-news-list{background-color:var(--color-news-bg);margin:-1px 0}#intro-news-flex{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-orient:vertical;-moz-box-orient:vertical;-webkit-flex-flow:column;-ms-flex-flow:column;flex-flow:column}@media screen and (min-width:769px){#intro-news-flex{-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-webkit-box-lines:multiple;-moz-box-lines:multiple;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap}}.intro-news-wrap{padding:24px 30px;text-decoration:none}.intro-news-wrap:hover{background-color:var(--color-link-hover)}@media screen and (min-width:769px){.intro-news-wrap{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;padding:36px 30px}}@media screen and (min-width:960px){.intro-news-wrap{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%}}.intro-news-time{font-size:14px;color:rgba(255,255,255,.6)}.intro-news-wrap:hover .intro-news-time{color:rgba(255,255,255,.8)}.intro-news-title{padding-top:4px;font-size:15px;line-height:1.2;color:#fff}#intro-feature-list{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-orient:vertical;-moz-box-orient:vertical;-webkit-flex-flow:column;-ms-flex-flow:column;flex-flow:column;margin:30px 0}@media screen and (min-width:769px){#intro-feature-list{-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-webkit-box-lines:multiple;-moz-box-lines:multiple;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap}}.intro-feature-wrap{margin-top:20px}@media screen and (min-width:769px){.intro-feature-wrap{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;margin-top:50px}}.intro-feature{position:relative;text-align:center}@media screen and (min-width:769px){.intro-feature{text-align:left;padding-left:70px}}.intro-feature-icon{color:var(--color-link);font-size:36px;margin-bottom:6px;text-align:center}@media screen and (min-width:769px){.intro-feature-icon{margin-bottom:26px;position:absolute;top:0;left:20px;font-size:24px;width:24px}}.intro-feature-title{color:var(--color-link);font-size:24px}.intro-feature-desc{margin-top:1em;line-height:1.8em}@media screen and (min-width:769px){.intro-feature-desc{margin-top:1.8em}}.intro-feature-desc a{text-decoration:none;color:#000}.intro-feature-desc a:hover,.intro-feature-desc a:visited{color:#000}.intro-feature-desc a:hover{text-decoration:underline}@media (prefers-color-scheme:dark){.intro-feature-desc a{color:#fff}.intro-feature-desc a:hover,.intro-feature-desc a:visited{color:#fff}}#intro-cmd-wrap{max-width:700px;padding:15px 30px;font-size:16px;overflow:auto;margin:50px auto 0}#intro-cmd-wrap pre{line-height:32px}@media screen and (min-width:769px){#intro-cmd-wrap{margin:70px auto 0}}#intro-get-started-wrap{text-align:center;margin:20px 0 50px}@media screen and (min-width:769px){#intro-get-started-wrap{margin:30px 0 70px}}#intro-get-started-link{font-size:18px;display:inline-block;text-decoration:none;border:3px solid var(--color-link-hover);padding:12px 24px;position:relative;-webkit-transition:background .2s,color .2s;-moz-transition:background .2s,color .2s;-ms-transition:background .2s,color .2s;transition:background .2s,color .2s;color:var(--color-link)}#intro-get-started-link:hover{background:var(--color-link-hover);color:#fff}#contributors-wrap,#sponsors-wrap{background:var(--color-navy-lighter);border-top:1px solid #161d24;border-bottom:1px solid #161d24;margin:-1px 0}#contributors-wrap .inner,#sponsors-wrap .inner{margin:48px 16px}@media screen and (min-width:480px){#contributors-wrap .inner,#sponsors-wrap .inner{margin:64px 32px}}#contributors-wrap .inner h3,#sponsors-wrap .inner h3{color:#fff;font-size:32px}#contributors-wrap .inner p,#sponsors-wrap .inner p{color:#ccc;margin:36px 0 24px;font-size:20px;line-height:1.5}#contributors-wrap .inner .description a,#sponsors-wrap .inner .description a{text-decoration:none}#contributors-wrap .description a{color:#fff}#contributors-wrap .description a:hover{background:#fff;color:var(--color-navy-lighter)}#sponsors-wrap{border:none;text-align:right;background:var(--color-content-bg);overflow:hidden}#sponsors-wrap .contributors{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-pack:right;-moz-box-pack:right;-ms-flex-pack:right;-webkit-justify-content:right;justify-content:right}#sponsors-wrap .inner h3{color:var(--color-default)}#sponsors-wrap .inner p{color:var(--color-gray)}#sponsors-wrap .inner .open-collective{max-width:100%}#sponsors-wrap .inner .description a{color:#333}#sponsors-wrap .inner .description a:hover{background:var(--color-navy);color:#fff}@media (prefers-color-scheme:dark){#sponsors-wrap .inner p{color:var(--color-default)}#sponsors-wrap .inner .description a{color:#fff}#sponsors-wrap .inner .description a:hover{background:#fff;color:var(--color-navy-lighter)}}.contributors tr{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.contributors td{margin:10px 2px 0}.contributors td a img{display:inline-block;height:72px;width:72px;background:var(--color-gray);border-radius:50%;margin-bottom:10px}#playground{background:var(--color-content-bg);overflow:hidden}#playground .wrapper{margin-bottom:40px}#playground h1{font-size:36px;font-weight:300;margin:40px 0 24px}#playground .row{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-moz-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;font-size:1em}#playground .row .col{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;-webkit-flex:1 1 100%;-ms-flex:1 1 100%;flex:1 1 100%;margin-bottom:10px}@media screen and (min-width:769px){#playground .row{-webkit-box-lines:single;-moz-box-lines:single;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}#playground .col:first-child{margin-right:15px}}#playground #editorEl{height:40vh}#playground #dataEl{height:28vh;margin-top:2vh}#playground #previewEl{height:70vh}#playground .hide{display:none}#playground .loader{width:75px;height:75px;margin:150px auto 200px;border-top:5px solid #292929;border-right:5px solid #efefef;border-bottom:5px solid #efefef;border-left:5px solid #efefef;border-radius:100px;-webkit-animation:spin 1s infinite linear;-moz-animation:spin 1s infinite linear;-ms-animation:spin 1s infinite linear;animation:spin 1s infinite linear}@-moz-keyframes spin{100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes spin{100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}#sidebar{width:220px;padding-bottom:40px;opacity:.8;display:none;padding-top:40px}@media screen and (min-width:769px){#sidebar{display:block}}.sidebar-title{margin-top:40px;padding:10px 0;font-weight:700;color:var(--color-link);display:inline-block;border-top:1px solid var(--color-border);line-height:1}.sidebar-title:first-child{margin-top:0}.sidebar-link,.toc-link{display:block;color:var(--color-default);text-decoration:none;padding:7px 0;line-height:1;position:relative;width:100%}.sidebar-link.current,.toc-link.current{color:var(--color-link)}.sidebar-link:hover,.toc-link:hover{color:var(--color-link-hover)}#content{position:relative}#content-inner{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex}#content-inner #sidebar{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;-webkit-flex:0 0 220px;-ms-flex:0 0 220px;flex:0 0 220px}#content-inner .article-container{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;-webkit-flex:1 100%;-ms-flex:1 100%;flex:1 100%}.article-inner{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex}.article-inner .article{width:0;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;-webkit-flex:1 1 100%;-ms-flex:1 1 100%;flex:1 1 100%;padding:40px 0;overflow:hidden;text-overflow:ellipsis}@media print{.article-inner .article{padding:0}}.article-inner #article-toc{display:none;width:220px;opacity:.8}@media screen and (min-width:769px){.article-inner #article-toc{display:block}}#article-toc-inner{width:220px;position:sticky;top:0;margin:40px auto}#article-toc-inner .sidebar-title{border-top:none}.toc-item{list-style:none}.toc-child{padding-left:1em;font-size:.9em}#article-toc-inner-list{overflow-y:auto}#article-toc-top{margin-top:13px;font-size:.9em;text-decoration:none;color:var(--color-default);display:block}#article-toc-top:hover{color:var(--color-link-hover)}.article-header{padding-bottom:20px;overflow:hidden}.article-title{float:left;font-size:36px;font-weight:300;text-decoration:none;color:var(--color-default);-webkit-transition:.2s;-moz-transition:.2s;-ms-transition:.2s;transition:.2s}a.article-title:hover{color:var(--color-link-hover)}.post .article-title{float:none}.article-date{color:var(--color-gray);text-decoration:none;display:inline-block;margin-top:1em}.article-date:hover{color:var(--color-link-hover)}.article-edit-link{float:right;text-decoration:none;color:#bbb;font-size:24px;line-height:36px;-webkit-transition:.2s;-moz-transition:.2s;-ms-transition:.2s;transition:.2s;display:none}.article-edit-link:hover{color:var(--color-link-hover)}@media screen and (min-width:769px){.article-edit-link{display:block}}.article-anchor{margin-left:10px;display:none}.article-anchor:before{content:"#"}@media print{.article-anchor{display:none!important}}.article-heading:hover .article-anchor{display:inline-block}.article-content{line-height:1.8em;color:var(--color-default)}@media print{.article-content{font-size:12pt}}.article-content .highlight,.article-content blockquote,.article-content dl,.article-content iframe,.article-content ol,.article-content p,.article-content table,.article-content ul{margin:1em 0}.article-content h1{font-size:2em}.article-content h2{font-size:1.5em;border-bottom:1px solid var(--color-border);padding-bottom:10px;margin-bottom:15px}.article-content h3{font-size:1.3em}.article-content h1,.article-content h2,.article-content h3,.article-content h4,.article-content h5,.article-content h6{line-height:1em;font-weight:700;margin:1em 0}.article-content hr{border-bottom:none;border-top:1px dashed var(--color-border)}.article-content a[target="_blank"]{position:relative}.article-content a[target="_blank"]::after{content:'\00f08e';font-family:icomoon;padding-left:3px;vertical-align:super;zoom:.7}.article-content strong{font-weight:700}.article-content em{font-style:italic}.article-content dl,.article-content ol,.article-content ul{margin-left:20px}.article-content dl dl,.article-content dl ol,.article-content dl ul,.article-content ol dl,.article-content ol ol,.article-content ol ul,.article-content ul dl,.article-content ul ol,.article-content ul ul{margin-top:0;margin-bottom:0}.article-content ul{list-style:disc}.article-content ol{list-style:decimal}.article-content dl{list-style:square}.article-content li p{margin:0}.article-content li .highlight,.article-content li blockquote,.article-content li iframe,.article-content li table{margin:1em 0}.article-content img,.article-content video{max-width:100%}.article-content img[src*="@2x"]{zoom:50%}.article-content blockquote{padding:0 20px;position:relative;border:1px solid var(--color-border);border-left:5px solid #ddd}.article-content blockquote footer{margin:1em 0;font-style:italic}.article-content blockquote footer cite:before{content:"—";padding:0 .3em}.article-content blockquote footer cite a{color:color-grey}@media (prefers-color-scheme:dark){.article-content blockquote{border-color:var(--color-gray)}}.article-content .note.tip{border-left-color:#0fff00}.article-content .note.info{border-left-color:#0af}.article-content .note.warn{border-left-color:red}.article-content .since{margin-top:0;font-style:italic}.article-content .since::before{content:"Added in: "}.article-content .note-title{margin:1em 0 .5em;display:block;font-size:1.3em;font-weight:700}.article-content .note-title+*{margin-top:0}.article-content table{max-width:100%;border:1px solid var(--color-border)}.article-content table th{font-weight:700}.article-content table td,.article-content table th{padding:5px 15px}.article-content table tr:nth-child(2n){background:#eee}@media (prefers-color-scheme:dark){.article-content table tr:nth-child(2n){background:var(--color-gray)}}.article-footer{margin:60px 0 0;border-top:1px solid var(--color-border);text-align:center;color:var(--color-gray);line-height:1em;padding-top:1em;position:relative}@media print{.article-footer{display:none}}.article-footer-next,.article-footer-prev{color:var(--color-link);text-decoration:none;font-weight:700;text-transform:uppercase;position:absolute}.article-footer-next:hover,.article-footer-prev:hover{color:var(--color-link-hover)}@media print{.article-footer-next,.article-footer-prev{display:none}}.article-footer-next span,.article-footer-prev span{padding:0 6px}.article-footer-next i,.article-footer-next span,.article-footer-prev i,.article-footer-prev span{vertical-align:middle}.article-footer-prev{left:0}.article-footer-next{right:0}.article-footer-updated{font-size:.9em}[lang=zh-cn] .since::before{content:"支持版本:"}.mobile-nav-on{overflow:hidden;height:100%;max-height:100%}#mobile-nav{position:fixed;top:0;width:260px;left:-260px;height:100%;background:var(--color-navy);-webkit-transition:.4s;-moz-transition:.4s;-ms-transition:.4s;transition:.4s}.mobile-nav-on #mobile-nav{-webkit-transform:translateX(100%);-moz-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.mobile-sidebar-list{background:var(--color-navy-lighter)}#mobile-nav-inner{overflow-y:auto;position:absolute;top:0;bottom:40px;left:0;right:0;-webkit-overflow-scrolling:touch}#mobile-nav-inner>:first-child{padding-top:10px}#mobile-nav-inner>:last-child{padding-bottom:10px}#mobile-nav-toggle{position:absolute;top:0;bottom:0;left:20px;width:25px;height:20px;margin:auto;opacity:.5;cursor:pointer;-webkit-transition:.2s;-moz-transition:.2s;-ms-transition:.2s;transition:.2s}#mobile-nav-toggle:active,.mobile-nav-on #mobile-nav-toggle{opacity:1}@media screen and (min-width:769px){#mobile-nav-toggle{display:none}}.mobile-nav-toggle-bar{background:#fff;position:absolute;left:0;width:100%;height:2px;-webkit-transition:.4s;-moz-transition:.4s;-ms-transition:.4s;transition:.4s;-webkit-transform-origin:0;-moz-transform-origin:0;-ms-transform-origin:0;transform-origin:0;border-radius:2px}.mobile-nav-toggle-bar:first-child{top:0}.mobile-nav-on .mobile-nav-toggle-bar:first-child{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.mobile-nav-toggle-bar:nth-child(2){top:9px}.mobile-nav-on .mobile-nav-toggle-bar:nth-child(2){opacity:0}.mobile-nav-toggle-bar:last-child{top:18px}.mobile-nav-on .mobile-nav-toggle-bar:last-child{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.mobile-nav-link{color:#fff;text-decoration:none;display:block;padding:12px 16px;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-nav-title{color:var(--color-link);font-weight:700;padding:10px 15px;line-height:1;display:block;border-top:1px solid #444;margin-top:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#mobile-button-list{position:absolute;bottom:0;left:0;width:100%;background:var(--color-navy);border-top:1px solid #444;padding:12px 16px}#mobile-button-list .mobile-nav-link{display:inline-block;padding:0;margin-right:16px}#mobile-lang-select-wrap{position:relative}#mobile-lang-select{-webkit-appearance:menulist-button;opacity:0;position:absolute;top:0;left:0;width:100%;height:100%}#container{-webkit-transition:.4s;-moz-transition:.4s;-ms-transition:.4s;transition:.4s;height:100%;-webkit-overflow-scrolling:touch}.mobile-nav-on #container{-webkit-transform:translateX(260px);-moz-transform:translateX(260px);-ms-transform:translateX(260px);transform:translateX(260px);overflow:hidden}#mobile-nav-dimmer{position:absolute;top:0;left:100%;height:100%;background:#000;opacity:0;-webkit-transition:opacity .4s,-webkit-transform 0s .4s;-moz-transition:opacity .4s,-moz-transform 0s .4s;-ms-transition:opacity .4s,-ms-transform 0s .4s;transition:opacity .4s,transform 0s .4s}.mobile-nav-on #mobile-nav-dimmer{width:100%;opacity:.7;-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);-webkit-transition:opacity .4s;-moz-transition:opacity .4s;-ms-transition:opacity .4s;transition:opacity .4s}#footer{padding:24px 0;color:rgba(255,255,255,.6);position:relative;background:var(--color-navy);text-align:center}#footer:after,#footer:before{content:"";display:table}#footer:after{clear:both}@media screen and (min-width:769px){#footer{padding:40px 0;text-align:left}}@media print{#footer{display:none}}#footer a{color:inherit;text-decoration:none;-webkit-transition:.2s;-moz-transition:.2s;-ms-transition:.2s;transition:.2s}#footer a:hover{color:#fff}#footer .icon-twitter:hover{color:#1da1f2}#footer .icon-opencollective:hover{color:#3384ff}#footer-copyright{line-height:1.4}@media screen and (min-width:769px){#footer-copyright{float:left}}#footer-copyright a{font-weight:700}#footer-links{margin-top:1em}@media screen and (min-width:769px){#footer-links{float:right;margin-top:0}}.footer-link{font-size:20px;margin-left:10px}.footer-link:first-child{margin-left:0}@media screen and (min-width:769px){.footer-link{font-size:30px}}.icon-oc{height:36px;width:30px;display:inline-block;-webkit-background-size:contain;-moz-background-size:contain;background-size:contain;background-repeat:no-repeat;vertical-align:text-bottom;fill:#a2a5a8;-webkit-transition:.2s;-moz-transition:.2s;-ms-transition:.2s;transition:.2s}:root{--highlight-background:#2d2d2d;--highlight-current-line:#393939;--highlight-selection:#515151;--highlight-foreground:#ccc;--highlight-comment:#999;--highlight-red:#f2777a;--highlight-orange:#f99157;--highlight-yellow:#fc6;--highlight-green:#9c9;--highlight-aqua:#6cc;--highlight-blue:#69c;--highlight-purple:#c9c}code,pre{font-family:"Source Code Pro",Monaco,Menlo,Consolas,monospace;color:var(--highlight-foreground);background:var(--highlight-background);white-space:pre-wrap}code{padding:0 5px}pre{padding:10px 15px;line-height:22px}pre code{border:none;display:block;padding:0}.highlight{padding:10px 15px;color:var(--highlight-foreground);background:var(--highlight-background);overflow:auto;margin:0}.highlight table{margin:0!important;border:0}.highlight table .code,.highlight table .gutter{padding:0}.highlight table .gutter{padding-right:12px}.highlight figcaption{margin:-5px 0 5px;color:var(--color-gray)}.highlight figcaption:after,.highlight figcaption:before{content:"";display:table}.highlight figcaption:after{clear:both}.highlight figcaption a{float:right}.highlight pre{margin:0;padding:0;background:0 0;white-space:pre}.highlight .line{height:22px}pre .comment,pre .title{color:var(--highlight-comment)}pre .attribute,pre .css .class,pre .css .id,pre .css .pseudo,pre .html .doctype,pre .regexp,pre .ruby .constant,pre .tag,pre .variable,pre .xml .doctype,pre .xml .pi,pre .xml .tag .title{color:var(--highlight-red)}pre .built_in,pre .constant,pre .literal,pre .number,pre .params,pre .preprocessor{color:var(--highlight-orange)}pre .class,pre .css .rules .attribute,pre .ruby .class .title{color:var(--highlight-green)}pre .header,pre .inheritance,pre .ruby .symbol,pre .string,pre .value,pre .xml .cdata{color:var(--highlight-green)}pre .css .hexcolor{color:var(--highlight-aqua)}pre .coffeescript .title,pre .function,pre .javascript .title,pre .perl .sub,pre .python .decorator,pre .python .title,pre .ruby .function .title,pre .ruby .title .keyword{color:var(--highlight-blue)}pre .javascript .function,pre .keyword{color:var(--highlight-purple)}@font-face{font-family:icomoon;src:url(../fonts/icomoon.eot?e8nnma);src:url(../fonts/icomoon.eot?e8nnma#iefix) format('embedded-opentype'),url(../fonts/icomoon.ttf?e8nnma) format('truetype'),url(../fonts/icomoon.woff?e8nnma) format('woff'),url(../fonts/icomoon.svg?e8nnma#icomoon) format('svg');font-weight:400;font-style:normal;font-display:block}i{font-family:icomoon!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-shopify:before{content:"\e905"}.icon-network:before{content:"\e902"}.icon-opencollective:before{content:"\e903"}.icon-search:before{content:"\f002"}.icon-gear:before{content:"\f013"}.icon-pencil:before{content:"\f040"}.icon-chevron-left:before{content:"\f053"}.icon-chevron-right:before{content:"\f054"}.icon-arrow-right:before{content:"\f061"}.icon-twitter:before{content:"\f099"}.icon-github:before{content:"\f09b"}.icon-shield:before{content:"\f132"}.icon-rocket:before{content:"\e9a5"}.icon-typescript:before{content:"\e900"}.icon-chat-bubble-dots:before{content:"\e901"}.searchbox{display:inline-block;position:relative;width:200px;height:32px!important;white-space:nowrap;box-sizing:border-box;visibility:visible!important}.searchbox .algolia-autocomplete{display:block;width:100%;height:100%}.searchbox__wrapper{width:100%;height:100%;z-index:999;position:relative}.searchbox__input{display:inline-block;box-sizing:border-box;transition:box-shadow .4s ease,background .4s ease;border:0;border-radius:16px;box-shadow:inset 0 0 0 1px #ccc;background:#fff!important;padding:0 26px 0 32px;width:100%;height:100%;vertical-align:middle;white-space:normal;font-size:12px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.searchbox__input::-webkit-search-cancel-button,.searchbox__input::-webkit-search-decoration,.searchbox__input::-webkit-search-results-button,.searchbox__input::-webkit-search-results-decoration{display:none}.searchbox__input:hover{box-shadow:inset 0 0 0 1px #b3b3b3}.searchbox__input:active,.searchbox__input:focus{outline:0;box-shadow:inset 0 0 0 1px #aaa;background:#fff}.searchbox__input::-webkit-input-placeholder{color:#aaa}.searchbox__input:-ms-input-placeholder{color:#aaa}.searchbox__input::-ms-input-placeholder{color:#aaa}.searchbox__input::placeholder{color:#aaa}.searchbox__submit{position:absolute;top:0;margin:0;border:0;border-radius:16px 0 0 16px;background-color:rgba(69,142,225,0);padding:0;width:32px;height:100%;vertical-align:middle;text-align:center;font-size:inherit;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;right:inherit;left:0}.searchbox__submit:before{display:inline-block;margin-right:-4px;height:100%;vertical-align:middle;content:""}.searchbox__submit:active,.searchbox__submit:hover{cursor:pointer}.searchbox__submit:focus{outline:0}.searchbox__submit svg{width:14px;height:14px;vertical-align:middle;fill:#6d7e96}.searchbox__reset{display:block;position:absolute;top:8px;right:8px;margin:0;border:0;background:0 0;cursor:pointer;padding:0;font-size:inherit;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;fill:rgba(0,0,0,.5)}.searchbox__reset.hide{display:none}.searchbox__reset:focus{outline:0}.searchbox__reset svg{display:block;margin:4px;width:8px;height:8px}.searchbox__input:valid~.searchbox__reset{display:block;-webkit-animation-name:sbx-reset-in;animation-name:sbx-reset-in;-webkit-animation-duration:.15s;animation-duration:.15s}@-webkit-keyframes sbx-reset-in{0%{-webkit-transform:translate3d(-20%,0,0);transform:translate3d(-20%,0,0);opacity:0}to{-webkit-transform:none;transform:none;opacity:1}}@keyframes sbx-reset-in{0%{-webkit-transform:translate3d(-20%,0,0);transform:translate3d(-20%,0,0);opacity:0}to{-webkit-transform:none;transform:none;opacity:1}}.algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu{right:0!important;left:inherit!important}.algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu:before{right:48px}.algolia-autocomplete.algolia-autocomplete-left .ds-dropdown-menu{left:0!important;right:inherit!important}.algolia-autocomplete.algolia-autocomplete-left .ds-dropdown-menu:before{left:48px}.algolia-autocomplete .ds-dropdown-menu{top:-6px;border-radius:4px;margin:6px 0 0;padding:0;text-align:left;height:auto;position:relative;background:0 0;border:none;z-index:999;max-width:600px;min-width:500px;box-shadow:0 1px 0 0 rgba(0,0,0,.2),0 2px 3px 0 rgba(0,0,0,.1)}.algolia-autocomplete .ds-dropdown-menu:before{display:block;position:absolute;content:"";width:14px;height:14px;background:#fff;z-index:1000;top:-7px;border-top:1px solid #d9d9d9;border-right:1px solid #d9d9d9;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);border-radius:2px}.algolia-autocomplete .ds-dropdown-menu .ds-suggestions{position:relative;z-index:1000;margin-top:8px}.algolia-autocomplete .ds-dropdown-menu .ds-suggestions a:hover{text-decoration:none}.algolia-autocomplete .ds-dropdown-menu .ds-suggestion{cursor:pointer}.algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion.suggestion-layout-simple,.algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion:not(.suggestion-layout-simple) .algolia-docsearch-suggestion--content{background-color:rgba(69,142,225,.05)}.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-]{position:relative;border:1px solid #d9d9d9;background:#fff;border-radius:4px;overflow:auto;padding:0 8px 8px}.algolia-autocomplete .ds-dropdown-menu *{box-sizing:border-box}.algolia-autocomplete .algolia-docsearch-suggestion{display:block;position:relative;padding:0 8px;background:#fff;color:#02060c;overflow:hidden}.algolia-autocomplete .algolia-docsearch-suggestion--highlight{color:#174d8c;background:rgba(143,187,237,.1);padding:.1em .05em}.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl0 .algolia-docsearch-suggestion--highlight,.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl1 .algolia-docsearch-suggestion--highlight,.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{padding:0 0 1px;background:inherit;box-shadow:inset 0 -2px 0 0 rgba(69,142,225,.8);color:inherit}.algolia-autocomplete .algolia-docsearch-suggestion--content{display:block;float:right;width:70%;position:relative;padding:5.33333px 0 5.33333px 10.66667px;cursor:pointer}.algolia-autocomplete .algolia-docsearch-suggestion--content:before{content:"";position:absolute;display:block;top:0;height:100%;width:1px;background:#ddd;left:-1px}.algolia-autocomplete .algolia-docsearch-suggestion--category-header{position:relative;border-bottom:1px solid #ddd;display:none;margin-top:8px;padding:4px 0;font-size:1em;color:#33363d}.algolia-autocomplete .algolia-docsearch-suggestion--wrapper{width:100%;float:left;padding:8px 0 0}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column{float:left;width:30%;text-align:right;position:relative;padding:5.33333px 10.66667px;color:#a4a7ae;font-size:.9em;word-wrap:break-word}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column:before{content:"";position:absolute;display:block;top:0;height:100%;width:1px;background:#ddd;right:0}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-inline{display:none}.algolia-autocomplete .algolia-docsearch-suggestion--title{margin-bottom:4px;color:#02060c;font-size:.9em;font-weight:700}.algolia-autocomplete .algolia-docsearch-suggestion--text{display:block;line-height:1.2em;font-size:.85em;color:#63676d}.algolia-autocomplete .algolia-docsearch-suggestion--no-results{width:100%;padding:8px 0;text-align:center;font-size:1.2em}.algolia-autocomplete .algolia-docsearch-suggestion--no-results:before{display:none}.algolia-autocomplete .algolia-docsearch-suggestion code{padding:1px 5px;font-size:90%;border:none;color:#222;background-color:#ebebeb;border-radius:3px;font-family:Menlo,Monaco,Consolas,Courier New,monospace}.algolia-autocomplete .algolia-docsearch-suggestion code .algolia-docsearch-suggestion--highlight{background:0 0}.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__main .algolia-docsearch-suggestion--category-header,.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__secondary{display:block}@media (min-width:768px){.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column{display:block}}@media (max-width:768px){.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column{display:inline-block;width:auto;float:left;padding:0;color:#02060c;font-size:.9em;font-weight:700;text-align:left;opacity:.5}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column:before{display:none}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column:after{content:"|"}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--content{display:inline-block;width:auto;text-align:left;float:left;padding:0}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--content:before{display:none}}.algolia-autocomplete .suggestion-layout-simple.algolia-docsearch-suggestion{border-bottom:1px solid #eee;padding:8px;margin:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--content{width:100%;padding:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--content:before{display:none}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header{margin:0;padding:0;display:block;width:100%;border:none}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl0,.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl1{opacity:.6;font-size:.85em}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl1:before{background-image:url('data:image/svg+xml;utf8,');content:"";width:10px;height:10px;display:inline-block}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--wrapper{width:100%;float:left;margin:0;padding:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--duplicate-content,.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--subcategory-inline{display:none!important}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--title{margin:0;color:#458ee1;font-size:.9em;font-weight:400}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--title:before{content:"#";font-weight:700;color:#458ee1;display:inline-block}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--text{margin:4px 0 0;display:block;line-height:1.4em;padding:5.33333px 8px;background:#f8f8f8;font-size:.85em;opacity:.8}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{color:#3f4145;font-weight:700;box-shadow:none}.algolia-autocomplete .algolia-docsearch-footer{width:134px;height:20px;z-index:2000;margin-top:10.66667px;float:right;font-size:0;line-height:0}.algolia-autocomplete .algolia-docsearch-footer--logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='168' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M78.988.938h16.594a2.968 2.968 0 0 1 2.966 2.966V20.5a2.967 2.967 0 0 1-2.966 2.964H78.988a2.967 2.967 0 0 1-2.966-2.964V3.897A2.961 2.961 0 0 1 78.988.938zm41.937 17.866c-4.386.02-4.386-3.54-4.386-4.106l-.007-13.336 2.675-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-10.846-2.18c.821 0 1.43-.047 1.855-.129v-2.719a6.334 6.334 0 0 0-1.574-.199 5.7 5.7 0 0 0-.897.069 2.699 2.699 0 0 0-.814.24c-.24.116-.439.28-.582.491-.15.212-.219.335-.219.656 0 .628.219.991.616 1.23s.938.362 1.615.362zm-.233-9.7c.883 0 1.629.109 2.231.328.602.218 1.088.525 1.444.915.363.396.609.922.76 1.483.157.56.232 1.175.232 1.85v6.874a32.5 32.5 0 0 1-1.868.314c-.834.123-1.772.185-2.813.185-.69 0-1.327-.069-1.895-.198a4.001 4.001 0 0 1-1.471-.636 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.803 0-.656.13-1.073.384-1.525a3.24 3.24 0 0 1 1.047-1.106c.445-.287.95-.492 1.532-.615a8.8 8.8 0 0 1 1.82-.185 8.404 8.404 0 0 1 1.972.24v-.438c0-.307-.035-.6-.11-.874a1.88 1.88 0 0 0-.384-.73 1.784 1.784 0 0 0-.724-.493 3.164 3.164 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.735 7.735 0 0 0-1.26.307l-.321-2.192c.335-.117.834-.233 1.478-.349a10.98 10.98 0 0 1 2.073-.178zm52.842 9.626c.822 0 1.43-.048 1.854-.13V13.7a6.347 6.347 0 0 0-1.574-.199c-.294 0-.595.021-.896.069a2.7 2.7 0 0 0-.814.24 1.46 1.46 0 0 0-.582.491c-.15.212-.218.335-.218.656 0 .628.218.991.615 1.23.404.245.938.362 1.615.362zm-.226-9.694c.883 0 1.629.108 2.231.327.602.219 1.088.526 1.444.915.355.39.609.923.759 1.483a6.8 6.8 0 0 1 .233 1.852v6.873c-.41.088-1.034.19-1.868.314-.834.123-1.772.184-2.813.184-.69 0-1.327-.068-1.895-.198a4.001 4.001 0 0 1-1.471-.635 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.804 0-.656.13-1.073.384-1.524.26-.45.608-.82 1.047-1.107.445-.286.95-.491 1.532-.614a8.803 8.803 0 0 1 2.751-.13c.329.034.671.096 1.04.185v-.437a3.3 3.3 0 0 0-.109-.875 1.873 1.873 0 0 0-.384-.731 1.784 1.784 0 0 0-.724-.492 3.165 3.165 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.75 7.75 0 0 0-1.26.307l-.321-2.193c.335-.116.834-.232 1.478-.348a11.633 11.633 0 0 1 2.073-.177zm-8.034-1.271a1.626 1.626 0 0 1-1.628-1.62c0-.895.725-1.62 1.628-1.62.904 0 1.63.725 1.63 1.62 0 .895-.733 1.62-1.63 1.62zm1.348 13.22h-2.689V7.27l2.69-.423v11.956zm-4.714 0c-4.386.02-4.386-3.54-4.386-4.107l-.008-13.336 2.676-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-8.698-5.903c0-1.156-.253-2.119-.746-2.788-.493-.677-1.183-1.01-2.067-1.01-.882 0-1.574.333-2.065 1.01-.493.676-.733 1.632-.733 2.788 0 1.168.246 1.953.74 2.63.492.683 1.183 1.018 2.066 1.018.882 0 1.574-.342 2.067-1.019.492-.683.738-1.46.738-2.63zm2.737-.007c0 .902-.13 1.584-.397 2.33a5.52 5.52 0 0 1-1.128 1.906 4.986 4.986 0 0 1-1.752 1.223c-.685.286-1.739.45-2.265.45-.528-.006-1.574-.157-2.252-.45a5.096 5.096 0 0 1-1.744-1.223c-.487-.527-.863-1.162-1.137-1.906a6.345 6.345 0 0 1-.41-2.33c0-.902.123-1.77.397-2.508a5.554 5.554 0 0 1 1.15-1.892 5.133 5.133 0 0 1 1.75-1.216c.679-.287 1.425-.423 2.232-.423.808 0 1.553.142 2.237.423a4.88 4.88 0 0 1 1.753 1.216 5.644 5.644 0 0 1 1.135 1.892c.287.738.431 1.606.431 2.508zm-20.138 0c0 1.12.246 2.363.738 2.882.493.52 1.13.78 1.91.78.424 0 .828-.062 1.204-.178.377-.116.677-.253.917-.417V9.33a10.476 10.476 0 0 0-1.766-.226c-.971-.028-1.71.37-2.23 1.004-.513.636-.773 1.75-.773 2.788zm7.438 5.274c0 1.824-.466 3.156-1.404 4.004-.936.846-2.367 1.27-4.296 1.27-.705 0-2.17-.137-3.34-.396l.431-2.118c.98.205 2.272.26 2.95.26 1.074 0 1.84-.219 2.299-.656.459-.437.684-1.086.684-1.948v-.437a8.07 8.07 0 0 1-1.047.397c-.43.13-.93.198-1.492.198-.739 0-1.41-.116-2.018-.349a4.206 4.206 0 0 1-1.567-1.025c-.431-.45-.774-1.017-1.013-1.694-.24-.677-.363-1.885-.363-2.773 0-.834.13-1.88.384-2.577.26-.696.629-1.298 1.129-1.796.493-.498 1.095-.881 1.8-1.162a6.605 6.605 0 0 1 2.428-.457c.87 0 1.67.109 2.45.24.78.129 1.444.265 1.985.415V18.17z' fill='%235468FF'/%3E%3Cpath d='M6.972 6.677v1.627c-.712-.446-1.52-.67-2.425-.67-.585 0-1.045.13-1.38.391a1.24 1.24 0 0 0-.502 1.03c0 .425.164.765.494 1.02.33.256.835.532 1.516.83.447.192.795.356 1.045.495.25.138.537.332.862.582.324.25.563.548.718.894.154.345.23.741.23 1.188 0 .947-.334 1.691-1.004 2.234-.67.542-1.537.814-2.601.814-1.18 0-2.16-.229-2.936-.686v-1.708c.84.628 1.814.942 2.92.942.585 0 1.048-.136 1.388-.407.34-.271.51-.646.51-1.125 0-.287-.1-.55-.302-.79-.203-.24-.42-.42-.655-.542-.234-.123-.585-.29-1.053-.503a61.27 61.27 0 0 1-.582-.271 13.67 13.67 0 0 1-.55-.287 4.275 4.275 0 0 1-.567-.351 6.92 6.92 0 0 1-.455-.4c-.18-.17-.31-.34-.39-.51-.08-.17-.155-.37-.224-.598a2.553 2.553 0 0 1-.104-.742c0-.915.333-1.638.998-2.17.664-.532 1.523-.798 2.576-.798.968 0 1.793.17 2.473.51zm7.468 5.696v-.287c-.022-.607-.187-1.088-.495-1.444-.309-.357-.75-.535-1.324-.535-.532 0-.99.194-1.373.583-.382.388-.622.949-.717 1.683h3.909zm1.005 2.792v1.404c-.596.34-1.383.51-2.362.51-1.255 0-2.255-.377-3-1.132-.744-.755-1.116-1.744-1.116-2.968 0-1.297.34-2.316 1.021-3.055.68-.74 1.548-1.11 2.6-1.11 1.033 0 1.852.323 2.458.966.606.644.91 1.572.91 2.784 0 .33-.033.676-.096 1.038h-5.314c.107.702.405 1.239.894 1.611.49.372 1.106.558 1.85.558.862 0 1.58-.202 2.155-.606zm6.605-1.77h-1.212c-.596 0-1.045.116-1.349.35-.303.234-.454.532-.454.894 0 .372.117.664.35.877.235.213.575.32 1.022.32.51 0 .912-.142 1.204-.424.293-.281.44-.651.44-1.108v-.91zm-4.068-2.554V9.325c.627-.361 1.457-.542 2.489-.542 2.116 0 3.175 1.026 3.175 3.08V17h-1.548v-.957c-.415.68-1.143 1.02-2.186 1.02-.766 0-1.38-.22-1.843-.661-.462-.442-.694-1.003-.694-1.684 0-.776.293-1.38.878-1.81.585-.431 1.404-.647 2.457-.647h1.34V11.8c0-.554-.133-.971-.399-1.253-.266-.282-.707-.423-1.324-.423a4.07 4.07 0 0 0-2.345.718zm9.333-1.93v1.42c.394-1 1.101-1.5 2.123-1.5.148 0 .313.016.494.048v1.531a1.885 1.885 0 0 0-.75-.143c-.542 0-.989.24-1.34.718-.351.479-.527 1.048-.527 1.707V17h-1.563V8.91h1.563zm5.01 4.084c.022.82.272 1.492.75 2.019.479.526 1.15.79 2.01.79.639 0 1.235-.176 1.788-.527v1.404c-.521.319-1.186.479-1.995.479-1.265 0-2.276-.4-3.031-1.197-.755-.798-1.133-1.792-1.133-2.984 0-1.16.38-2.151 1.14-2.975.761-.825 1.79-1.237 3.088-1.237.702 0 1.346.149 1.93.447v1.436a3.242 3.242 0 0 0-1.77-.495c-.84 0-1.513.266-2.019.798-.505.532-.758 1.213-.758 2.042zM40.24 5.72v4.579c.458-1 1.293-1.5 2.505-1.5.787 0 1.42.245 1.899.734.479.49.718 1.17.718 2.042V17h-1.564v-5.106c0-.553-.14-.98-.422-1.284-.282-.303-.652-.455-1.11-.455-.531 0-1.002.202-1.411.606-.41.405-.615 1.022-.615 1.851V17h-1.563V5.72h1.563zm14.966 10.02c.596 0 1.096-.253 1.5-.758.404-.506.606-1.157.606-1.955 0-.915-.202-1.62-.606-2.114-.404-.495-.92-.742-1.548-.742-.553 0-1.05.224-1.491.67-.442.447-.662 1.133-.662 2.058 0 .958.212 1.67.638 2.138.425.469.946.703 1.563.703zM53.004 5.72v4.42c.574-.894 1.388-1.341 2.44-1.341 1.022 0 1.857.383 2.506 1.149.649.766.973 1.781.973 3.047 0 1.138-.309 2.109-.925 2.912-.617.803-1.463 1.205-2.537 1.205-1.075 0-1.894-.447-2.457-1.34V17h-1.58V5.72h1.58zm9.908 11.104l-3.223-7.913h1.739l1.005 2.632 1.26 3.415c.096-.32.48-1.458 1.15-3.415l.909-2.632h1.66l-2.92 7.866c-.777 2.074-1.963 3.11-3.559 3.11a2.92 2.92 0 0 1-.734-.079v-1.34c.17.042.351.064.543.064 1.032 0 1.755-.57 2.17-1.708z' fill='%235D6494'/%3E%3Cpath d='M89.632 5.967v-.772a.978.978 0 0 0-.978-.977h-2.28a.978.978 0 0 0-.978.977v.793c0 .088.082.15.171.13a7.127 7.127 0 0 1 1.984-.28c.65 0 1.295.088 1.917.259.082.02.164-.04.164-.13m-6.248 1.01l-.39-.389a.977.977 0 0 0-1.382 0l-.465.465a.973.973 0 0 0 0 1.38l.383.383c.062.061.15.047.205-.014.226-.307.472-.601.746-.874.281-.28.568-.526.883-.751.068-.042.075-.137.02-.2m4.16 2.453v3.341c0 .096.104.165.192.117l2.97-1.537c.068-.034.089-.117.055-.184a3.695 3.695 0 0 0-3.08-1.866c-.068 0-.136.054-.136.13m0 8.048a4.489 4.489 0 0 1-4.49-4.482 4.488 4.488 0 0 1 4.49-4.482 4.488 4.488 0 0 1 4.489 4.482 4.484 4.484 0 0 1-4.49 4.482m0-10.85a6.363 6.363 0 1 0 0 12.729 6.37 6.37 0 0 0 6.372-6.368 6.358 6.358 0 0 0-6.371-6.36' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat;background-position:50%;background-size:100%;overflow:hidden;text-indent:-9000px;padding:0!important;width:100%;height:100%;display:block} \ No newline at end of file diff --git a/filters/abs.html b/filters/abs.html index 54f4c3386..a7e9e7554 100644 --- a/filters/abs.html +++ b/filters/abs.html @@ -116,7 +116,7 @@ diff --git a/filters/append.html b/filters/append.html index dab2bcffc..bb7de23e5 100644 --- a/filters/append.html +++ b/filters/append.html @@ -110,7 +110,7 @@ diff --git a/filters/array_to_sentence_string.html b/filters/array_to_sentence_string.html index 6a4a561c1..5eb1f08fb 100644 --- a/filters/array_to_sentence_string.html +++ b/filters/array_to_sentence_string.html @@ -109,7 +109,7 @@ diff --git a/filters/at_least.html b/filters/at_least.html index 8199d391f..4a9f7c3ec 100644 --- a/filters/at_least.html +++ b/filters/at_least.html @@ -109,7 +109,7 @@ diff --git a/filters/at_most.html b/filters/at_most.html index a7c7c8591..febd97e89 100644 --- a/filters/at_most.html +++ b/filters/at_most.html @@ -109,7 +109,7 @@ diff --git a/filters/capitalize.html b/filters/capitalize.html index 5e36bd054..b5cc84847 100644 --- a/filters/capitalize.html +++ b/filters/capitalize.html @@ -110,7 +110,7 @@ diff --git a/filters/ceil.html b/filters/ceil.html index 8576a7863..b3db572bb 100644 --- a/filters/ceil.html +++ b/filters/ceil.html @@ -122,7 +122,7 @@ diff --git a/filters/cgi_escape.html b/filters/cgi_escape.html index 0f514995b..cd3170dae 100644 --- a/filters/cgi_escape.html +++ b/filters/cgi_escape.html @@ -103,7 +103,7 @@ diff --git a/filters/compact.html b/filters/compact.html index 55b403a77..0cbda80fb 100644 --- a/filters/compact.html +++ b/filters/compact.html @@ -111,7 +111,7 @@ diff --git a/filters/concat.html b/filters/concat.html index 7e668ebf7..6329b83b8 100644 --- a/filters/concat.html +++ b/filters/concat.html @@ -110,7 +110,7 @@ diff --git a/filters/date.html b/filters/date.html index 064b32157..01151fcff 100644 --- a/filters/date.html +++ b/filters/date.html @@ -149,7 +149,7 @@ diff --git a/filters/date_to_long_string.html b/filters/date_to_long_string.html index 055a1b735..99c20765a 100644 --- a/filters/date_to_long_string.html +++ b/filters/date_to_long_string.html @@ -111,7 +111,7 @@ diff --git a/filters/date_to_rfc822.html b/filters/date_to_rfc822.html index 5bb7200f2..2ad5c4597 100644 --- a/filters/date_to_rfc822.html +++ b/filters/date_to_rfc822.html @@ -105,7 +105,7 @@ diff --git a/filters/date_to_string.html b/filters/date_to_string.html index 10566708d..5025b49b1 100644 --- a/filters/date_to_string.html +++ b/filters/date_to_string.html @@ -111,7 +111,7 @@ diff --git a/filters/date_to_xmlschema.html b/filters/date_to_xmlschema.html index e5d094666..799d79193 100644 --- a/filters/date_to_xmlschema.html +++ b/filters/date_to_xmlschema.html @@ -105,7 +105,7 @@ diff --git a/filters/default.html b/filters/default.html index c87593583..2ab43e4e4 100644 --- a/filters/default.html +++ b/filters/default.html @@ -128,7 +128,7 @@ diff --git a/filters/divided_by.html b/filters/divided_by.html index fb3495eda..5f7fb0781 100644 --- a/filters/divided_by.html +++ b/filters/divided_by.html @@ -120,7 +120,7 @@ diff --git a/filters/downcase.html b/filters/downcase.html index 41209e2e6..ce15956eb 100644 --- a/filters/downcase.html +++ b/filters/downcase.html @@ -109,7 +109,7 @@ diff --git a/filters/escape.html b/filters/escape.html index 7e518a60a..68d268268 100644 --- a/filters/escape.html +++ b/filters/escape.html @@ -111,7 +111,7 @@ Have you read 'James & the Giant Peach'? diff --git a/filters/escape_once.html b/filters/escape_once.html index 5fc9476bc..8a670d4e8 100644 --- a/filters/escape_once.html +++ b/filters/escape_once.html @@ -115,7 +115,7 @@ diff --git a/filters/find.html b/filters/find.html index 325e7af6d..3e7114d66 100644 --- a/filters/find.html +++ b/filters/find.html @@ -105,7 +105,7 @@ diff --git a/filters/find_exp.html b/filters/find_exp.html index e3b9ce0f4..eb99eabc7 100644 --- a/filters/find_exp.html +++ b/filters/find_exp.html @@ -105,7 +105,7 @@ diff --git a/filters/first.html b/filters/first.html index ac49a1742..9a9d30c63 100644 --- a/filters/first.html +++ b/filters/first.html @@ -112,7 +112,7 @@ diff --git a/filters/floor.html b/filters/floor.html index b881926d1..6a962a809 100644 --- a/filters/floor.html +++ b/filters/floor.html @@ -122,7 +122,7 @@ diff --git a/filters/group_by.html b/filters/group_by.html index d33b8fa9d..5365e8bbd 100644 --- a/filters/group_by.html +++ b/filters/group_by.html @@ -105,7 +105,7 @@ diff --git a/filters/group_by_exp.html b/filters/group_by_exp.html index 265c8e6ca..dd8ce9c46 100644 --- a/filters/group_by_exp.html +++ b/filters/group_by_exp.html @@ -105,7 +105,7 @@ diff --git a/filters/inspect.html b/filters/inspect.html index faf7cae98..8d621115d 100644 --- a/filters/inspect.html +++ b/filters/inspect.html @@ -112,7 +112,7 @@ diff --git a/filters/join.html b/filters/join.html index 8b353050c..3708b1277 100644 --- a/filters/join.html +++ b/filters/join.html @@ -103,7 +103,7 @@ diff --git a/filters/json.html b/filters/json.html index 167d53754..37c3c445a 100644 --- a/filters/json.html +++ b/filters/json.html @@ -112,7 +112,7 @@ diff --git a/filters/jsonify.html b/filters/jsonify.html index 3b5487cc8..4a5e9f4f4 100644 --- a/filters/jsonify.html +++ b/filters/jsonify.html @@ -98,7 +98,7 @@ diff --git a/filters/last.html b/filters/last.html index e85292d07..95cde6d3d 100644 --- a/filters/last.html +++ b/filters/last.html @@ -112,7 +112,7 @@ diff --git a/filters/lstrip.html b/filters/lstrip.html index 0a44b7c30..b50d93b9a 100644 --- a/filters/lstrip.html +++ b/filters/lstrip.html @@ -103,7 +103,7 @@ diff --git a/filters/map.html b/filters/map.html index 01891657b..47ff0a530 100644 --- a/filters/map.html +++ b/filters/map.html @@ -104,7 +104,7 @@ diff --git a/filters/minus.html b/filters/minus.html index 7d3749038..4cd045777 100644 --- a/filters/minus.html +++ b/filters/minus.html @@ -115,7 +115,7 @@ diff --git a/filters/modulo.html b/filters/modulo.html index fbe580885..cffb54750 100644 --- a/filters/modulo.html +++ b/filters/modulo.html @@ -115,7 +115,7 @@ diff --git a/filters/newline_to_br.html b/filters/newline_to_br.html index d4d809243..f46518df4 100644 --- a/filters/newline_to_br.html +++ b/filters/newline_to_br.html @@ -103,7 +103,7 @@ diff --git a/filters/normalize_whitespace.html b/filters/normalize_whitespace.html index 6610be5bc..aa0c919d4 100644 --- a/filters/normalize_whitespace.html +++ b/filters/normalize_whitespace.html @@ -103,7 +103,7 @@ diff --git a/filters/number_of_words.html b/filters/number_of_words.html index 38c9c9069..8cd0e52b7 100644 --- a/filters/number_of_words.html +++ b/filters/number_of_words.html @@ -125,7 +125,7 @@ diff --git a/filters/overview.html b/filters/overview.html index 35c5b5c0a..1ee223e64 100644 --- a/filters/overview.html +++ b/filters/overview.html @@ -129,7 +129,7 @@ diff --git a/filters/plus.html b/filters/plus.html index 3f94c81f0..773ba2634 100644 --- a/filters/plus.html +++ b/filters/plus.html @@ -115,7 +115,7 @@ diff --git a/filters/pop.html b/filters/pop.html index 105b348d9..96cbe6cf7 100644 --- a/filters/pop.html +++ b/filters/pop.html @@ -103,7 +103,7 @@ diff --git a/filters/prepend.html b/filters/prepend.html index f0a190ce2..c39f1931c 100644 --- a/filters/prepend.html +++ b/filters/prepend.html @@ -110,7 +110,7 @@ diff --git a/filters/push.html b/filters/push.html index a9dbbfae5..7e8317cc2 100644 --- a/filters/push.html +++ b/filters/push.html @@ -103,7 +103,7 @@ diff --git a/filters/raw.html b/filters/raw.html index 7194ecc32..aa7ffa50e 100644 --- a/filters/raw.html +++ b/filters/raw.html @@ -124,7 +124,7 @@ diff --git a/filters/remove.html b/filters/remove.html index d8bfd8cd5..632492c37 100644 --- a/filters/remove.html +++ b/filters/remove.html @@ -103,7 +103,7 @@ diff --git a/filters/remove_first.html b/filters/remove_first.html index 9c371443e..00f016234 100644 --- a/filters/remove_first.html +++ b/filters/remove_first.html @@ -103,7 +103,7 @@ diff --git a/filters/remove_last.html b/filters/remove_last.html index b61c48599..ae12fa23a 100644 --- a/filters/remove_last.html +++ b/filters/remove_last.html @@ -103,7 +103,7 @@ diff --git a/filters/replace.html b/filters/replace.html index 3cc27f581..9056a2028 100644 --- a/filters/replace.html +++ b/filters/replace.html @@ -103,7 +103,7 @@ diff --git a/filters/replace_first.html b/filters/replace_first.html index 3c6ecd64d..d355db4a4 100644 --- a/filters/replace_first.html +++ b/filters/replace_first.html @@ -103,7 +103,7 @@ diff --git a/filters/replace_last.html b/filters/replace_last.html index a149db4ce..fc4af215e 100644 --- a/filters/replace_last.html +++ b/filters/replace_last.html @@ -103,7 +103,7 @@ diff --git a/filters/reverse.html b/filters/reverse.html index 51b385c7c..1cdbbc4d8 100644 --- a/filters/reverse.html +++ b/filters/reverse.html @@ -110,7 +110,7 @@ diff --git a/filters/round.html b/filters/round.html index 761856e4d..59ecdabdd 100644 --- a/filters/round.html +++ b/filters/round.html @@ -115,7 +115,7 @@ diff --git a/filters/rstrip.html b/filters/rstrip.html index 9919ea07a..73df9a58d 100644 --- a/filters/rstrip.html +++ b/filters/rstrip.html @@ -103,7 +103,7 @@ diff --git a/filters/shift.html b/filters/shift.html index c3ec6cf5c..0fb08eb0f 100644 --- a/filters/shift.html +++ b/filters/shift.html @@ -103,7 +103,7 @@ diff --git a/filters/size.html b/filters/size.html index b6cca3eee..a5efacf24 100644 --- a/filters/size.html +++ b/filters/size.html @@ -112,7 +112,7 @@ diff --git a/filters/slice.html b/filters/slice.html index 7fc10587d..e07cd31f7 100644 --- a/filters/slice.html +++ b/filters/slice.html @@ -123,7 +123,7 @@ diff --git a/filters/slugify.html b/filters/slugify.html index 39422dd63..08aa29676 100644 --- a/filters/slugify.html +++ b/filters/slugify.html @@ -134,7 +134,7 @@ diff --git a/filters/sort.html b/filters/sort.html index fded4272a..169c4c92b 100644 --- a/filters/sort.html +++ b/filters/sort.html @@ -106,7 +106,7 @@ diff --git a/filters/sort_natural.html b/filters/sort_natural.html index d5dc99395..78f53066b 100644 --- a/filters/sort_natural.html +++ b/filters/sort_natural.html @@ -106,7 +106,7 @@ diff --git a/filters/split.html b/filters/split.html index 5a5798ae1..ebfaf5075 100644 --- a/filters/split.html +++ b/filters/split.html @@ -103,7 +103,7 @@ diff --git a/filters/strip.html b/filters/strip.html index 9e37c8c2e..26dfd7d13 100644 --- a/filters/strip.html +++ b/filters/strip.html @@ -103,7 +103,7 @@ diff --git a/filters/strip_html.html b/filters/strip_html.html index e265393d1..167e49ad7 100644 --- a/filters/strip_html.html +++ b/filters/strip_html.html @@ -103,7 +103,7 @@ diff --git a/filters/strip_newlines.html b/filters/strip_newlines.html index 446a2e753..f1432a11e 100644 --- a/filters/strip_newlines.html +++ b/filters/strip_newlines.html @@ -103,7 +103,7 @@ diff --git a/filters/sum.html b/filters/sum.html index f2fb1f0db..995849733 100644 --- a/filters/sum.html +++ b/filters/sum.html @@ -104,7 +104,7 @@ diff --git a/filters/times.html b/filters/times.html index c86e9a784..c3124b956 100644 --- a/filters/times.html +++ b/filters/times.html @@ -115,7 +115,7 @@ diff --git a/filters/to_integer.html b/filters/to_integer.html index 8f4dfd874..4b95af9fa 100644 --- a/filters/to_integer.html +++ b/filters/to_integer.html @@ -103,7 +103,7 @@ diff --git a/filters/truncate.html b/filters/truncate.html index 16a528aee..697f0e077 100644 --- a/filters/truncate.html +++ b/filters/truncate.html @@ -118,7 +118,7 @@ diff --git a/filters/truncatewords.html b/filters/truncatewords.html index f17a2bfd1..3f3217482 100644 --- a/filters/truncatewords.html +++ b/filters/truncatewords.html @@ -117,7 +117,7 @@ diff --git a/filters/uniq.html b/filters/uniq.html index 127610601..1f1189761 100644 --- a/filters/uniq.html +++ b/filters/uniq.html @@ -103,7 +103,7 @@ diff --git a/filters/unshift.html b/filters/unshift.html index 3b2422650..c0b7930a8 100644 --- a/filters/unshift.html +++ b/filters/unshift.html @@ -103,7 +103,7 @@ diff --git a/filters/upcase.html b/filters/upcase.html index c8a3fa7ee..a8d24cbaf 100644 --- a/filters/upcase.html +++ b/filters/upcase.html @@ -109,7 +109,7 @@ diff --git a/filters/uri_escape.html b/filters/uri_escape.html index e3e42ff8d..0c906b80e 100644 --- a/filters/uri_escape.html +++ b/filters/uri_escape.html @@ -104,7 +104,7 @@ diff --git a/filters/url_decode.html b/filters/url_decode.html index 38c7f3822..8db60bde9 100644 --- a/filters/url_decode.html +++ b/filters/url_decode.html @@ -103,7 +103,7 @@ diff --git a/filters/url_encode.html b/filters/url_encode.html index e0f7033b9..5d2cfeb10 100644 --- a/filters/url_encode.html +++ b/filters/url_encode.html @@ -109,7 +109,7 @@ diff --git a/filters/where.html b/filters/where.html index b5624e187..71887731f 100644 --- a/filters/where.html +++ b/filters/where.html @@ -128,7 +128,7 @@ diff --git a/filters/where_exp.html b/filters/where_exp.html index 3277e4d88..1292072e5 100644 --- a/filters/where_exp.html +++ b/filters/where_exp.html @@ -104,7 +104,7 @@ diff --git a/filters/xml_escape.html b/filters/xml_escape.html index d5724ca8d..4afe1703e 100644 --- a/filters/xml_escape.html +++ b/filters/xml_escape.html @@ -103,7 +103,7 @@ diff --git a/sitemap.xml b/sitemap.xml index 0645873ce..d332ba483 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -4,1701 +4,1701 @@ https://liquidjs.com/tutorials/changelog - 2024-08-18T05:45:11.071Z + 2024-08-19T19:37:03.734Z https://liquidjs.com/zh-cn/tutorials/changelog - 2024-08-18T05:45:11.071Z + 2024-08-19T19:37:03.734Z https://liquidjs.com/zh-cn/ - 2024-08-18T05:44:37.723Z + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/manifest.json - 2024-08-18T05:44:37.723Z + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/playground - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tags/assign - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tags/capture - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tags/case - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tags/comment - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tags/cycle - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tags/decrement - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tags/echo - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tags/for - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tags/if - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tags/include - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tags/increment - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tags/inline_comment - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tags/layout - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tags/liquid - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tags/overview - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tags/raw - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tags/render - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tags/tablerow - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tags/unless - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tutorials/access-scope-in-filters - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tutorials/caching - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tutorials/contribution-guidelines - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tutorials/differences - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tutorials/dos - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tutorials/drops - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tutorials/escaping - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tutorials/intro-to-liquid - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tutorials/migrate-to-9 - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tutorials/operators - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tutorials/options - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tutorials/parse-parameters - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tutorials/partials-and-layouts - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tutorials/plugins - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tutorials/register-filters-tags - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tutorials/render-file - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tutorials/render-tag-content - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tutorials/setup - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tutorials/sync-and-async - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tutorials/truthy-and-falsy - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tutorials/use-in-expressjs - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/zh-cn/tutorials/whitespace-control - - 2024-08-18T05:44:37.723Z - - - - - https://liquidjs.com/tags/for - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tags/if - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tags/include - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tags/inline_comment - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tags/increment - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tags/layout - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tags/liquid - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tags/overview - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tags/render - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tags/tablerow - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tags/raw - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tags/unless - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tutorials/access-scope-in-filters - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tutorials/caching - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tutorials/contribution-guidelines - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tutorials/differences - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tutorials/dos - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tutorials/drops - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tutorials/escaping - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tutorials/intro-to-liquid - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tutorials/operators - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tutorials/migrate-to-9 - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tutorials/options - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tutorials/parse-parameters - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tutorials/partials-and-layouts - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tutorials/plugins - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tutorials/render-file - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tutorials/register-filters-tags - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tutorials/render-tag-content - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tutorials/setup - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tutorials/sync-and-async - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tutorials/truthy-and-falsy - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tutorials/use-in-expressjs - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/tutorials/whitespace-control - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/abs - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/append - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/at_least - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/array_to_sentence_string - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/at_most - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/capitalize - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/ceil - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/cgi_escape - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/compact - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/concat - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/date - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/date_to_long_string - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/date_to_rfc822 - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/date_to_string - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/date_to_xmlschema - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/default - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/divided_by - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/downcase - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/escape - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/escape_once - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/find - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/find_exp - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/first - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/floor - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/group_by - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/group_by_exp - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/inspect - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/join - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/json - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/jsonify - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/lstrip - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/last - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/map - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/minus - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/newline_to_br - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/modulo - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/normalize_whitespace - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/number_of_words - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/overview - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/plus - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/pop - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/prepend - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/push - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/remove - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/raw - - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/remove_first - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/remove_last - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/replace - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/replace_first - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/replace_last - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/reverse - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/round - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/rstrip - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/shift - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/size - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/slice - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/slugify - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/sort - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/sort_natural - - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/split - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/filters/sort_natural + + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/strip - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/strip_newlines - - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/strip_html - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/filters/strip_newlines + + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/times - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/to_integer - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/truncate - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/truncatewords - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/uniq - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/unshift - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/uri_escape - - 2024-08-18T05:44:37.719Z - - - - - https://liquidjs.com/zh-cn/filters/url_decode - - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/upcase - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/filters/uri_escape + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/filters/url_decode + + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/url_encode - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/where - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/where_exp - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z https://liquidjs.com/zh-cn/filters/xml_escape - 2024-08-18T05:44:37.719Z + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tags/assign + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tags/capture + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tags/case + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tags/comment + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tags/cycle + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tags/decrement + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tags/echo + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tags/for + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tags/if + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tags/include + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tags/increment + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tags/inline_comment + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tags/layout + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tags/liquid + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tags/overview + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tags/raw + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tags/render + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tags/tablerow + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tags/unless + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tutorials/access-scope-in-filters + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tutorials/caching + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tutorials/contribution-guidelines + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tutorials/differences + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tutorials/dos + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tutorials/drops + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tutorials/escaping + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tutorials/intro-to-liquid + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tutorials/migrate-to-9 + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tutorials/operators + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tutorials/options + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tutorials/parse-parameters + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tutorials/partials-and-layouts + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tutorials/plugins + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tutorials/register-filters-tags + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tutorials/render-file + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tutorials/render-tag-content + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tutorials/setup + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tutorials/sync-and-async + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tutorials/use-in-expressjs + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tutorials/truthy-and-falsy + + 2024-08-19T19:36:26.430Z + + + + + https://liquidjs.com/zh-cn/tutorials/whitespace-control + + 2024-08-19T19:36:26.430Z https://liquidjs.com/ - 2024-08-18T05:44:37.715Z + 2024-08-19T19:36:26.426Z https://liquidjs.com/manifest.json - 2024-08-18T05:44:37.715Z + 2024-08-19T19:36:26.426Z https://liquidjs.com/playground - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/date - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/date_to_long_string - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/date_to_rfc822 - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/date_to_string - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/date_to_xmlschema - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/default - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/divided_by - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/downcase - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/escape - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/escape_once - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/find - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/find_exp - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/first - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/floor - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/group_by - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/group_by_exp - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/inspect - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/join - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/json - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/jsonify - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/last - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/lstrip - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/map - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/minus - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/newline_to_br - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/modulo - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/number_of_words - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/normalize_whitespace - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/overview - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/plus - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/pop - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/prepend - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/push - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/raw - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/remove - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/remove_first - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/remove_last - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/replace - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/replace_first - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/replace_last - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/reverse - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/round - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/rstrip - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/shift - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/size - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/slice - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/slugify - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/sort - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/sort_natural - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/split - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/strip - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/strip_html - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/strip_newlines - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/sum - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/times - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/to_integer - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/uniq - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/truncate - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/unshift - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/upcase - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/truncatewords - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/uri_escape - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/url_decode - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/url_encode - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/where - - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/where_exp - - 2024-08-18T05:44:37.715Z + 2024-08-19T19:36:26.426Z https://liquidjs.com/tags/assign - 2024-08-18T05:44:37.715Z - - - - - https://liquidjs.com/filters/xml_escape - - 2024-08-18T05:44:37.715Z + 2024-08-19T19:36:26.426Z https://liquidjs.com/tags/capture - 2024-08-18T05:44:37.715Z + 2024-08-19T19:36:26.426Z https://liquidjs.com/tags/case - 2024-08-18T05:44:37.715Z + 2024-08-19T19:36:26.426Z https://liquidjs.com/tags/comment - 2024-08-18T05:44:37.715Z + 2024-08-19T19:36:26.426Z https://liquidjs.com/tags/cycle - 2024-08-18T05:44:37.715Z + 2024-08-19T19:36:26.426Z https://liquidjs.com/tags/decrement - 2024-08-18T05:44:37.715Z + 2024-08-19T19:36:26.426Z https://liquidjs.com/tags/echo - 2024-08-18T05:44:37.715Z + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tags/for + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tags/if + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tags/include + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tags/increment + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tags/inline_comment + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tags/layout + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tags/liquid + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tags/overview + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tags/raw + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tags/render + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tags/tablerow + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tags/unless + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tutorials/access-scope-in-filters + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tutorials/caching + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tutorials/contribution-guidelines + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tutorials/differences + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tutorials/dos + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tutorials/drops + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tutorials/escaping + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tutorials/intro-to-liquid + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tutorials/migrate-to-9 + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tutorials/operators + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tutorials/options + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tutorials/parse-parameters + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tutorials/partials-and-layouts + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tutorials/plugins + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tutorials/register-filters-tags + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tutorials/render-file + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tutorials/render-tag-content + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tutorials/setup + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tutorials/sync-and-async + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tutorials/truthy-and-falsy + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tutorials/use-in-expressjs + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/tutorials/whitespace-control + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/abs + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/array_to_sentence_string + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/append + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/at_least + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/at_most + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/capitalize + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/ceil + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/cgi_escape + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/compact + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/concat + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/date + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/date_to_long_string + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/date_to_rfc822 + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/date_to_xmlschema + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/date_to_string + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/default + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/divided_by + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/downcase + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/escape + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/escape_once + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/find + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/find_exp + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/first + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/floor + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/group_by + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/group_by_exp + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/inspect + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/join + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/json + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/jsonify + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/last + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/lstrip + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/map + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/minus + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/modulo + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/newline_to_br + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/normalize_whitespace + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/number_of_words + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/overview + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/plus + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/pop + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/prepend + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/push + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/raw + + 2024-08-19T19:36:26.426Z + + + + + https://liquidjs.com/zh-cn/filters/remove + + 2024-08-19T19:36:26.426Z https://liquidjs.com/filters/abs - 2024-08-18T05:44:37.711Z - - - - - https://liquidjs.com/filters/array_to_sentence_string - - 2024-08-18T05:44:37.711Z + 2024-08-19T19:36:26.422Z https://liquidjs.com/filters/append - 2024-08-18T05:44:37.711Z + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/array_to_sentence_string + + 2024-08-19T19:36:26.422Z https://liquidjs.com/filters/at_least - 2024-08-18T05:44:37.711Z + 2024-08-19T19:36:26.422Z https://liquidjs.com/filters/at_most - 2024-08-18T05:44:37.711Z + 2024-08-19T19:36:26.422Z https://liquidjs.com/filters/capitalize - 2024-08-18T05:44:37.711Z + 2024-08-19T19:36:26.422Z https://liquidjs.com/filters/ceil - 2024-08-18T05:44:37.711Z + 2024-08-19T19:36:26.422Z https://liquidjs.com/filters/cgi_escape - 2024-08-18T05:44:37.711Z + 2024-08-19T19:36:26.422Z https://liquidjs.com/filters/compact - 2024-08-18T05:44:37.711Z + 2024-08-19T19:36:26.422Z https://liquidjs.com/filters/concat - 2024-08-18T05:44:37.711Z + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/date + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/date_to_long_string + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/date_to_rfc822 + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/date_to_string + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/date_to_xmlschema + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/default + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/divided_by + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/downcase + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/escape + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/escape_once + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/find + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/find_exp + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/first + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/floor + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/group_by + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/group_by_exp + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/inspect + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/join + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/json + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/jsonify + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/last + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/lstrip + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/map + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/minus + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/modulo + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/newline_to_br + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/number_of_words + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/normalize_whitespace + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/overview + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/plus + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/pop + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/prepend + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/push + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/raw + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/remove + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/remove_first + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/remove_last + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/replace + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/replace_first + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/replace_last + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/reverse + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/round + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/rstrip + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/shift + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/size + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/slice + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/slugify + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/sort + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/sort_natural + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/split + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/strip + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/strip_html + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/strip_newlines + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/sum + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/times + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/to_integer + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/truncate + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/truncatewords + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/uniq + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/unshift + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/upcase + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/uri_escape + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/url_decode + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/url_encode + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/where + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/xml_escape + + 2024-08-19T19:36:26.422Z + + + + + https://liquidjs.com/filters/where_exp + + 2024-08-19T19:36:26.422Z diff --git a/tags/assign.html b/tags/assign.html index e31987fd9..d9e6a52fb 100644 --- a/tags/assign.html +++ b/tags/assign.html @@ -110,7 +110,7 @@ diff --git a/tags/capture.html b/tags/capture.html index 52fa674e5..8d0c5b487 100644 --- a/tags/capture.html +++ b/tags/capture.html @@ -110,7 +110,7 @@ diff --git a/tags/case.html b/tags/case.html index dacb0336d..d7c32b5da 100644 --- a/tags/case.html +++ b/tags/case.html @@ -103,7 +103,7 @@ diff --git a/tags/comment.html b/tags/comment.html index 3f0a12cd5..c94ac5b7b 100644 --- a/tags/comment.html +++ b/tags/comment.html @@ -103,7 +103,7 @@ diff --git a/tags/cycle.html b/tags/cycle.html index bfb136ec9..8c267f277 100644 --- a/tags/cycle.html +++ b/tags/cycle.html @@ -115,7 +115,7 @@ diff --git a/tags/decrement.html b/tags/decrement.html index f90a64bd0..12cfe1f91 100644 --- a/tags/decrement.html +++ b/tags/decrement.html @@ -105,7 +105,7 @@ diff --git a/tags/echo.html b/tags/echo.html index 3565503a2..74a48fe4f 100644 --- a/tags/echo.html +++ b/tags/echo.html @@ -103,7 +103,7 @@ diff --git a/tags/for.html b/tags/for.html index 031cb9116..4c822e7be 100644 --- a/tags/for.html +++ b/tags/for.html @@ -205,7 +205,7 @@ diff --git a/tags/if.html b/tags/if.html index bc3c73bf2..1e070f742 100644 --- a/tags/if.html +++ b/tags/if.html @@ -110,7 +110,7 @@ diff --git a/tags/include.html b/tags/include.html index 8b8f706b7..134023c5a 100644 --- a/tags/include.html +++ b/tags/include.html @@ -143,7 +143,7 @@ diff --git a/tags/increment.html b/tags/increment.html index 54f76c5ee..ac00880fc 100644 --- a/tags/increment.html +++ b/tags/increment.html @@ -112,7 +112,7 @@ diff --git a/tags/inline_comment.html b/tags/inline_comment.html index 596e468fc..f7b0c260d 100644 --- a/tags/inline_comment.html +++ b/tags/inline_comment.html @@ -113,7 +113,7 @@ diff --git a/tags/layout.html b/tags/layout.html index 2929db8da..804b92466 100644 --- a/tags/layout.html +++ b/tags/layout.html @@ -127,7 +127,7 @@ diff --git a/tags/liquid.html b/tags/liquid.html index 76a252183..c8871a84e 100644 --- a/tags/liquid.html +++ b/tags/liquid.html @@ -103,7 +103,7 @@ diff --git a/tags/overview.html b/tags/overview.html index a366c1684..5e3ab28ed 100644 --- a/tags/overview.html +++ b/tags/overview.html @@ -131,7 +131,7 @@ diff --git a/tags/raw.html b/tags/raw.html index 4afcabc55..114d0eeac 100644 --- a/tags/raw.html +++ b/tags/raw.html @@ -103,7 +103,7 @@ diff --git a/tags/render.html b/tags/render.html index 30ffedd2c..21f450651 100644 --- a/tags/render.html +++ b/tags/render.html @@ -133,7 +133,7 @@ diff --git a/tags/tablerow.html b/tags/tablerow.html index 490c7fd21..1a66d14fb 100644 --- a/tags/tablerow.html +++ b/tags/tablerow.html @@ -119,7 +119,7 @@ diff --git a/tags/unless.html b/tags/unless.html index 4e89d241d..4dbb0e55d 100644 --- a/tags/unless.html +++ b/tags/unless.html @@ -106,7 +106,7 @@ diff --git a/tutorials/access-scope-in-filters.html b/tutorials/access-scope-in-filters.html index 8bbc41774..fe513bea0 100644 --- a/tutorials/access-scope-in-filters.html +++ b/tutorials/access-scope-in-filters.html @@ -105,7 +105,7 @@ diff --git a/tutorials/caching.html b/tutorials/caching.html index 67fe4b0d0..2aa91c048 100644 --- a/tutorials/caching.html +++ b/tutorials/caching.html @@ -108,7 +108,7 @@ diff --git a/tutorials/changelog.html b/tutorials/changelog.html index a27b058ea..91cfe9b15 100644 --- a/tutorials/changelog.html +++ b/tutorials/changelog.html @@ -746,7 +746,7 @@ diff --git a/tutorials/contribution-guidelines.html b/tutorials/contribution-guidelines.html index 8a6d8d61f..8a8ca2a19 100644 --- a/tutorials/contribution-guidelines.html +++ b/tutorials/contribution-guidelines.html @@ -102,7 +102,7 @@ diff --git a/tutorials/differences.html b/tutorials/differences.html index e738490bd..5ea24d00b 100644 --- a/tutorials/differences.html +++ b/tutorials/differences.html @@ -126,7 +126,7 @@ diff --git a/tutorials/dos.html b/tutorials/dos.html index 0fb2a07f8..5d4a7e85b 100644 --- a/tutorials/dos.html +++ b/tutorials/dos.html @@ -111,7 +111,7 @@ diff --git a/tutorials/drops.html b/tutorials/drops.html index 479199879..36f63024e 100644 --- a/tutorials/drops.html +++ b/tutorials/drops.html @@ -141,7 +141,7 @@ diff --git a/tutorials/escaping.html b/tutorials/escaping.html index e4009b43e..a2f158129 100644 --- a/tutorials/escaping.html +++ b/tutorials/escaping.html @@ -129,7 +129,7 @@ diff --git a/tutorials/intro-to-liquid.html b/tutorials/intro-to-liquid.html index 471ce4d8d..c63d9743e 100644 --- a/tutorials/intro-to-liquid.html +++ b/tutorials/intro-to-liquid.html @@ -121,7 +121,7 @@ diff --git a/tutorials/migrate-to-9.html b/tutorials/migrate-to-9.html index ed779c52b..5819c12ab 100644 --- a/tutorials/migrate-to-9.html +++ b/tutorials/migrate-to-9.html @@ -116,7 +116,7 @@ diff --git a/tutorials/operators.html b/tutorials/operators.html index b2dfff637..081586611 100644 --- a/tutorials/operators.html +++ b/tutorials/operators.html @@ -106,7 +106,7 @@ diff --git a/tutorials/options.html b/tutorials/options.html index 1cad8956c..832be5e4b 100644 --- a/tutorials/options.html +++ b/tutorials/options.html @@ -162,7 +162,7 @@ diff --git a/tutorials/parse-parameters.html b/tutorials/parse-parameters.html index 9c9ecfa5a..b246c9862 100644 --- a/tutorials/parse-parameters.html +++ b/tutorials/parse-parameters.html @@ -113,11 +113,11 @@

In the above example, we’re trying to generate a random number in the range [2, max]. We’ll use Hash to parse from and to parameters.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const { Liquid, Hash } = require('liquidjs')

engine.registerTag('random', {
parse(tagToken) {
// parse the parameters structure into `this.args`
this.args = new Hash(tagToken.args)
},
* render(context, emitter) {
// evaluate the parameters in `context`
const {from, to} = yield this.args.render(context)
const length = to - from + 1
const value = from + Math.floor(length * Math.random())
emitter.write(value)
}
})
-

Rendering {% random from:2, to:max %} in scope { max: 10 } will generate a random number in the range [2, 10]. See this JSFiddle: https://jsfiddle.net/ctj364up/4/

+

Rendering {% random from:2, to:max %} in scope { max: 10 } will generate a random number in the range [2, 10]. See this JSFiddle: https://jsfiddle.net/ctj364up/4/

diff --git a/tutorials/partials-and-layouts.html b/tutorials/partials-and-layouts.html index 80290db9a..ce7b877dd 100644 --- a/tutorials/partials-and-layouts.html +++ b/tutorials/partials-and-layouts.html @@ -112,7 +112,7 @@ diff --git a/tutorials/plugins.html b/tutorials/plugins.html index 192bb33b7..c8b0fdbe2 100644 --- a/tutorials/plugins.html +++ b/tutorials/plugins.html @@ -109,7 +109,7 @@ diff --git a/tutorials/register-filters-tags.html b/tutorials/register-filters-tags.html index 07a20ebbd..447c794d5 100644 --- a/tutorials/register-filters-tags.html +++ b/tutorials/register-filters-tags.html @@ -112,7 +112,7 @@
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// disable a tag
const disabledTag = {
parse: function(token) {
throw new Error(`tag "${token.name}" disabled`);
}
}
engine.registerTag('include', disabledTag);

// disable a filter
function disabledFilter(name) {
return function () {
throw new Error(`filter "${name}" disabled`);
}
}
engine.registerFilter('plus', disabledFilter('plus'));
diff --git a/tutorials/render-file.html b/tutorials/render-file.html index 1fe484ccf..d0c935352 100644 --- a/tutorials/render-file.html +++ b/tutorials/render-file.html @@ -134,7 +134,7 @@ diff --git a/tutorials/render-tag-content.html b/tutorials/render-tag-content.html index 5b4223c0e..8f61ced69 100644 --- a/tutorials/render-tag-content.html +++ b/tutorials/render-tag-content.html @@ -99,14 +99,40 @@

Expected output:

1
2
3
<div class='wrapper'>
Hello world!
</div>
-

Firstly, [register][register-tags] a tag with name wrap and parse the content into this.tpls. Here in parse(tagToken, remainTokens),

+

Firstly, register a tag with name wrap and parse the content into this.tpls. Here in parse(tagToken, remainTokens),

+

Basically, what we need to do is take/.shift() enough tags from remainTokens until we got a endwrap token (the name can be arbitrary, but in convention, we need it to be endwrap). And if there’s no endwrap until the end of template file, we need to throw an tag-not-closed Error.

+
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
engine.registerTag('wrap', {
parse(tagToken, remainTokens) {
this.tpls = []
let closed = false
while(remainTokens.length) {
let token = remainTokens.shift()
// we got the end tag! stop taking tokens
if (token.name === 'endwrap') {
closed = true
break
}
// parse token into template
// parseToken() may consume more than 1 tokens
// e.g. {% if %}...{% endif %}
let tpl = this.liquid.parser.parseToken(token, remainTokens)
this.tpls.push(tpl)
}
if (!closed) throw new Error(`tag ${tagToken.getText()} not closed`)
},
* render(context, emitter) {
emitter.write("<div class='wrapper'>")
yield this.liquid.renderer.renderTemplates(this.tpls, context, emitter)
emitter.write("</div>")
}
})
+ +

.renderTemplates() can be async, we need yield to wait it complete. More details on async in LiquidJS, please refer to Sync and Async. Other parts of render() method is quite straightforward. Here’s a JSFiddle version: https://jsfiddle.net/por0zcn1/3/

+

Using ParseStream

When it comes to complex tags like for and if, the parse() can be very complicated. There’s a ParseStream utility to organize the parse() in event-based style. Following is a re-written parse() using ParseStream and does exactly the same as above example.

+
1
2
3
4
5
6
7
8
9
parse(tagToken, remainTokens) {
this.tpls = []
this.liquid.parser.parseStream(remainTokens)
.on('template', tpl => this.tpls.push(tpl))
// note that we cannot use arrow function because we need `this`
.on('tag:endwrap', function () { this.stop() })
.on('end', () => { throw new Error(`tag ${tagToken.getText()} not closed`) })
.start()
}
+ +

Here’s a JSFiddle version: https://jsfiddle.net/por0zcn1/4/. For simplicity, the following examples are implemented using ParseStream.

+

Manipulate the Context

The wrap tag above doesn’t seem to be very useful, without using that tag we can render the content anyway. Now we’re going to implement a repeat tag to render the content 2 times (we can also add a parameter to render arbitrary times).

+
1
2
3
{% repeat %}
{{ repeat.i }}. {{ "hello world!" | capitalize }}
{% endrepeat %}`
+ +

Expected outputs:

+
1
2
1. Hello world!
2. Hello world!
+ +

As you’ve noticed, there’s an additional repeat.i in the context of repeat. That is implemented by manipulating the Context.

+
Context

Context defines the value of each variable in Liquid template. In LiquidJS, a Context consists of a stack of Scopes. A Scope is a plain object like the one specified in engine.render(tpl, scope).

+
+ +

Each time we enter a new Context, we need to push a new Scope. And when we finish rendering and exit the Context, we pop the Scope from the Context. As you can see in the following implementation:

+
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
engine.registerTag('repeat', {
parse(tagToken, remainTokens) {
this.tpls = []
this.liquid.parser.parseStream(remainTokens)
.on('template', tpl => this.tpls.push(tpl))
.on('tag:endrepeat', function () { this.stop() })
.on('end', () => { throw new Error(`tag ${tagToken.getText()} not closed`) })
.start()
},
* render(context, emitter) {
const repeat = { i: 1 }
context.push({ repeat })
yield this.liquid.renderer.renderTemplates(this.tpls, context, emitter)
repeat.i++
yield this.liquid.renderer.renderTemplates(this.tpls, context, emitter)
context.pop()
}
})
+ +

The parse() is exactly the same as wrap tag, we repeat the content simply by calling .renderTemplates(this.tpls) twice during render(). Here’s the JSFiddle: https://jsfiddle.net/por0zcn1/2/

+
Use Push & Pop in Pairs

context.push() and context.pop() have to be used in pairs. Failing to pop() the Scope you pushed will leak the Scope to latter templates and may corrupt the Context stack.

+
+ @@ -115,7 +141,7 @@
Contents -
  1. Render Tag Content
+
  1. Render Tag Content
  2. Using ParseStream
  3. Manipulate the Context
Back to Top
diff --git a/tutorials/setup.html b/tutorials/setup.html index cc3feb852..65f117001 100644 --- a/tutorials/setup.html +++ b/tutorials/setup.html @@ -140,7 +140,7 @@ diff --git a/tutorials/sync-and-async.html b/tutorials/sync-and-async.html index e8dd60340..1f6b92d08 100644 --- a/tutorials/sync-and-async.html +++ b/tutorials/sync-and-async.html @@ -134,7 +134,7 @@ diff --git a/tutorials/truthy-and-falsy.html b/tutorials/truthy-and-falsy.html index fcf91a1fe..6fdbe47a8 100644 --- a/tutorials/truthy-and-falsy.html +++ b/tutorials/truthy-and-falsy.html @@ -226,7 +226,7 @@ diff --git a/tutorials/use-in-expressjs.html b/tutorials/use-in-expressjs.html index 01e69ae2e..f649447f3 100644 --- a/tutorials/use-in-expressjs.html +++ b/tutorials/use-in-expressjs.html @@ -113,7 +113,7 @@ diff --git a/tutorials/whitespace-control.html b/tutorials/whitespace-control.html index 7638e9473..3373346db 100644 --- a/tutorials/whitespace-control.html +++ b/tutorials/whitespace-control.html @@ -118,7 +118,7 @@ diff --git a/zh-cn/filters/abs.html b/zh-cn/filters/abs.html index beadd535d..0232b67df 100644 --- a/zh-cn/filters/abs.html +++ b/zh-cn/filters/abs.html @@ -116,7 +116,7 @@ diff --git a/zh-cn/filters/append.html b/zh-cn/filters/append.html index 7113f7572..9f8061c47 100644 --- a/zh-cn/filters/append.html +++ b/zh-cn/filters/append.html @@ -110,7 +110,7 @@ diff --git a/zh-cn/filters/array_to_sentence_string.html b/zh-cn/filters/array_to_sentence_string.html index 476372e46..70eaddf9f 100644 --- a/zh-cn/filters/array_to_sentence_string.html +++ b/zh-cn/filters/array_to_sentence_string.html @@ -109,7 +109,7 @@ diff --git a/zh-cn/filters/at_least.html b/zh-cn/filters/at_least.html index bf64afa62..adfd08387 100644 --- a/zh-cn/filters/at_least.html +++ b/zh-cn/filters/at_least.html @@ -109,7 +109,7 @@ diff --git a/zh-cn/filters/at_most.html b/zh-cn/filters/at_most.html index 9c620a374..6831f5cb4 100644 --- a/zh-cn/filters/at_most.html +++ b/zh-cn/filters/at_most.html @@ -109,7 +109,7 @@ diff --git a/zh-cn/filters/capitalize.html b/zh-cn/filters/capitalize.html index 62576cf17..985806c77 100644 --- a/zh-cn/filters/capitalize.html +++ b/zh-cn/filters/capitalize.html @@ -110,7 +110,7 @@ diff --git a/zh-cn/filters/ceil.html b/zh-cn/filters/ceil.html index cad2ac648..1b52d0476 100644 --- a/zh-cn/filters/ceil.html +++ b/zh-cn/filters/ceil.html @@ -122,7 +122,7 @@ diff --git a/zh-cn/filters/cgi_escape.html b/zh-cn/filters/cgi_escape.html index 64ee90b9b..dcc0b87a9 100644 --- a/zh-cn/filters/cgi_escape.html +++ b/zh-cn/filters/cgi_escape.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/filters/compact.html b/zh-cn/filters/compact.html index 67a43b1dd..dfbf436bb 100644 --- a/zh-cn/filters/compact.html +++ b/zh-cn/filters/compact.html @@ -111,7 +111,7 @@ diff --git a/zh-cn/filters/concat.html b/zh-cn/filters/concat.html index 17081a37e..ecca9fe20 100644 --- a/zh-cn/filters/concat.html +++ b/zh-cn/filters/concat.html @@ -110,7 +110,7 @@ diff --git a/zh-cn/filters/date.html b/zh-cn/filters/date.html index a43f3e434..cdb8d0b2d 100644 --- a/zh-cn/filters/date.html +++ b/zh-cn/filters/date.html @@ -152,7 +152,7 @@ diff --git a/zh-cn/filters/date_to_long_string.html b/zh-cn/filters/date_to_long_string.html index ec5d17dbe..9e58fee80 100644 --- a/zh-cn/filters/date_to_long_string.html +++ b/zh-cn/filters/date_to_long_string.html @@ -112,7 +112,7 @@ diff --git a/zh-cn/filters/date_to_rfc822.html b/zh-cn/filters/date_to_rfc822.html index 103a0ba35..8e2189884 100644 --- a/zh-cn/filters/date_to_rfc822.html +++ b/zh-cn/filters/date_to_rfc822.html @@ -105,7 +105,7 @@ diff --git a/zh-cn/filters/date_to_string.html b/zh-cn/filters/date_to_string.html index 8f3b241c8..631104f63 100644 --- a/zh-cn/filters/date_to_string.html +++ b/zh-cn/filters/date_to_string.html @@ -111,7 +111,7 @@ diff --git a/zh-cn/filters/date_to_xmlschema.html b/zh-cn/filters/date_to_xmlschema.html index 7fe5516c1..b4b2056ba 100644 --- a/zh-cn/filters/date_to_xmlschema.html +++ b/zh-cn/filters/date_to_xmlschema.html @@ -105,7 +105,7 @@ diff --git a/zh-cn/filters/default.html b/zh-cn/filters/default.html index ca15e6ec7..69850d0c9 100644 --- a/zh-cn/filters/default.html +++ b/zh-cn/filters/default.html @@ -127,7 +127,7 @@ diff --git a/zh-cn/filters/divided_by.html b/zh-cn/filters/divided_by.html index 07b46168b..896877476 100644 --- a/zh-cn/filters/divided_by.html +++ b/zh-cn/filters/divided_by.html @@ -120,7 +120,7 @@ diff --git a/zh-cn/filters/downcase.html b/zh-cn/filters/downcase.html index ba6971c46..89a30f700 100644 --- a/zh-cn/filters/downcase.html +++ b/zh-cn/filters/downcase.html @@ -109,7 +109,7 @@ diff --git a/zh-cn/filters/escape.html b/zh-cn/filters/escape.html index bd194d59e..f764ad4f8 100644 --- a/zh-cn/filters/escape.html +++ b/zh-cn/filters/escape.html @@ -111,7 +111,7 @@ Have you read &#39;James &amp; the Giant Peach&#39;? diff --git a/zh-cn/filters/escape_once.html b/zh-cn/filters/escape_once.html index b2a6785d6..47cc507e1 100644 --- a/zh-cn/filters/escape_once.html +++ b/zh-cn/filters/escape_once.html @@ -115,7 +115,7 @@ diff --git a/zh-cn/filters/find.html b/zh-cn/filters/find.html index 6ad16fe19..010b1b6c3 100644 --- a/zh-cn/filters/find.html +++ b/zh-cn/filters/find.html @@ -105,7 +105,7 @@ diff --git a/zh-cn/filters/find_exp.html b/zh-cn/filters/find_exp.html index 38ad4b820..1e63bbf7c 100644 --- a/zh-cn/filters/find_exp.html +++ b/zh-cn/filters/find_exp.html @@ -105,7 +105,7 @@ diff --git a/zh-cn/filters/first.html b/zh-cn/filters/first.html index d628e104b..f7f8f899e 100644 --- a/zh-cn/filters/first.html +++ b/zh-cn/filters/first.html @@ -112,7 +112,7 @@ diff --git a/zh-cn/filters/floor.html b/zh-cn/filters/floor.html index e6c3590c3..14c08d3cd 100644 --- a/zh-cn/filters/floor.html +++ b/zh-cn/filters/floor.html @@ -122,7 +122,7 @@ diff --git a/zh-cn/filters/group_by.html b/zh-cn/filters/group_by.html index f3b9f9963..f560cac03 100644 --- a/zh-cn/filters/group_by.html +++ b/zh-cn/filters/group_by.html @@ -105,7 +105,7 @@ diff --git a/zh-cn/filters/group_by_exp.html b/zh-cn/filters/group_by_exp.html index 9f90c9683..8be2a5a3b 100644 --- a/zh-cn/filters/group_by_exp.html +++ b/zh-cn/filters/group_by_exp.html @@ -105,7 +105,7 @@ diff --git a/zh-cn/filters/inspect.html b/zh-cn/filters/inspect.html index d0e61c23a..14c4472a6 100644 --- a/zh-cn/filters/inspect.html +++ b/zh-cn/filters/inspect.html @@ -112,7 +112,7 @@ diff --git a/zh-cn/filters/join.html b/zh-cn/filters/join.html index cb90b6bdc..5160a884a 100644 --- a/zh-cn/filters/join.html +++ b/zh-cn/filters/join.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/filters/json.html b/zh-cn/filters/json.html index 3ab6dd8d3..72723c090 100644 --- a/zh-cn/filters/json.html +++ b/zh-cn/filters/json.html @@ -112,7 +112,7 @@ diff --git a/zh-cn/filters/jsonify.html b/zh-cn/filters/jsonify.html index 580645b5c..8acee387a 100644 --- a/zh-cn/filters/jsonify.html +++ b/zh-cn/filters/jsonify.html @@ -98,7 +98,7 @@ diff --git a/zh-cn/filters/last.html b/zh-cn/filters/last.html index 5e00e2077..617f8c9b1 100644 --- a/zh-cn/filters/last.html +++ b/zh-cn/filters/last.html @@ -112,7 +112,7 @@ diff --git a/zh-cn/filters/lstrip.html b/zh-cn/filters/lstrip.html index 428e2c1c1..aaf64deb6 100644 --- a/zh-cn/filters/lstrip.html +++ b/zh-cn/filters/lstrip.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/filters/map.html b/zh-cn/filters/map.html index b869bb699..87ca9cee6 100644 --- a/zh-cn/filters/map.html +++ b/zh-cn/filters/map.html @@ -104,7 +104,7 @@ diff --git a/zh-cn/filters/minus.html b/zh-cn/filters/minus.html index 15fc2823a..787666cee 100644 --- a/zh-cn/filters/minus.html +++ b/zh-cn/filters/minus.html @@ -115,7 +115,7 @@ diff --git a/zh-cn/filters/modulo.html b/zh-cn/filters/modulo.html index 74c58ba3b..c5e315b6a 100644 --- a/zh-cn/filters/modulo.html +++ b/zh-cn/filters/modulo.html @@ -115,7 +115,7 @@ diff --git a/zh-cn/filters/newline_to_br.html b/zh-cn/filters/newline_to_br.html index 317d94437..6c3db893e 100644 --- a/zh-cn/filters/newline_to_br.html +++ b/zh-cn/filters/newline_to_br.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/filters/normalize_whitespace.html b/zh-cn/filters/normalize_whitespace.html index 5b465baa6..563ca8ff0 100644 --- a/zh-cn/filters/normalize_whitespace.html +++ b/zh-cn/filters/normalize_whitespace.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/filters/number_of_words.html b/zh-cn/filters/number_of_words.html index 318c673d3..f77176e04 100644 --- a/zh-cn/filters/number_of_words.html +++ b/zh-cn/filters/number_of_words.html @@ -125,7 +125,7 @@ diff --git a/zh-cn/filters/overview.html b/zh-cn/filters/overview.html index 5b87e836a..e48d54af8 100644 --- a/zh-cn/filters/overview.html +++ b/zh-cn/filters/overview.html @@ -129,7 +129,7 @@ diff --git a/zh-cn/filters/plus.html b/zh-cn/filters/plus.html index 329cf0d91..440143ed4 100644 --- a/zh-cn/filters/plus.html +++ b/zh-cn/filters/plus.html @@ -115,7 +115,7 @@ diff --git a/zh-cn/filters/pop.html b/zh-cn/filters/pop.html index 0a326e52a..935b40abb 100644 --- a/zh-cn/filters/pop.html +++ b/zh-cn/filters/pop.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/filters/prepend.html b/zh-cn/filters/prepend.html index 8d628bfd6..82aac5b87 100644 --- a/zh-cn/filters/prepend.html +++ b/zh-cn/filters/prepend.html @@ -110,7 +110,7 @@ diff --git a/zh-cn/filters/push.html b/zh-cn/filters/push.html index 5795d03c7..8a5b44cb2 100644 --- a/zh-cn/filters/push.html +++ b/zh-cn/filters/push.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/filters/raw.html b/zh-cn/filters/raw.html index ff980ea60..c27d0f955 100644 --- a/zh-cn/filters/raw.html +++ b/zh-cn/filters/raw.html @@ -125,7 +125,7 @@ diff --git a/zh-cn/filters/remove.html b/zh-cn/filters/remove.html index b29794efa..7047d2e09 100644 --- a/zh-cn/filters/remove.html +++ b/zh-cn/filters/remove.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/filters/remove_first.html b/zh-cn/filters/remove_first.html index c3f3eed91..c00eee432 100644 --- a/zh-cn/filters/remove_first.html +++ b/zh-cn/filters/remove_first.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/filters/remove_last.html b/zh-cn/filters/remove_last.html index 9567bb96a..17077a65a 100644 --- a/zh-cn/filters/remove_last.html +++ b/zh-cn/filters/remove_last.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/filters/replace.html b/zh-cn/filters/replace.html index deecf87c2..8c456a9bc 100644 --- a/zh-cn/filters/replace.html +++ b/zh-cn/filters/replace.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/filters/replace_first.html b/zh-cn/filters/replace_first.html index d7240fd40..6a88af662 100644 --- a/zh-cn/filters/replace_first.html +++ b/zh-cn/filters/replace_first.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/filters/replace_last.html b/zh-cn/filters/replace_last.html index 293c8f92f..cbe675295 100644 --- a/zh-cn/filters/replace_last.html +++ b/zh-cn/filters/replace_last.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/filters/reverse.html b/zh-cn/filters/reverse.html index 172793d76..2ea834831 100644 --- a/zh-cn/filters/reverse.html +++ b/zh-cn/filters/reverse.html @@ -110,7 +110,7 @@ diff --git a/zh-cn/filters/round.html b/zh-cn/filters/round.html index 7cc55d1e2..c27ef84fa 100644 --- a/zh-cn/filters/round.html +++ b/zh-cn/filters/round.html @@ -115,7 +115,7 @@ diff --git a/zh-cn/filters/rstrip.html b/zh-cn/filters/rstrip.html index 5e3cf07fa..42c0ca1cc 100644 --- a/zh-cn/filters/rstrip.html +++ b/zh-cn/filters/rstrip.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/filters/shift.html b/zh-cn/filters/shift.html index 42f4ecf9e..ff2f2a866 100644 --- a/zh-cn/filters/shift.html +++ b/zh-cn/filters/shift.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/filters/size.html b/zh-cn/filters/size.html index 200c3c775..16927cbdf 100644 --- a/zh-cn/filters/size.html +++ b/zh-cn/filters/size.html @@ -112,7 +112,7 @@ diff --git a/zh-cn/filters/slice.html b/zh-cn/filters/slice.html index 63ca19474..e99ebb78a 100644 --- a/zh-cn/filters/slice.html +++ b/zh-cn/filters/slice.html @@ -122,7 +122,7 @@ diff --git a/zh-cn/filters/slugify.html b/zh-cn/filters/slugify.html index c43f3a999..76b96588c 100644 --- a/zh-cn/filters/slugify.html +++ b/zh-cn/filters/slugify.html @@ -132,7 +132,7 @@ diff --git a/zh-cn/filters/sort.html b/zh-cn/filters/sort.html index 14304de49..c4d088c6f 100644 --- a/zh-cn/filters/sort.html +++ b/zh-cn/filters/sort.html @@ -106,7 +106,7 @@ diff --git a/zh-cn/filters/sort_natural.html b/zh-cn/filters/sort_natural.html index 4d07c5284..8e7ec1bfd 100644 --- a/zh-cn/filters/sort_natural.html +++ b/zh-cn/filters/sort_natural.html @@ -106,7 +106,7 @@ diff --git a/zh-cn/filters/split.html b/zh-cn/filters/split.html index 7ea37f8cb..6da40f182 100644 --- a/zh-cn/filters/split.html +++ b/zh-cn/filters/split.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/filters/strip.html b/zh-cn/filters/strip.html index 78c1a35eb..c64ed28a7 100644 --- a/zh-cn/filters/strip.html +++ b/zh-cn/filters/strip.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/filters/strip_html.html b/zh-cn/filters/strip_html.html index a6bc06377..131e73e12 100644 --- a/zh-cn/filters/strip_html.html +++ b/zh-cn/filters/strip_html.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/filters/strip_newlines.html b/zh-cn/filters/strip_newlines.html index 6cc9bac62..9b91d3d1f 100644 --- a/zh-cn/filters/strip_newlines.html +++ b/zh-cn/filters/strip_newlines.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/filters/times.html b/zh-cn/filters/times.html index 574ade797..3eea8f721 100644 --- a/zh-cn/filters/times.html +++ b/zh-cn/filters/times.html @@ -115,7 +115,7 @@ diff --git a/zh-cn/filters/to_integer.html b/zh-cn/filters/to_integer.html index 41d37d468..c422eac95 100644 --- a/zh-cn/filters/to_integer.html +++ b/zh-cn/filters/to_integer.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/filters/truncate.html b/zh-cn/filters/truncate.html index 1d73cb5b5..ca16c7b6c 100644 --- a/zh-cn/filters/truncate.html +++ b/zh-cn/filters/truncate.html @@ -117,7 +117,7 @@ diff --git a/zh-cn/filters/truncatewords.html b/zh-cn/filters/truncatewords.html index 4d0ad3850..17959d690 100644 --- a/zh-cn/filters/truncatewords.html +++ b/zh-cn/filters/truncatewords.html @@ -117,7 +117,7 @@ diff --git a/zh-cn/filters/uniq.html b/zh-cn/filters/uniq.html index 3936cf067..5f0c5bc55 100644 --- a/zh-cn/filters/uniq.html +++ b/zh-cn/filters/uniq.html @@ -104,7 +104,7 @@ ants, bugs, bees``` diff --git a/zh-cn/filters/unshift.html b/zh-cn/filters/unshift.html index 596e45d43..d2950a966 100644 --- a/zh-cn/filters/unshift.html +++ b/zh-cn/filters/unshift.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/filters/upcase.html b/zh-cn/filters/upcase.html index 28ff8ca15..ca01a5ee0 100644 --- a/zh-cn/filters/upcase.html +++ b/zh-cn/filters/upcase.html @@ -109,7 +109,7 @@ diff --git a/zh-cn/filters/uri_escape.html b/zh-cn/filters/uri_escape.html index 0368eb1d6..bc1210c71 100644 --- a/zh-cn/filters/uri_escape.html +++ b/zh-cn/filters/uri_escape.html @@ -104,7 +104,7 @@ diff --git a/zh-cn/filters/url_decode.html b/zh-cn/filters/url_decode.html index 66dc34707..e774e9b37 100644 --- a/zh-cn/filters/url_decode.html +++ b/zh-cn/filters/url_decode.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/filters/url_encode.html b/zh-cn/filters/url_encode.html index f45c44957..c3004e068 100644 --- a/zh-cn/filters/url_encode.html +++ b/zh-cn/filters/url_encode.html @@ -109,7 +109,7 @@ diff --git a/zh-cn/filters/where.html b/zh-cn/filters/where.html index 85fbe126f..ce717f5d4 100644 --- a/zh-cn/filters/where.html +++ b/zh-cn/filters/where.html @@ -129,7 +129,7 @@ diff --git a/zh-cn/filters/where_exp.html b/zh-cn/filters/where_exp.html index d99a0aa0d..2c83241e6 100644 --- a/zh-cn/filters/where_exp.html +++ b/zh-cn/filters/where_exp.html @@ -104,7 +104,7 @@ diff --git a/zh-cn/filters/xml_escape.html b/zh-cn/filters/xml_escape.html index 0bcd64043..d6a6d36c1 100644 --- a/zh-cn/filters/xml_escape.html +++ b/zh-cn/filters/xml_escape.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/tags/assign.html b/zh-cn/tags/assign.html index 027ce25fa..c9937c6df 100644 --- a/zh-cn/tags/assign.html +++ b/zh-cn/tags/assign.html @@ -110,7 +110,7 @@ diff --git a/zh-cn/tags/capture.html b/zh-cn/tags/capture.html index ddf9667d2..b954b3f1b 100644 --- a/zh-cn/tags/capture.html +++ b/zh-cn/tags/capture.html @@ -110,7 +110,7 @@ diff --git a/zh-cn/tags/case.html b/zh-cn/tags/case.html index 38ec27193..99cf74a51 100644 --- a/zh-cn/tags/case.html +++ b/zh-cn/tags/case.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/tags/comment.html b/zh-cn/tags/comment.html index 12dc9e917..7f201cf57 100644 --- a/zh-cn/tags/comment.html +++ b/zh-cn/tags/comment.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/tags/cycle.html b/zh-cn/tags/cycle.html index 72f27ff1d..b364948c3 100644 --- a/zh-cn/tags/cycle.html +++ b/zh-cn/tags/cycle.html @@ -115,7 +115,7 @@ diff --git a/zh-cn/tags/decrement.html b/zh-cn/tags/decrement.html index 95b2b7bb9..cfe96347a 100644 --- a/zh-cn/tags/decrement.html +++ b/zh-cn/tags/decrement.html @@ -105,7 +105,7 @@ diff --git a/zh-cn/tags/echo.html b/zh-cn/tags/echo.html index e386d5a11..508ff5a6b 100644 --- a/zh-cn/tags/echo.html +++ b/zh-cn/tags/echo.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/tags/for.html b/zh-cn/tags/for.html index d52b3afeb..8087d1617 100644 --- a/zh-cn/tags/for.html +++ b/zh-cn/tags/for.html @@ -184,7 +184,7 @@ diff --git a/zh-cn/tags/if.html b/zh-cn/tags/if.html index c72fb9909..d920c5e72 100644 --- a/zh-cn/tags/if.html +++ b/zh-cn/tags/if.html @@ -111,7 +111,7 @@ diff --git a/zh-cn/tags/include.html b/zh-cn/tags/include.html index db3f2c702..6aa081e1a 100644 --- a/zh-cn/tags/include.html +++ b/zh-cn/tags/include.html @@ -143,7 +143,7 @@ diff --git a/zh-cn/tags/increment.html b/zh-cn/tags/increment.html index e536a2cc1..d8e6da9a4 100644 --- a/zh-cn/tags/increment.html +++ b/zh-cn/tags/increment.html @@ -112,7 +112,7 @@ diff --git a/zh-cn/tags/inline_comment.html b/zh-cn/tags/inline_comment.html index 57024356f..640a51394 100644 --- a/zh-cn/tags/inline_comment.html +++ b/zh-cn/tags/inline_comment.html @@ -113,7 +113,7 @@ diff --git a/zh-cn/tags/layout.html b/zh-cn/tags/layout.html index dc2b414b9..106f21c55 100644 --- a/zh-cn/tags/layout.html +++ b/zh-cn/tags/layout.html @@ -122,7 +122,7 @@ diff --git a/zh-cn/tags/liquid.html b/zh-cn/tags/liquid.html index 39fe761fc..e7a59bc8d 100644 --- a/zh-cn/tags/liquid.html +++ b/zh-cn/tags/liquid.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/tags/overview.html b/zh-cn/tags/overview.html index 98c48681a..2064573aa 100644 --- a/zh-cn/tags/overview.html +++ b/zh-cn/tags/overview.html @@ -131,7 +131,7 @@ diff --git a/zh-cn/tags/raw.html b/zh-cn/tags/raw.html index 62895d8aa..1850f28fd 100644 --- a/zh-cn/tags/raw.html +++ b/zh-cn/tags/raw.html @@ -103,7 +103,7 @@ diff --git a/zh-cn/tags/render.html b/zh-cn/tags/render.html index cd8f9ef9c..fec473ab3 100644 --- a/zh-cn/tags/render.html +++ b/zh-cn/tags/render.html @@ -121,7 +121,7 @@ diff --git a/zh-cn/tags/tablerow.html b/zh-cn/tags/tablerow.html index e6f08ef4d..85cd0a811 100644 --- a/zh-cn/tags/tablerow.html +++ b/zh-cn/tags/tablerow.html @@ -119,7 +119,7 @@ diff --git a/zh-cn/tags/unless.html b/zh-cn/tags/unless.html index bc31b8561..7dbfc7049 100644 --- a/zh-cn/tags/unless.html +++ b/zh-cn/tags/unless.html @@ -106,7 +106,7 @@ diff --git a/zh-cn/tutorials/access-scope-in-filters.html b/zh-cn/tutorials/access-scope-in-filters.html index b7d59733f..72cf8a79c 100644 --- a/zh-cn/tutorials/access-scope-in-filters.html +++ b/zh-cn/tutorials/access-scope-in-filters.html @@ -105,7 +105,7 @@ diff --git a/zh-cn/tutorials/caching.html b/zh-cn/tutorials/caching.html index f37a4dfcc..045c6cec8 100644 --- a/zh-cn/tutorials/caching.html +++ b/zh-cn/tutorials/caching.html @@ -108,7 +108,7 @@ diff --git a/zh-cn/tutorials/changelog.html b/zh-cn/tutorials/changelog.html index 53d7e1c08..ce37a7490 100644 --- a/zh-cn/tutorials/changelog.html +++ b/zh-cn/tutorials/changelog.html @@ -746,7 +746,7 @@ diff --git a/zh-cn/tutorials/contribution-guidelines.html b/zh-cn/tutorials/contribution-guidelines.html index 7933b4e96..79b5c074a 100644 --- a/zh-cn/tutorials/contribution-guidelines.html +++ b/zh-cn/tutorials/contribution-guidelines.html @@ -102,7 +102,7 @@ diff --git a/zh-cn/tutorials/differences.html b/zh-cn/tutorials/differences.html index e576bc776..111e77a8a 100644 --- a/zh-cn/tutorials/differences.html +++ b/zh-cn/tutorials/differences.html @@ -126,7 +126,7 @@ diff --git a/zh-cn/tutorials/dos.html b/zh-cn/tutorials/dos.html index 2271049ed..07fca8acb 100644 --- a/zh-cn/tutorials/dos.html +++ b/zh-cn/tutorials/dos.html @@ -110,7 +110,7 @@ diff --git a/zh-cn/tutorials/drops.html b/zh-cn/tutorials/drops.html index 5ed4e27a2..149c6f622 100644 --- a/zh-cn/tutorials/drops.html +++ b/zh-cn/tutorials/drops.html @@ -141,7 +141,7 @@ diff --git a/zh-cn/tutorials/escaping.html b/zh-cn/tutorials/escaping.html index e7343420a..0dcaee11c 100644 --- a/zh-cn/tutorials/escaping.html +++ b/zh-cn/tutorials/escaping.html @@ -129,7 +129,7 @@ diff --git a/zh-cn/tutorials/intro-to-liquid.html b/zh-cn/tutorials/intro-to-liquid.html index 77cf7d8a9..a974ddf4f 100644 --- a/zh-cn/tutorials/intro-to-liquid.html +++ b/zh-cn/tutorials/intro-to-liquid.html @@ -121,7 +121,7 @@ diff --git a/zh-cn/tutorials/migrate-to-9.html b/zh-cn/tutorials/migrate-to-9.html index fe61ef656..e439f1c9a 100644 --- a/zh-cn/tutorials/migrate-to-9.html +++ b/zh-cn/tutorials/migrate-to-9.html @@ -116,7 +116,7 @@ diff --git a/zh-cn/tutorials/operators.html b/zh-cn/tutorials/operators.html index e1b1d6690..246d86800 100644 --- a/zh-cn/tutorials/operators.html +++ b/zh-cn/tutorials/operators.html @@ -106,7 +106,7 @@ diff --git a/zh-cn/tutorials/options.html b/zh-cn/tutorials/options.html index 852e7d004..e2cf85a94 100644 --- a/zh-cn/tutorials/options.html +++ b/zh-cn/tutorials/options.html @@ -160,7 +160,7 @@ diff --git a/zh-cn/tutorials/parse-parameters.html b/zh-cn/tutorials/parse-parameters.html index 082403fc3..7ae166ecc 100644 --- a/zh-cn/tutorials/parse-parameters.html +++ b/zh-cn/tutorials/parse-parameters.html @@ -113,11 +113,11 @@

上面的例子用来产生 [2, max] 范围内的随机数。我们要用 Hash 来解析 fromto 参数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const { Liquid, Hash } = require('liquidjs')

engine.registerTag('random', {
parse(tagToken) {
// 解析参数结果,存到 `this.args` 里
this.args = new Hash(tagToken.args)
},
* render(context, emitter) {
// 在当前 `context` 下计算参数的值
const {from, to} = yield this.args.render(context)
const length = to - from + 1
const value = from + Math.floor(length * Math.random())
emitter.write(value)
}
})
-

{ max: 10 } 上下文上渲染 {% random from:2, to:max %} 将会得到 [2, 10] 范围内的随机数。见这个 JSFiddle:http://jsfiddle.net/ctj364up/4/

+

{ max: 10 } 上下文上渲染 {% random from:2, to:max %} 将会得到 [2, 10] 范围内的随机数。见这个 JSFiddle:http://jsfiddle.net/ctj364up/4/

diff --git a/zh-cn/tutorials/partials-and-layouts.html b/zh-cn/tutorials/partials-and-layouts.html index e0d578689..60ab30c9e 100644 --- a/zh-cn/tutorials/partials-and-layouts.html +++ b/zh-cn/tutorials/partials-and-layouts.html @@ -114,7 +114,7 @@ diff --git a/zh-cn/tutorials/plugins.html b/zh-cn/tutorials/plugins.html index 4a092cbb5..b115c9ffb 100644 --- a/zh-cn/tutorials/plugins.html +++ b/zh-cn/tutorials/plugins.html @@ -111,7 +111,7 @@ diff --git a/zh-cn/tutorials/register-filters-tags.html b/zh-cn/tutorials/register-filters-tags.html index 5b0424673..654d2916d 100644 --- a/zh-cn/tutorials/register-filters-tags.html +++ b/zh-cn/tutorials/register-filters-tags.html @@ -115,7 +115,7 @@ diff --git a/zh-cn/tutorials/render-file.html b/zh-cn/tutorials/render-file.html index 44a2165f5..e905b0ff8 100644 --- a/zh-cn/tutorials/render-file.html +++ b/zh-cn/tutorials/render-file.html @@ -135,7 +135,7 @@ diff --git a/zh-cn/tutorials/render-tag-content.html b/zh-cn/tutorials/render-tag-content.html index 501293304..c33c7e1be 100644 --- a/zh-cn/tutorials/render-tag-content.html +++ b/zh-cn/tutorials/render-tag-content.html @@ -99,14 +99,40 @@

期望输出:

1
2
3
<div class='wrapper'>
Hello world!
</div>
-

首先 [注册][register-tags] 一个名为 wrap 的标签,把内容解析到 this.tpls 数组里。parse(tagToken, remainTokens) 中,

+

首先 注册 一个名为 wrap 的标签,把内容解析到 this.tpls 数组里。parse(tagToken, remainTokens) 中,

+

我们要做的是从 remainTokens 里拿出来/.shift() 足够的标签直到遇到 endwrap(其实可以是任意名字,但按照惯例应该叫 endwrap)。如果到模板结尾都没遇到 endwrap,需要抛出一个标签未关闭的 Error

+
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
engine.registerTag('wrap', {
parse(tagToken, remainTokens) {
this.tpls = []
let closed = false
while(remainTokens.length) {
let token = remainTokens.shift()
// 得到了结束标签,停止解析
if (token.name === 'endwrap') {
closed = true
break
}
// 把 Token 解析成 Template
// parseToken() 可能会消耗多个 Token
// 例如 {% if %}...{% endif %}
let tpl = this.liquid.parser.parseToken(token, remainTokens)
this.tpls.push(tpl)
}
if (!closed) throw new Error(`tag ${tagToken.getText()} not closed`)
},
* render(context, emitter) {
emitter.write("<div class='wrapper'>")
yield this.liquid.renderer.renderTemplates(this.tpls, context, emitter)
emitter.write("</div>")
}
})
+ +

.renderTemplates() 可能是异步的,因此需要 yield 来等它完成。更多关于 LiquidJS 异步的信息可以参考 同步和异步render() 的其他部分比较直观,这是 JSFiddle 版本:http://jsfiddle.net/por0zcn1/3/

+

使用 ParseStream

对于像 forif 这样的复杂标签,parse() 会变得很复杂。使用 ParseStream 工具可以按事件风格来组织 parse() 的逻辑。下面是用 ParseStream 重写过的 parse(),实现了和上面例子中完全一样的功能。

+
1
2
3
4
5
6
7
8
9
parse(tagToken, remainTokens) {
this.tpls = []
this.liquid.parser.parseStream(remainTokens)
.on('template', tpl => this.tpls.push(tpl))
// 注意这里不能用箭头函数,因为我们需要 `this`
.on('tag:endwrap', function () { this.stop() })
.on('end', () => { throw new Error(`tag ${tagToken.getText()} not closed`) })
.start()
}
+ +

这是 JSFiddle 链接:http://jsfiddle.net/por0zcn1/4/。简单起见,下面的例子都借助 ParseStream 来实现。

+

操作上下文

上面的 wrap 标签看起来没什么用,反正没它也可以很容易地渲染那部分内容。我们现在来实现一个 repeat 标签,把内容渲染两次(还可以加个参数让它渲染任意次):

+
1
2
3
{% repeat %}
{{ repeat.i }}. {{ "hello world!" | capitalize }}
{% endrepeat %}`
+ +

期望输出:

+
1
2
1. Hello world!
2. Hello world!
+ +

你可能注意到了在 repeat 上下文里有个额外的变量 repeat.i,这就需要我们操作 上下文

+
上下文

上下文 定义了 Liquid 模板中每个变量的值。在 LiquidJS 中,Context 由一个 Scope 的栈组成。Scope 就是一个普通对象,就像传给 engine.render(tpl, scope)scope 一样。

+
+ +

每次进入新的 上下文 时,我们需要 push 一个新的 Scope。当结束渲染并退出 上下文 时,再把 Scope上下文 pop 出来。见下面的实现:

+
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
engine.registerTag('repeat', {
parse(tagToken, remainTokens) {
this.tpls = []
this.liquid.parser.parseStream(remainTokens)
.on('template', tpl => this.tpls.push(tpl))
.on('tag:endrepeat', function () { this.stop() })
.on('end', () => { throw new Error(`tag ${tagToken.getText()} not closed`) })
.start()
},
* render(context, emitter) {
const repeat = { i: 1 }
context.push({ repeat })
yield this.liquid.renderer.renderTemplates(this.tpls, context, emitter)
repeat.i++
yield this.liquid.renderer.renderTemplates(this.tpls, context, emitter)
context.pop()
}
})
+ +

parse() 部分和 wrap 标签完全相同,在 render() 部分我们通过调用两次 .renderTemplates(this.tpls) 来重复渲染内容。这是 JSFiddle 链接:http://jsfiddle.net/por0zcn1/2/

+
成对使用 Push 和 Pop

必须成对地使用 context.push()context.pop()。如果忘记 pop() 会导致 Scope 泄露给后面的模板内容,也可能损坏 上下文 栈。.

+
+ @@ -115,7 +141,7 @@
目录 -
  1. 渲染标签内容
+
  1. 渲染标签内容
  2. 使用 ParseStream
  3. 操作上下文
回到顶部
diff --git a/zh-cn/tutorials/setup.html b/zh-cn/tutorials/setup.html index 4635d2fde..fa5fb3a04 100644 --- a/zh-cn/tutorials/setup.html +++ b/zh-cn/tutorials/setup.html @@ -126,7 +126,7 @@ diff --git a/zh-cn/tutorials/sync-and-async.html b/zh-cn/tutorials/sync-and-async.html index 2639acc4a..008a79a19 100644 --- a/zh-cn/tutorials/sync-and-async.html +++ b/zh-cn/tutorials/sync-and-async.html @@ -131,7 +131,7 @@ diff --git a/zh-cn/tutorials/truthy-and-falsy.html b/zh-cn/tutorials/truthy-and-falsy.html index a0ed1b466..1dea3b670 100644 --- a/zh-cn/tutorials/truthy-and-falsy.html +++ b/zh-cn/tutorials/truthy-and-falsy.html @@ -226,7 +226,7 @@ diff --git a/zh-cn/tutorials/use-in-expressjs.html b/zh-cn/tutorials/use-in-expressjs.html index 35098f28c..b9a067034 100644 --- a/zh-cn/tutorials/use-in-expressjs.html +++ b/zh-cn/tutorials/use-in-expressjs.html @@ -114,7 +114,7 @@ diff --git a/zh-cn/tutorials/whitespace-control.html b/zh-cn/tutorials/whitespace-control.html index fc5725799..eb27aa75b 100644 --- a/zh-cn/tutorials/whitespace-control.html +++ b/zh-cn/tutorials/whitespace-control.html @@ -118,7 +118,7 @@