summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--shard.lock4
-rw-r--r--shard.yml3
-rw-r--r--src/ext/kemal_content_for.cr16
-rw-r--r--src/invidious.cr5
-rw-r--r--src/invidious/helpers/macros.cr12
5 files changed, 37 insertions, 3 deletions
diff --git a/shard.lock b/shard.lock
index 6cc20230..cdce1160 100644
--- a/shard.lock
+++ b/shard.lock
@@ -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
diff --git a/shard.yml b/shard.yml
index 76e67846..9c9b0d37 100644
--- a/shard.yml
+++ b/shard.yml
@@ -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
diff --git a/src/ext/kemal_content_for.cr b/src/ext/kemal_content_for.cr
new file mode 100644
index 00000000..a4f3fd96
--- /dev/null
+++ b/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
diff --git a/src/invidious.cr b/src/invidious.cr
index 9f3d5d10..631a6e78 100644
--- a/src/invidious.cr
+++ b/src/invidious.cr
@@ -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"
diff --git a/src/invidious/helpers/macros.cr b/src/invidious/helpers/macros.cr
index 75df1612..43e7171b 100644
--- a/src/invidious/helpers/macros.cr
+++ b/src/invidious/helpers/macros.cr
@@ -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