summaryrefslogtree/nfs/website.git//.wiki commitdiff
path: root/src/web/helpers/markdown.php
blob: 5279a1f665361f37e964ee470c2b8c4482a9260d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php /* Copyright (c) 2024 Freya Murphy */

class MarkdownParser {

	private $parsedown;

	function __construct() {
		$this->parsedown = new ParsedownExtra();
	}

    /**
     * @return array<string,mixed>
     */
    function parse(string $path): array {
		$content = file_get_contents($path);
		$data = array(
			'meta' => array(),
			'content' => $content
		);
		if (str_starts_with($content, '---')) {
			$parts = explode('---', $content);
			$data['content'] = trim(implode('---', array_slice($parts, 2)));
			$meta = array_filter(explode("\n", $parts[1]), fn($x) => $x != '');
			foreach ($meta as $set) {
				$parts = explode(": ", $set);
				$key = trim($parts[0]);
				$value = trim($parts[1]);
				$data['meta'][$key] = $value;
			}

		}
		$data['content'] = $this->parsedown->text($data['content']);
		return $data;
	}

}