Проверьте, является ли тип переменной хеш или массив в жидкости - PullRequest
0 голосов
/ 06 июля 2018

Я пытаюсь написать несколько общий макет, который может принимать в качестве параметра либо массив строк , либо хэш опций, поэтому вы можете сделать:

option:
    - "<li><b>One:</b> This is</li>"
    - "<li><b>Two:</b> Raw HTML</li>"

Или вы можете сделать:

option:
    One: This is
    Two: a mapping

Причина, по которой я хочу поддержать оба этих варианта, заключается в том, что это общедоступный макет, и первый вариант уже поддерживается, но я бы предпочел использовать второй вариант, поэтому я хочу что-то устаревшее период, когда поддерживаются обе версии.

Я видел в проверку, является ли переменная типом строки или массива в жидкости , что есть способ определить, является ли что-то массивом или строкой, но у массивов и хэшей есть атрибут first ! Практическим способом повторного использования этой функции может быть проверка того, имеет ли первый элемент переменной также атрибут first, например:

{% if site.option.first %}
    {% if site.option.first.first %}
        hash
    {% else %}
        array
    {% endif %}
{% else %}
    Something else!
{% endif %}

Но это кажется немного громоздким и немного хакерским - плюс он даст неправильный ответ, если передаст массив массивов (даже если в этом случае «массив массивов» не считается допустимым вводом). Есть ли лучший способ сделать это?

...