inital commit
[pharext/pharext.org] / app / bootstrap / plates.php
1 <?php
2
3 namespace app;
4
5 require_once __DIR__."/config.php";
6 require_once __DIR__."/web.php";
7
8 use League\Plates;
9
10 use http\Env\Request;
11 use http\Env\Response;
12
13 use merry\Config;
14
15 $injector->share(Plates\Engine::class)
16 ->define(Plates\Engine::class, [
17 ":directory" => __DIR__."/../views",
18 ":fileExtension" => "phtml"
19 ])
20 ->prepare(Plates\Engine::class, function(Plates\Engine $view) use($injector) {
21 $view->addData([
22 "config" => $injector->make(Config::class),
23 "baseUrl" => $injector->make(BaseUrl::class),
24 "request" => $injector->make(Request::class),
25 "response" => $injector->make(Response::class),
26 ]);
27 $view->registerFunction("shorten", function($text) {
28 if (strlen($text) < 78) {
29 return $text;
30 }
31 return current(explode("\n", wordwrap($text)))."…";
32 });
33 $view->registerFunction("utc", function($d) {
34 return date_create($d)->setTimeZone(new \DateTimeZone("UTC"));
35 });
36 $view->registerFunction("md", function($string, $file = false) {
37 if ($file) {
38 $md = \MarkdownDocument::createFromStream($string);
39 } else {
40 $md = \MarkdownDocument::createFromString($string);
41 }
42 $md->compile(\MarkdownDocument::AUTOLINK);
43 return $md->getHtml();
44 });
45 });
46