yogthos/Selmer

Quoted strings as tag arguments have their quotes escaped and preserved

Open

#235 aperta il 6 lug 2020

Vedi su GitHub
 (11 commenti) (0 reazioni) (0 assegnatari)Clojure (86 fork)batch import
enhancementhelp wanted

Metriche repository

Star
 (670 star)
Metriche merge PR
 (Merge medio 39m) (4 PR mergiate in 30 g)

Descrizione

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\""

Guida contributor