Простой жидкий camelCase не выполняет свою работу

#liquid

#жидкость

Вопрос:

Простое преобразование camelCase, похоже, не работает с нашей стороны.

Это пример из Shopify, который должен вернуться ComingSoon .

 {{ 'coming-soon' | camelcase }}
  

Мы не используем Shopify, но инструмент поддерживает Liquid, и мы выполнили с ним другую работу с жидкостями.

Но приведенный выше код не изменяет текст и возвращает coming-soon .

ОБНОВЛЕНИЕ: я пробую код в онлайн-песочнице, но он дает мне те же результаты. Так что теперь я действительно в замешательстве.

Ответ №1:

К camelcase camelize сожалению, фильтр or — это только Shopify. Смотрите Этот отчет об ошибке на Github:

https://github.com/Shopify/liquid/issues/755

Редактировать:

Если вы хотите имитировать это в Shopify, вы могли бы сделать что-то вроде:

 {%- assign input = 'long-camel-case-string' -%}
{%- assign parts = input | replace: ' ', '-' | split: '-' -%}
{%- capture camel -%}
    {%- for part in parts -%}
        {%- if forloop.index == 1 -%}
            {{ part }}
        {%- else -%}
            {{ part | capitalize }}
        {%- endif -%}
    {%- endfor -%}
 {%- endcapture -%}
 {{ camel }}
  

Если бы вы собирались использовать это регулярно, вы могли бы поместить все это в фрагмент, а затем использовать другой захват, чтобы захватить его, например:

 {%- capture output -%}{%- render 'camelize', input: 'long-camel-case-string' -%}{%- endcapture -%}
{{ output }}
  

Комментарии:

1. Я понимаю. Вы правы. Есть ли способ сделать это в Liquid, не требуя расширений?

2. @disasterkid — только что добавил дополнительную информацию о решении для Shopify

3. Извините, но эти коды применимы к Shopify или обычной жидкости? Мы не используем Shopify.

4. Первая часть является общей жидкостью и должна работать — вторая часть с рендерингом не будет работать. Вы можете протестировать его здесь: jumpseller.com/support/liquid-sandbox

5. Большое вам спасибо! Вы можете указать, что первый фрагмент также работает за пределами Shopify.