diff --git a/example/config.json b/example/config.json index 953a437..8ddaabc 100644 --- a/example/config.json +++ b/example/config.json @@ -20,6 +20,7 @@ }, "string": { + "links":"Links", "actions":"Actions", "main":"Main page", "source":"Source", diff --git a/src/server.php b/src/server.php index 4147252..0fad2cc 100644 --- a/src/server.php +++ b/src/server.php @@ -125,11 +125,48 @@ $server->setHandler( { if ($path = $filesystem->getPagePathByUri($matches[1])) { - // Append extra data + // Init reader + $reader = new \Yggverse\Gemini\Dokuwiki\Reader(); + + // Define base URL + $reader->setMacros( + '~URL:base~', + sprintf( + 'gemini://%s%s/%s', + $config->gemini->server->host, + $config->gemini->server->port == 1965 ? null : ':' . $config->gemini->server->port, + '' // @TODO append relative prefix (:) + ) + ); + + // Convert + $gemini = $reader->toGemini( + file_get_contents( + $path + ) + ); + $lines = [ - PHP_EOL + $gemini ]; + // Get page links + if ($links = $reader->getLinks($gemini)) + { + $lines[] = sprintf( + '## %s', + $config->string->links + ); + + foreach ($links as $link) + { + $lines[] = sprintf( + '=> %s', + $link + ); + } + } + // Append actions header $lines[] = sprintf( '## %s', @@ -161,26 +198,9 @@ $server->setHandler( $lines ); - // Read document - $reader = new \Yggverse\Gemini\Dokuwiki\Reader(); - - // Define base URL - $reader->setMacros( - '~URL:base~', - sprintf( - 'gemini://%s%s/', - $config->gemini->server->host, - $config->gemini->server->port == 1965 ? null : ':' . $config->gemini->server->port - ) - ); - // Return converted response $response->setContent( - $reader->toGemini( - file_get_contents( - $path - ) . $data - ) + $gemini . $data ); return $response;