diff --git a/src/selmer/parser.clj b/src/selmer/parser.clj index 207c7f7..27d6e64 100644 --- a/src/selmer/parser.clj +++ b/src/selmer/parser.clj @@ -359,17 +359,17 @@ *tag-second-pattern* (pattern tag-second) *filter-open-pattern* (pattern "\\" tag-open "\\" filter-open "\\s*") *filter-close-pattern* (pattern "\\s*\\" filter-close "\\" tag-close) - *filter-pattern* (pattern "\\" tag-open "\\" filter-open "\\s*.*\\s*\\" filter-close "\\" tag-close) + *filter-pattern* (pattern "\\" tag-open "\\" filter-open "\\s*[\\s\\S]*\\s*\\" filter-close "\\" tag-close) *tag-open-pattern* (pattern "\\" tag-open "\\" tag-second "\\s*") *tag-close-pattern* (pattern "\\s*\\" tag-second "\\" tag-close) - *tag-pattern* (pattern "\\" tag-open "\\" tag-second "\\s*.*\\s*\\" tag-second "\\" tag-close) - *include-pattern* (pattern "\\" tag-open "\\" tag-second "\\s*include.*") - *extends-pattern* (pattern "\\" tag-open "\\" tag-second "\\s*extends.*") - *block-pattern* (pattern "\\" tag-open "\\" tag-second "\\s*block.*") + *tag-pattern* (pattern "\\" tag-open "\\" tag-second "\\s*[\\s\\S]*\\s*\\" tag-second "\\" tag-close) + *include-pattern* (pattern "\\" tag-open "\\" tag-second "\\s*include[\\s\\S]*") + *extends-pattern* (pattern "\\" tag-open "\\" tag-second "\\s*extends[\\s\\S]*") + *block-pattern* (pattern "\\" tag-open "\\" tag-second "\\s*block[\\s\\S]*") *block-super-pattern* (pattern "\\" tag-open "\\" filter-open "\\s*block.super\\s*\\" filter-close "\\" tag-close) - *endblock-pattern* (pattern "\\" tag-open "\\" tag-second "\\s*endblock.*") - *embed-pattern* (pattern "\\" tag-open "\\" tag-second "\\s*embed.*") - *endembed-pattern* (pattern "\\" tag-open "\\" tag-second "\\s*endembed.*") + *endblock-pattern* (pattern "\\" tag-open "\\" tag-second "\\s*endblock[\\s\\S]*") + *embed-pattern* (pattern "\\" tag-open "\\" tag-second "\\s*embed[\\s\\S]*") + *endembed-pattern* (pattern "\\" tag-open "\\" tag-second "\\s*endembed[\\s\\S]*") *tags* (atom [])] (with-meta (parse-fn input params) diff --git a/src/selmer/template_parser.clj b/src/selmer/template_parser.clj index 391e044..49b987c 100644 --- a/src/selmer/template_parser.clj +++ b/src/selmer/template_parser.clj @@ -14,7 +14,7 @@ (declare read-block consume-block preprocess-template wrap-in-expression-tag) (defn get-tag-params [tag-id block-str] - (let [tag-id (re-pattern (str "^.+?" tag-id "\\s*"))] + (let [tag-id (re-pattern (str "(?s)^.+?" tag-id "\\s*"))] (-> block-str (s/replace tag-id "") (split *tag-second-pattern*) first trim))) ;; ---------------------------------------------------------------------------- diff --git a/test/selmer/core_test.clj b/test/selmer/core_test.clj index a117005..0bc8a43 100644 --- a/test/selmer/core_test.clj +++ b/test/selmer/core_test.clj @@ -84,17 +84,17 @@ [*tag-second-pattern* (pattern *tag-second*) *filter-open-pattern* (pattern "\\" *tag-open* "\\" *filter-open* "\\s*") *filter-close-pattern* (pattern "\\s*\\" *filter-close* "\\" *tag-close*) - *filter-pattern* (pattern "\\" *tag-open* "\\" *filter-open* "\\s*.*\\s*\\" *filter-close* "\\" *tag-close*) - *tag-pattern* (pattern "\\" *tag-open* "\\" *tag-second* "\\s*.*\\s*\\" *tag-second* "\\" *tag-close*) + *filter-pattern* (pattern "\\" *tag-open* "\\" *filter-open* "\\s*[\\s\\S]*\\s*\\" *filter-close* "\\" *tag-close*) + *tag-pattern* (pattern "\\" *tag-open* "\\" *tag-second* "\\s*[\\s\\S]*\\s*\\" *tag-second* "\\" *tag-close*) *tag-open-pattern* (pattern "\\" *tag-open* "\\" *tag-second* "\\s*") *tag-close-pattern* (pattern "\\s*\\" *tag-second* "\\" *tag-close*) - *include-pattern* (pattern "\\" *tag-open* "\\" *tag-second* "\\s*include.*") - *extends-pattern* (pattern "\\" *tag-open* "\\" *tag-second* "\\s*extends.*") - *block-pattern* (pattern "\\" *tag-open* "\\" *tag-second* "\\s*block.*") + *include-pattern* (pattern "\\" *tag-open* "\\" *tag-second* "\\s*include[\\s\\S]*") + *extends-pattern* (pattern "\\" *tag-open* "\\" *tag-second* "\\s*extends[\\s\\S]*") + *block-pattern* (pattern "\\" *tag-open* "\\" *tag-second* "\\s*block[\\s\\S]*") *block-super-pattern* (pattern "\\" *tag-open* "\\" *filter-open* "\\s*block.super\\s*\\" *filter-close* "\\" *tag-close*) - *endblock-pattern* (pattern "\\" *tag-open* "\\" *tag-second* "\\s*endblock.*") - *embed-pattern* (pattern "\\" *tag-open* "\\" *tag-second* "\\s*embed.*") - *endembed-pattern* (pattern "\\" *tag-open* "\\" *tag-second* "\\s*endembed.*")] + *endblock-pattern* (pattern "\\" *tag-open* "\\" *tag-second* "\\s*endblock[\\s\\S]*") + *embed-pattern* (pattern "\\" *tag-open* "\\" *tag-second* "\\s*embed[\\s\\S]*") + *endembed-pattern* (pattern "\\" *tag-open* "\\" *tag-second* "\\s*endembed[\\s\\S]*")] ~@body)) diff --git a/test/templates/include.html b/test/templates/include.html index 72742e3..c1592c0 100644 --- a/test/templates/include.html +++ b/test/templates/include.html @@ -1 +1,4 @@ -{% include "templates/snippet.html" with url="/page?name=foo" gridid="abc" %} \ No newline at end of file +{% + include "templates/snippet.html" + with url="/page?name=foo" + gridid="abc" %} \ No newline at end of file