Pull to refresh

Comments 12

Пример неудачный: написание результата кажется проще чем комбинация шаблона и данных

  1. идея tool -data data.yaml template.tpl - очень хорошая, я тоже об этом думал.

  2. идея пробросить туда ENV тоже весьма

а вот собственный язык шаблонов здесь всё портит (конечно это моё мнение).

мне кажется что очень хорошим вариантом шаблонного языка является какой-нибудь язык-embedded.

  • Например perl-embedded (что-то вроде Mojo)

  • JS-embedded (масса вариаций вроде ejs)

  • конечно же PurePHP :)

  • так далее.

    Что хорошо в embedded языках, так это то,

  • что шаблоны сложнее hello world тоже доступны и сложная логика на них реализуема.

  • что не требуется учить язык чтоб их использовать

  • и главное: оно легко расширяемо (какую-нибудь библиотеку форматирования даты времени очень просто подключить в такие шаблоны)

а вот собственный язык шаблонов здесь всё портит (конечно это моё мнение).

Тут реализовано подмножество популярного mustache.

мне кажется что очень хорошим вариантом шаблонного языка является какой-нибудь язык-embedded.

Бывает полезно, но из пушки по воробьям в данном случае.

Плюсую Lua. Пробовал работать с разными встраиваемыми языками и Lua оказался самым беспроблемным. Если нравится синтаксис Python, то можно Starlark ещё посмотреть.

Всё уже придумано до нас. ;-)

export VAR1="bla-bla-bla" VAR2="blablabla" VAR3="blabla-bla"
envsubst < file_with.vars|tee file_with.vars >/dev/null
И вот как-то так оно и работает

Если кому нужна подсвечивалка по регуляркам, ловите, мне не жалко. ;-)

#!/usr/bin/env bash
#
# hlt approved by shellcheck ;-)
#

hl_start="\\\e[0;1;4;32m"
hl_end="\\\e[0m"

usage() {
	cat << 'EOF'
hlt: 'sed -E' regular expression highlighter from file or stdin.
  Usage: 
      hlt '<regular expression>' <file>
      or command | hlt '<regular expression>'
EOF
exit 1
}

if [[ -z "$1" ]]; then
	usage
fi

if [[ -n "$2" ]]; then
	file="$2"
else 
	file="/dev/stdin"
fi

result="$(sed -E "s/(""$1"")/$hl_start\1$hl_end/g" "$file")"
echo -e "$result"

exit 0

А главное практически всегда есть в системе. И да. это реально самый простой шаблонизатор. Но творение автора тоже может быть применимо в определённых кейсах.

PS: Такое чуйство, что автор раньше писал статьи для Журнал Хакер ;-)

Спасибо Дане за счастливое детство и сломанную психику <3

Однажды я был маленьким, и задавался вопросом — вот если Unix way это (упрощенно) небольшие, довольно простые утилиты и библиотеки, которые делают одну вещь, но делают её хорошо (Peter H. Salus: "...that do one thing and do it well"), то… Где тогда утилита, которая занимается шаблонизацией и не хватает звёзд с неба?

GNU m4

Статическая линковка — один бинарный файл без каких-либо зависимостей (он мне понадобится в docker scratch)
Итоговый размер должен быть минимально возможным (постараться уместиться в 100Кб без upx)

Есть mustache шаблонизатор на bash
github.com/tests-always-included/mo
32 KB
Если вырезать комментарии, то выйдет наверное вполовину меньше.
Sign up to leave a comment.

Articles