forked from midou/invidious
		
	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:
		| @@ -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
									
									
									
									
									
										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 "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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user