🧠 Как читать Gradient Pattern DSL
Gradient Pattern DSL может выглядеть сложным, но он построен на небольшом наборе понятных и повторяемых правил.
В этом разделе показано, как читать любой паттерн шаг за шагом.
📌 Начать с границ
Любой паттерн всегда имеет вид:
^ ... .Читается так:
Начало паттерна
...
Конец паттерна🧠 Пример: базовый повторяющийся паттерн
Паттерн
^[color-stop,~color-stop].📌 Шаг 1 - границы
^ - начало паттерна
. - конец паттернаЗначит:
всё между
^и.- это правило, которое нужно прочитать
📌 Шаг 2 - смотрим внутрь
[color-stop,~color-stop]Это последовательность ([]), то есть:
сначала одно, затем другое📌 Шаг 3 - первый элемент
color-stopЗначит:
паттерн должен начинаться с color-stop
📌 Шаг 4 - второй элемент
~color-stopОператор ~ означает:
повторение 0 или более разЗначит:
любое количество дополнительных color-stop
📌 Шаг 5 - объединяем
[color-stop,~color-stop]Читается как:
один color-stop
затем любое количество дополнительных color-stop📌 Финальное объяснение
Начало паттерна
Ожидается:
один color-stop
Затем:
любое количество дополнительных color-stop
Конец паттерна💡 Интуиция
Этот паттерн можно читать так:
минимум один color-stop, затем сколько угодно
🔗 Попробовать
Проверить можно в playground:
color-stop
color-stop, color-stop
color-stop, color-stop, color-stopВсе варианты валидны.
📌 Последовательность []
[a,b]Означает: a затем b
Значит:
[color-stop,~color-stop]это:
color-stop, затем повторение color-stop📌 Повторение ~
~color-stopОзначает:
0 или более color-stopИтог:
минимум один color-stop
затем любое количество дополнительных📌 Итоговая форма
^[color-stop,~color-stop].^ - начало паттерна
Ожидается:
минимум один color-stop
Затем:
любое количество дополнительных
. - конец паттерна📌 Условия OR
(config|color-stop)Означает:
либо config
либо color-stop📌 Комбинация sequence и OR
([config,color-stop]|color-stop)Читается так:
либо:
config, затем color-stop
либо:
color-stop📌 Вложенные паттерны
^[([config,color-stop]|color-stop),~color-stop].Читаем по шагам:
Начало паттерна
Далее:
либо:
config, затем color-stop
либо:
color-stop
Затем:
повторение color-stop
Конец паттерна📌 Color hints
[color-hint,color-stop]Означает:
color-hint всегда должен сопровождаться color-stop🧠 Ментальная модель
DSL - это набор инструкций:
читаем вход слева направо
сопоставляем токены
разветвляемся при необходимости
повторяем, если разрешено🔗 Попробовать интерактивно
Читать паттерны намного проще, когда видно их визуально:
🚀 Итог
^→ начало.→ конец[]→ последовательность()→ группа|→ или~→ повторение (0..n)config→ конфигурация (угол, направление и т.д.)color-stop→ цветовая точкаcolor-hint→ точка интерполяции
Если это понятно - можно читать любой паттерн.
💡 Совет
Начать с простого:
^color-stop.И постепенно добавлять:
[]
()
|
~