yogthos/Selmer

Quoted strings as tag arguments have their quotes escaped and preserved

Open

#235 aberto em 6 de jul. de 2020

Ver no GitHub
 (11 comments) (0 reactions) (0 assignees)Clojure (86 forks)batch import
enhancementhelp wanted

Métricas do repositório

Stars
 (670 stars)
Métricas de merge de PR
 (Mesclagem média 39m) (4 fundiu PRs em 30d)

Description

Is it possible to have a quoted string as an argument to a tag, without the surrounding quotes being preserved in the output?

Selmer, as expected, does treat the quoted string as a single argument, but passes the string to the tag function with its quotes, escaped, as part of the string.

Or perhaps there's another notation which allows a string with spaces to be treated as a single argument?

(use 'selmer.parser)

(add-tag! :foo
  (fn [args context-map]
    (str "foo " (first args))))

(render "{% foo \"quux quuz\" %}" {})
=>"foo \"quux quuz\""

Using render-file removes the need to escape the quotes in the template file, but still introduces them in the output:

file.txt:

{% foo "quux quuz" %}
(render-file "file.txt" {})
=>"foo \"quux quuz\""

The {% safe %} tag has no discernible effect:

file.txt:

{% safe %}{% foo "quux quuz" %}{% endsafe %}
(render-file "file.txt" {})
=>"foo \"quux quuz\""

Guia do colaborador