Added internal documentation links

This commit is contained in:
Stéphane Goetz
2015-06-29 16:16:39 +02:00
committed by Stéphane Goetz
parent 60b50919b4
commit 5791fccea8
10 changed files with 154 additions and 10 deletions

View File

@ -0,0 +1,20 @@
<?php namespace Todaymade\Daux\Format\Confluence\CommonMark;
use League\CommonMark\Environment;
class CommonMarkConverter extends \Todaymade\Daux\Format\Base\CommonMark\CommonMarkConverter
{
protected function getLinkRenderer(Environment $environment)
{
return new LinkRenderer($environment->getConfig('daux'));
}
protected function extendEnvironment(Environment $environment)
{
parent::extendEnvironment($environment);
//Add code renderer
$environment->addBlockRenderer('FencedCode', new FencedCodeRenderer());
$environment->addBlockRenderer('IndentedCode', new IndentedCodeRenderer());
}
}

View File

@ -1,4 +1,4 @@
<?php namespace Todaymade\Daux\Format\Confluence;
<?php namespace Todaymade\Daux\Format\Confluence\CommonMark;
use League\CommonMark\Block\Element\AbstractBlock;
use League\CommonMark\Block\Element\FencedCode;

View File

@ -1,4 +1,4 @@
<?php namespace Todaymade\Daux\Format\Confluence;
<?php namespace Todaymade\Daux\Format\Confluence\CommonMark;
use League\CommonMark\Block\Element\AbstractBlock;
use League\CommonMark\Block\Element\IndentedCode;

View File

@ -0,0 +1,43 @@
<?php namespace Todaymade\Daux\Format\Confluence\CommonMark;
use League\CommonMark\HtmlElement;
use League\CommonMark\HtmlRendererInterface;
use League\CommonMark\Inline\Element\AbstractInline;
use League\CommonMark\Inline\Element\Link;
class LinkRenderer extends \Todaymade\Daux\Format\Base\CommonMark\LinkRenderer
{
/**
* @param Link $inline
* @param HtmlRendererInterface $htmlRenderer
*
* @return HtmlElement
*/
public function render(AbstractInline $inline, HtmlRendererInterface $htmlRenderer)
{
// Default handling
$element = parent::render($inline, $htmlRenderer);
$url = $inline->getUrl();
if (empty($url) || $url[0] != '!') {
return $element;
}
//Internal links
$file = $this->resolveInternalFile(ltrim($url, "!"));
$link_props = [
'ri:content-title' => trim($this->daux['confluence']['prefix']) . " " . $file->getTitle(),
'ri:space-key' => $this->daux['confluence']['space_id']
];
$page = strval(new HtmlElement('ri:page', $link_props, '', true));
$children = $htmlRenderer->renderInlines($inline->getChildren());
if (strpos($children, "<") !== false) {
$children = '<ac:link-body>' . $children . '</ac:link-body>';
} else {
$children = '<ac:plain-text-link-body><![CDATA[' . $children . ']]></ac:plain-text-link-body>';
}
return new HtmlElement('ac:link', [], $page . $children);
}
}

View File

@ -1,26 +0,0 @@
<?php namespace Todaymade\Daux\Format\Confluence;
use League\CommonMark\DocParser;
use League\CommonMark\Environment;
use League\CommonMark\HtmlRenderer;
class CommonMarkConverter extends \League\CommonMark\CommonMarkConverter
{
/**
* Create a new commonmark converter instance.
*
* @param array $config
*/
public function __construct(array $config = array())
{
$environment = Environment::createCommonMarkEnvironment();
$environment->mergeConfig($config);
//Add code renderer
$environment->addBlockRenderer('FencedCode', new FencedCodeRenderer());
$environment->addBlockRenderer('IndentedCode', new IndentedCodeRenderer());
$this->docParser = new DocParser($environment);
$this->htmlRenderer = new HtmlRenderer($environment);
}
}

View File

@ -2,6 +2,7 @@
use DOMDocument;
use Todaymade\Daux\DauxHelper;
use Todaymade\Daux\Format\Confluence\CommonMark\CommonMarkConverter;
class MarkdownPage extends \Todaymade\Daux\Format\Base\MarkdownPage
{
@ -9,7 +10,7 @@ class MarkdownPage extends \Todaymade\Daux\Format\Base\MarkdownPage
protected function getMarkdownConverter()
{
return new CommonMarkConverter();
return new CommonMarkConverter(['daux' => $this->params]);
}
protected function generatePage()
@ -80,7 +81,6 @@ class MarkdownPage extends \Todaymade\Daux\Format\Base\MarkdownPage
private function createImageTag($filename, $attributes)
{
$img = "<ac:image";
foreach ($attributes as $name => $value) {