أنواع البيانات في لغة Liquid
لكائنات لغة Liquid أحد الأنواع الستة التالية:
- سلسلة نصية String
- عدد Number
- قيمة منطقية Boolean
- القيمة Nil
- مصفوفة Array
- القيمة EmptyDrop
يمكنك تهيئة المتغيرات في لغة Liquid باستخدام الوسم assign
أو الوسم capture
.
السلسلة النصية String
السلاسل النصية هي عبارة عن تسلسلات من المحارف مُغلَّفة ضمن علامات اقتباس مفردة أو مزدوجة:
{% assign my_string = "Hello World!" %}
لا تحوّل لغة Liquid سلاسل الهروب escape sequences إلى محارف خاصة.
العدد Number
يتضمن الأعداد العشرية floats والأعداد الصحيحة integers:
{% assign my_int = 25 %}
{% assign my_float = -39.756 %}
القيمة المنطقية Boolean
القيم المنطقية إما true
أو false
، ولا حاجة لاستخدام علامات الاقتباس عند التصريح عن قيمة منطقية:
{% assign foo = true %}
{% assign bar = false %}
القيمة الفارغة Nil
القيمة nil
هي قيمة فارغة خاصة تعاد عندما لا يكون لشيفرة Liquid أيّ نتائج، وهي ليست سلسلة نصية مؤلفة مع الأحرف "nil". يجري التعامل مع القيمة Nil
على أنها القيمة false
ضمن شروط كتل if
ووسوم لغة Liquid الأخرى التي تتحقق من صحة شرطٍ ما.
إن لم يكن المستخدم موجودًا في المثال التالي (أي أعاد المستخدم user
القيمة nil
)، فلن تطبع لغة Liquid التحية:
{% if user %}
Hello {{ user.name }}!
{% endif %}
لن تطبع الوسوم التي تعيد القيمة nil
أيّ شيء على الصفحة.
The current user is {{ user.name }}
الخرج:
The current user is
المصفوفة Array
المصفوفات تحتوي على قوائم من المتغيرات التي تكون من أيّ نوع.
الوصول إلى عناصر المصفوفة
يمكنك الوصول إلى جميع عناصر المصفوفة من خلال المرور على كل عنصر في المصفوفة باستخدام الوسوم ذات النوع التكراري iteration tag.
<!-- if site.users = "Tobi", "Laura", "Tetsuro", "Adam" -->
{% for user in site.users %}
{{ user }}
{% endfor %}
الخرج:
Tobi Laura Tetsuro Adam
الوصول إلى عناصر محددة في المصفوفات
يمكنك استخدام صيغة [
]
الأقواس المربعة للوصول إلى عنصر محدّد في المصفوفة. تبدأ أدلة عناصر المصفوفة من الصفر، ويُحسَب الدليل السالب من نهاية المصفوفة.
<!-- if site.users = "Tobi", "Laura", "Tetsuro", "Adam" -->
{{ site.users[0] }}
{{ site.users[1] }}
{{ site.users[-1] }}
الخرج:
Tobi
Laura
Adam
تهيئة المصفوفات
لا يمكنك تهيئة المصفوفات باستخدام لغة Liquid فقط، ولكن يمكنك استخدام مرشّح التقسيم split
لتقسيم سلسلة نصية إلى مصفوفة من السلاسل النصية الفرعية.
الكائن EmptyDrop
يُعاد كائن EmptyDrop
إذا حاولت الوصول إلى كائن محذوف. تُعَدّ كلٌّ من الكائنات page_1
و page_2
و page_3
في المثال التالي كائنات من النوع EmptyDrop
:
{% assign variable = "hello" %}
{% assign page_1 = pages[variable] %}
{% assign page_2 = pages["does-not-exist"] %}
{% assign page_3 = pages.this-handle-does-not-exist %}
التحقق من الفراغ
يمكنك التحقق لمعرفة ما إذا كان الكائن موجودًا أم لا قبل الوصول إلى أيٍّ من سماته attributes كما يلي:
{% unless pages == empty %}
<h1>{{ pages.frontpage.title }}</h1>
<div>{{ pages.frontpage.content }}</div>
{% endunless %}
ستعيد كلٌّ من السلاسل النصية الفارغة والمصفوفات الفارغة القيمة true
إذا جرى التحقق منها بالمساواة مع empty
.