Keep using kilt for rendering
Directly using Crystal's ECR seems to be causing issues, so don't use kemal's 'render' macro and patch 'content_for' to have the same behavior as before Kemal v1.1.1
This commit is contained in:
parent
84b6429ca6
commit
1f66d7ef74
5 changed files with 37 additions and 3 deletions
|
@ -20,6 +20,10 @@ shards:
|
||||||
git: https://github.com/kemalcr/kemal.git
|
git: https://github.com/kemalcr/kemal.git
|
||||||
version: 1.1.2
|
version: 1.1.2
|
||||||
|
|
||||||
|
kilt:
|
||||||
|
git: https://github.com/jeromegn/kilt.git
|
||||||
|
version: 0.6.1
|
||||||
|
|
||||||
lsquic:
|
lsquic:
|
||||||
git: https://github.com/iv-org/lsquic.cr.git
|
git: https://github.com/iv-org/lsquic.cr.git
|
||||||
version: 2.18.1-2
|
version: 2.18.1-2
|
||||||
|
|
|
@ -19,6 +19,9 @@ dependencies:
|
||||||
kemal:
|
kemal:
|
||||||
github: kemalcr/kemal
|
github: kemalcr/kemal
|
||||||
version: ~> 1.1.2
|
version: ~> 1.1.2
|
||||||
|
kilt:
|
||||||
|
github: jeromegn/kilt
|
||||||
|
version: ~> 0.6.1
|
||||||
protodec:
|
protodec:
|
||||||
github: iv-org/protodec
|
github: iv-org/protodec
|
||||||
version: ~> 0.1.4
|
version: ~> 0.1.4
|
||||||
|
|
16
src/ext/kemal_content_for.cr
Normal file
16
src/ext/kemal_content_for.cr
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
# Overrides for Kemal's `content_for` macro in order to keep using
|
||||||
|
# kilt as it was before Kemal v1.1.1 (Kemal PR #618).
|
||||||
|
|
||||||
|
require "kemal"
|
||||||
|
require "kilt"
|
||||||
|
|
||||||
|
macro content_for(key, file = __FILE__)
|
||||||
|
%proc = ->() {
|
||||||
|
__kilt_io__ = IO::Memory.new
|
||||||
|
{{ yield }}
|
||||||
|
__kilt_io__.to_s
|
||||||
|
}
|
||||||
|
|
||||||
|
CONTENT_FOR_BLOCKS[{{key}}] = Tuple.new {{file}}, %proc
|
||||||
|
nil
|
||||||
|
end
|
|
@ -16,7 +16,12 @@
|
||||||
|
|
||||||
require "digest/md5"
|
require "digest/md5"
|
||||||
require "file_utils"
|
require "file_utils"
|
||||||
|
|
||||||
|
# Require kemal, kilt, then our own overrides
|
||||||
require "kemal"
|
require "kemal"
|
||||||
|
require "kilt"
|
||||||
|
require "./ext/kemal_content_for.cr"
|
||||||
|
|
||||||
require "athena-negotiation"
|
require "athena-negotiation"
|
||||||
require "openssl/hmac"
|
require "openssl/hmac"
|
||||||
require "option_parser"
|
require "option_parser"
|
||||||
|
|
|
@ -48,13 +48,19 @@ module JSON::Serializable
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
macro templated(filename, template = "template", navbar_search = true)
|
macro templated(_filename, template = "template", navbar_search = true)
|
||||||
navbar_search = {{navbar_search}}
|
navbar_search = {{navbar_search}}
|
||||||
render "src/invidious/views/#{{{filename}}}.ecr", "src/invidious/views/#{{{template}}}.ecr"
|
|
||||||
|
{{ filename = "src/invidious/views/" + _filename + ".ecr" }}
|
||||||
|
{{ layout = "src/invidious/views/" + template + ".ecr" }}
|
||||||
|
|
||||||
|
__content_filename__ = {{filename}}
|
||||||
|
content = Kilt.render({{filename}})
|
||||||
|
Kilt.render({{layout}})
|
||||||
end
|
end
|
||||||
|
|
||||||
macro rendered(filename)
|
macro rendered(filename)
|
||||||
render "src/invidious/views/#{{{filename}}}.ecr"
|
Kilt.render("src/invidious/views/#{{{filename}}}.ecr")
|
||||||
end
|
end
|
||||||
|
|
||||||
# Similar to Kemals halt method but works in a
|
# Similar to Kemals halt method but works in a
|
||||||
|
|
Loading…
Reference in a new issue