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
このコミットが含まれているのは:
Samantaz Fox 2022-04-10 22:53:03 +02:00
コミット 1f66d7ef74
この署名に対応する既知のキーがデータベースに存在しません
GPGキーID: F42821059186176E
5個のファイルの変更37行の追加3行の削除

ファイルの表示

@ -20,6 +20,10 @@ shards:
git: https://github.com/kemalcr/kemal.git
version: 1.1.2
kilt:
git: https://github.com/jeromegn/kilt.git
version: 0.6.1
lsquic:
git: https://github.com/iv-org/lsquic.cr.git
version: 2.18.1-2

ファイルの表示

@ -19,6 +19,9 @@ dependencies:
kemal:
github: kemalcr/kemal
version: ~> 1.1.2
kilt:
github: jeromegn/kilt
version: ~> 0.6.1
protodec:
github: iv-org/protodec
version: ~> 0.1.4

16
src/ext/kemal_content_for.cr ノーマルファイル
ファイルの表示

@ -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 "file_utils"
# Require kemal, kilt, then our own overrides
require "kemal"
require "kilt"
require "./ext/kemal_content_for.cr"
require "athena-negotiation"
require "openssl/hmac"
require "option_parser"

ファイルの表示

@ -48,13 +48,19 @@ module JSON::Serializable
end
end
macro templated(filename, template = "template", navbar_search = true)
macro templated(_filename, template = "template", navbar_search = true)
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
macro rendered(filename)
render "src/invidious/views/#{{{filename}}}.ecr"
Kilt.render("src/invidious/views/#{{{filename}}}.ecr")
end
# Similar to Kemals halt method but works in a