Tipos de dados e operações
Para iniciar seu projeto é importante rever os conceitos básicos de operações e tipos de dados suportados pelo Liquid. Para auxiliar nesse início, confira como fazer:
- Operações: utilização de operadores lógicos disponíveis.
- Verdadeiro e Falso: como o Liquid analisa dados booleanos em contextos de dados não booleanos.
- Tipos de dados: quais tipos de dados as variáveis podem assumir.
- Espaços em branco: como tratar caracteres em branco nas tags Liquid.
Operações
Seção intitulada “Operações”Os operadores lógicos são ferramentas para calcular expressões ou validar dados no seu algoritmo. Você pode utilizar os operadores básicos ou o operador contains:
- Operadores Básicos:
| Operador | Significado | |||
|---|---|---|---|---|
== | Igual a | |||
!= | Diferente de | |||
> | Maior que | |||
< | Menor que | |||
>= | Maior ou igual a | |||
<= | Menor ou igual a | |||
or | Lógica ou | |||
and | Lógica e |
- contains:
O operador contains verifica se uma string possui uma palavra ou expressão.
{% if product.name contains "camiseta" %} O nome desse produto possui a palavra "camiseta".{% endif %}O contains também pode ser usado para verificar se existe uma string em um array de strings, no entanto não é usado para procurar objetos em um array de objetos.
{% if product.tags contains "verao" %} Esse produto possui a tag "verão".{% endif %}❗️ Tags com mais de um operador
andouorsão lidas da direita para a esquerda. Você não pode usar parênteses para manipular a ordem dos operadores: parênteses são caracteres inválidos no Liquid e geram erro.
Para criar seus próprios operadores, utilize a tag Control Flow.
Verdadeiro e Falso
Seção intitulada “Verdadeiro e Falso”Quando um dado do tipo não booleano é usado em um contexto booleano (como em tags de controle, o Liquid decide como considerá-lo (como true ou false). Tipos de dados que retornam true são considerados verdadeiros, enquanto tipos de dados que retornam false são considerados falsos.
- Verdadeiro: todos os dados são verdadeiros, exceto nil ou false:
No exemplo abaixo, o texto Olist Ecommerce não é um valor booleano, mas ele é verdadeiro em uma condição (porque ele existe e não é nulo [`nil`]).
{% assign brand = "Olist Ecommerce" %}
{% if brand == true %} Esse texto sempre será exibido enquanto `brand` existir.{% endif %}Strings vazias são verdadeiras pois foram definidas. Veja o exemplo abaixo:
{% assign brand = "" %}
{% if brand %} <h1>{{ brand }}</h1>{% endif %}O que será exibido do código anterior é:
<h1></h1>Para evitar esse tipo de saída você pode verificar se uma string está vazia. Veja no caso a seguir:
{% unless brand == blank %} <h1>{{ brand }}</h1>{% endunless %}Nesse caso brand é exibido se o objeto não estiver vazio.
- Falso: os únicos valores falsos no Liquid são
nilefalse.nilé retornado quando o Liquid não tem nada para retornar de um objeto.
Por exemplo, se um produto não possui tags,product.tagsretornaránil:
{% if product.tags %} Esse bloco só será exibido se `product.tags` não for `nil`.{% endif %}- `false` é retornado através de objetos Liquid ou variáveis definidas como `false` . Um exemplo de propriedade que pode retornar `false` é `product.available`.📘 Citamos aqui o uso de operadores com tags. Veja outras tags de Olist Ecommerce no artigo Tags.
Tipos de dados
Seção intitulada “Tipos de dados”Em Liquid os objetos podem declarados como: string, boolean, number, nil, array e emptyDrop. Objetos podem ter um dos cinco tipos.
| Tipo | Uso | Exemplos |
|---|---|---|
string | São declaradas delimitando o conteúdo de uma variável com aspas simples ou duplas. | {% assign brand = "Olist Ecommerce" %} |
boolean | Booleanos podem ser do tipo true ou false.Não utilize aspas para definir um booleano. | • {% assign yes = true %}• {% assign no = false %} |
number | Podem ser do tipo inteiro (integer) ou racional (float). | • {% assign pie = 42 %}• {% assign pi = 3.14159 %} |
nil | Valor vazio especial que é retornado quando não há resultados para um objeto ou propriedade.nil é considerado false em blocos if e unless. | Considere que um produto não possui tags. Nesse caso Liquid não exibirá o texto:{% if product.tags %}Esse produto tem tags.{% endif %}Se você usar um objeto nil, ele não será renderizado:Tags: {{ product.tags }} |
array | Listas de variáveis de qualquer tipo. • Acesse itens usando tags de interação • Acesse itens específicos usando colchetes [ ]. A indexação começa em zero.• Use o filtro split para criar arrays. | Acessando itens:{% for tag in product.tags %}{{ tag }}{% endfor %}Item específico: {{ product.tags[0] }} |
emptyDrop | Você recebe um objeto emptyDrop ao tentar acessar um objeto excluído.Veja mais em EmptyDrop. | As páginas são objetos emptyDrop:{% assign page_1 = pages["nao-existe"] %}{% assign page_2 = pages.handle-invalido %} |
Para inicializar uma variável/objeto no Liquid utiliza-se as tags assign e capture.
Espaços em branco
Seção intitulada “Espaços em branco”No Liquid você pode incluir um hífen na sintaxe de sua tag {{-, -}}, {%- e -%} para remover os espaços em branco do lado esquerdo ou direito de uma tag renderizada. Mesmo que não imprima texto, normalmente imprimirá uma linha em branco em seu HTML renderizado. Veja o exemplo a seguir, onde há um espaço em branco antes da palavra tomate:
{% assign my_variable = "tomate"%}{{ my_variable }}Ao incluir hifens em sua tag de atribuição você retira o espaço em branco gerado do modelo renderizado:
{%- assign my_variable = "tomate" -%}{{ my_variable }}No caso de você não querer como regra geral que nenhuma de suas tags imprima espaços em branco, você pode adicionar hifens em ambos os lados de todas as suas tags ({%- e -%}):
{%- assign username = "John G. Chalmers-Smith" -%}{%- se nome de usuário e tamanho de nome de usuário > 10 -%} Uau, {{ username }}, você tem um nome comprido!{%- outro -%} Olá!{%- fim se -%}📘 Recomendamos a leitura dos conceitos básicos de Liquid: