@recloudor

Как в go, в пакете template переводить в текст не все теги?

Как в go, в пакете template, переводить в текст не все теги? Допустим, не переводить теги h1, i, div с классом do и т.д., возможно ли такое?
  • Вопрос задан
  • 549 просмотров
Решения вопроса 1
index0h
@index0h
PHP, Golang. https://github.com/index0h
Задача шаблонизатора - собрать строку из шаблона(ов), которые строки по сути + внедрить в них пользовательские данные. Шаблонизатору все равно теги у вас в этих строках, или не теги, все что его интересует - синтаксические конструкции самого шаблонизатора, для подстановки данных.

Веду к следующему - если вам не нужно показывать часть шаблона - пропишите условие.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@mantyr
Пишу много Golang кода с удовольствием:)
Вначале берём html/template и читаем исходники, видим что там используется text/template, потом читаем godoc к обоим пакетам и видим что text/template базовый и имеет больше полезной информации. Там же находим блок.

Examples

Here are some example one-line templates demonstrating pipelines and variables. All produce the quoted word "output":

{{"\"output\""}}
	A string constant.
{{`"output"`}}
	A raw string constant.
{{printf "%q" "output"}}
	A function call.
{{"output" | printf "%q"}}
	A function call whose final argument comes from the previous
	command.
{{printf "%q" (print "out" "put")}}
	A parenthesized argument.
{{"put" | printf "%s%s" "out" | printf "%q"}}
	A more elaborate call.
{{"output" | printf "%s" | printf "%q"}}
	A longer chain.
{{with "output"}}{{printf "%q" .}}{{end}}
	A with action using dot.
{{with $x := "output" | printf "%q"}}{{$x}}{{end}}
	A with action that creates and uses a variable.
{{with $x := "output"}}{{printf "%q" $x}}{{end}}
	A with action that uses the variable in another action.
{{with $x := "output"}}{{$x | printf "%q"}}{{end}}
	The same, but pipelined.



Иными словами сделайте {{`{`}} и {{`}`}} или {{"{"}} и {{"{"}} там где нужно "абфусцировать тег".
Что бы не писать постоянно кучу скобок - можно прописать Delims("{", "}"), но как именно выясните сами:)
func (t *Template) Delims(left, right string) *Template


Возможно есть ещё несколько вариантов решения, если теги которые надо игнорировать не во вставляемом в шаблон тексте.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы