convert to autocracy
[mdref/mdref] / mdref / Action.php
1 <?php
2
3 namespace mdref;
4
5 use http\Controller\Observer;
6
7 class Action extends Observer
8 {
9 function update(\SplSubject $ctl) {
10 /* @var \http\Controller $ctl */
11 try {
12 $payload = $ctl->getPayload();
13 $request = $ctl->getRequest();
14
15 $finder = new Finder($this->baseUrl, REFS);
16 $url = new \http\Url($request->getRequestUrl());
17 if (!$path = $finder->find($url)) {
18 $path = new Path;
19 }
20
21 $payload->baseUrl = $this->baseUrl;
22 $payload->requestUrl = $url;
23
24 $payload->listing = new RefListing($path,
25 $finder->glob($path, "/[_a-zA-Z]*.md"));
26
27 if ($path->isFile()) {
28 $payload->markdown = new Markdown($path);
29 $payload->sublisting = new RefListing($path,
30 $finder->glob($path, "/[_a-z]*.md"));
31 } else if ($path($url)->isFile("")) {
32 $payload->markdown = $path->toHtml();
33 } else if (strcmp($url, $this->baseUrl)) {
34 throw new \http\Controller\Exception(404, "Could not find '$url'");
35 }
36 } catch (\Exception $e) {
37 $payload->baseUrl = $this->baseUrl;
38 $ctl->getPayload()->exception = $e;
39 }
40 }
41 }