Initial release dedicated to β-Doku project
At this point, toolkit provides DokuWiki API for Gemini protocol
Read DokuWiki and convert to Gemini
$reader = new \Yggverse\Gemini\Dokuwiki\Reader( // optional regex rule set array );
Get or change existing regex rule (or just skip by using build-in set)
echo $reader->setRule( '/subject/ui', 'replacement' );
Convert DokuWiki text to Gemini markup
As wiki has lot of inline links, to make converted document well-readable, this method does not replace links with new line => macros, but uses inline context: Name ( URL ).
This model useful with Reader::getLinks method, that for example appends all those related links to the document footer.
If you don't like this implementation, feel free to change it by Reader::setRule method!
echo $reader->toGemini( file_get_contents( '/host/data/pages/index.txt' ) );
Get document title
$gemini = $reader->toGemini( file_get_contents( '/host/data/pages/index.txt' ) ); echo $reader->getH1( $gemini );
Get document links
$gemini = $reader->toGemini( file_get_contents( '/host/data/pages/index.txt' ) ); echo $reader->getLinks( $gemini );
Provides methods for simple and secure interaction with DokuWiki file storage
$filesystem = new \Yggverse\Gemini\Dokuwiki\Filesystem( '/host/data' // storage location );
Return simple array of all files in storage
var_dump ( $filesystem->getList( 'hello:world' ) );
Return all files under the storage folder in tree format
var_dump ( $filesystem->getTree( 'hello:world' ) );
Return pages under the given data directory
var_dump ( $filesystem->getPagePathsByPath( // absolute path to target data directory (e.g. Filesystem::getDirectoryPathByUri) ) );
Return absolute path to stored page file
var_dump ( $filesystem->getPagePathByUri( 'hello:world' ) );
Return page URI in dokuwiki:format
var_dump ( $filesystem->getPageUriByPath( '/full/path/to/page.txt' ) );
Return absolute path to stored media file
var_dump ( $filesystem->getMediaPathByUri( 'hello:world' ) );
Return file MIME if path match storage item
var_dump ( $filesystem->getMimeByPath( '/full/path/to/page.txt' ) );
Return file content if path match storage item
var_dump ( $filesystem->getDataByPath( '/full/path/to/page.txt' ) );
Check path exist and match storage item
var_dump ( $filesystem->isPath( '/full/path/to/page.txt' ) );
Useful methods to minify controller codebase
$helper = new \Yggverse\Gemini\Dokuwiki\Helper( new \Yggverse\Gemini\Dokuwiki\Filesystem(), new \Yggverse\Gemini\Dokuwiki\Reader() );
Return simple array of children section links in Gemini format
var_dump ( $helper->getChildrenSectionLinksByUri( 'hello:world' ) );
Return simple array of children page links in Gemini format
var_dump ( $helper->getChildrenPageLinksByUri( 'hello:world' ) );
Return page link (that contain document name) in Gemini format
var_dump ( $helper->getPageLinkByPath( $filesystem->getPagePathByUri( 'hello:world' ) ) );