yogthos/Selmer

Quoted strings as tag arguments have their quotes escaped and preserved

Open

#235 opened on Jul 6, 2020

View on GitHub
 (11 comments) (0 reactions) (0 assignees)Clojure (121 forks)batch import
enhancementhelp wanted

Repository metrics

Stars
 (1,042 stars)
PR merge metrics
 (No merged PRs in 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\""

Contributor guide