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:
Samantaz Fox 2022-04-10 22:53:03 +02:00
parent 84b6429ca6
commit 1f66d7ef74
No known key found for this signature in database
GPG key ID: F42821059186176E
5 changed files with 37 additions and 3 deletions

View file

@ -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

View file

@ -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

View 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

View file

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

View file

@ -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