Как сопоставить шестнадцатеричное значение в жидких шаблонах с регулярным выражением? - PullRequest
0 голосов
/ 26 мая 2020

Желаемый результат

Редакторы контента могут вводить шестнадцатеричные значения в Shopify для цвета фона. Как вы можете проверить с помощью потока управления шаблона Liquid, является ли данный ввод допустимым шестнадцатеричным числом?

Регулярное выражение, которое необходимо реализовать:

^#(?:[0-9a-fA-F]{3}){1,2}$

Фрагмент Liquid, в который его следует добавить:

<div class="a-module" style="background-color: {{ bg_color }};">
  ...
</div>

Переменная bg_color может быть только шестнадцатеричной, включая символ фунта #.

Как это может быть достигнуто с помощью регулярного выражения?

Другие решения?

Если это невозможно, какие другие методы сопоставления строки в жидких шаблонах?

Исследование

Я мог бы не очень много узнаю о регулярных выражениях в жидких шаблонах.

Вот такая проблема: Регулярное выражение для сопоставления тега в шаблоне Liquid: ">" внутри html тег

Но я не понимаю, как это реализовать.

Ответы [ 2 ]

0 голосов
/ 26 мая 2020

В жидкости Shopify нет регулярных выражений, поэтому нет возможности проверить это таким образом.

Лучшим подходом будет использование одного из цветовых фильтров .

Вы можете сделать что-то вроде этого:

{% assign is_color = bg_color | color_to_rgb  %}
{% if is_color %}
  It's color
{% endif %}

Где, если цвет действителен, он вернет вывод в формате rgb, но если он не вернет результат null, переменная будет ложной.

Если вам действительно нужно использовать регулярное выражение, единственный вариант - положиться на Javascript и обработать его, как только DOM будет готов.

0 голосов
/ 26 мая 2020

А как насчет создания собственного фильтра. И в этом фильтре проверка шестнадцатеричной.

/^#[0-9a-f]{3,6}$/igm

https://github.com/Shopify/liquid/wiki/Liquid-for-Programmers#create -your-own-filters

...