Tipos de dados e operações
Conceitos básicos das operações e dados em Liquid
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
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 |
| Lógica |
| Lógica |
- 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.tag_names contains "verao" %}
Esse produto possui a tag "verão".
{% endif %}
Tags com mais de um operadorand
ouor
sã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
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 “Vnda” não é um valor booleano, mas ele é verdadeiro em uma condição (porque ele existe e não é nulo [`nil`]).
{% assign brand = “Vnda” %}
{% 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
nil
efalse
.nil
é retornado quando o Liquid não tem nada para retornar de um objeto.
Por exemplo, se um produto não possui tags,product.tag_names
retornará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 Vnda no artigo Tags.
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 |
---|---|---|
| São declaradas delimitando o conteúdo de uma variável com aspas simples ou duplas. |
|
| Booleanos podem ser do tipo |
|
| Podem ser do tipo inteiro (integer) ou racional (float). |
|
| Valor vazio especial que é retornado quando não há resultados para um objeto ou propriedade. | Considere que um produto não possui tags (
Se você usar um atributo ou objeto
|
| Listas de variáveis de qualquer tipo.
|
|
| Você recebe um objeto | A página_1, página_2 e página_3 são objetos
|
Para inicializar uma variável/objeto no Liquid utiliza-se as tags assign e capture.
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:
Updated 20 days ago