Если замена строки не приведет вас туда, и вам нужен безопасный способ, позволяющий пользователям писать шаблоны, которые анализируются и обрабатываются на вашем сервере, тогда:
Это может бытьхорошо подходит для шаблонного движка типа жидкость (библиотека ruby).Существует реализация Elixir под названием liquid-elixir , я никогда с ней не работал, но у меня есть некоторый опыт работы с библиотекой Ruby.
Liquid предоставляет вам простой / ограниченный язык шаблонов, где вы можете добавлять теги, фильтры и предоставлять собственные локальные переменные.
Например, если вы назначите переменную с именем temp
, которая будет содержать текущую температуру, пользователь может использовать ее в шаблоне:
The temperature is {{ temp | round: 2 }}.
{% if temp <= 0 %}
It's freezing!
{% endif %}
Согласно readme liquid-elixir
, для рендеринга этого на сервере (предположим, что выше указано в переменной user_template
):
temperature = MyApp.Sensor.current_temperature()
template = Liquid.Template.parse(user_template)
{:ok, rendered, _} = Liquid.Template.render(template, %{"temp" => temperature})
А теперьу вас есть некоторый HTML-код в rendered
, который вы можете использовать / display.
Опять же, у меня нет опыта работы с версией Elixir, я не знаю, полностью ли она работает или вообще работает.