diff --git a/docs/00_Getting_Started.md b/docs/00_Getting_Started.md
index 7db6f6e..a5809ac 100644
--- a/docs/00_Getting_Started.md
+++ b/docs/00_Getting_Started.md
@@ -367,3 +367,5 @@ If you have a global mime map entry for `.less` files set for the server, you wi
## Support
If you need help using Daux.io, or have found a bug, please create an issue on the GitHub repo.
+
+[Code Highlighting examples](!Examples/Code_Highlighting)
diff --git a/docs/01_Examples/05_Code_Highlighting.md b/docs/01_Examples/05_Code_Highlighting.md
index 5310bb7..dd5bf52 100644
--- a/docs/01_Examples/05_Code_Highlighting.md
+++ b/docs/01_Examples/05_Code_Highlighting.md
@@ -1,5 +1,8 @@
Highlight.js highlights syntax in code examples on blogs, forums and in fact on any web pages. It's very easy to use because it works automatically: finds blocks of code, detects a language, highlights it. [Learn more.](http://softwaremaniacs.org/soft/highlight/en/)
+You can even use [Github Flavored Markdown](!Examples/GitHub_Flavored_Markdown)
+
+
**Python**
@requires_authorization
diff --git a/libs/Format/Confluence/CommonMarkConverter.php b/libs/Format/Base/CommonMark/CommonMarkConverter.php
similarity index 58%
rename from libs/Format/Confluence/CommonMarkConverter.php
rename to libs/Format/Base/CommonMark/CommonMarkConverter.php
index d988022..c907050 100644
--- a/libs/Format/Confluence/CommonMarkConverter.php
+++ b/libs/Format/Base/CommonMark/CommonMarkConverter.php
@@ -1,4 +1,4 @@
-mergeConfig($config);
- //Add code renderer
- $environment->addBlockRenderer('FencedCode', new FencedCodeRenderer());
- $environment->addBlockRenderer('IndentedCode', new IndentedCodeRenderer());
+ $this->extendEnvironment($environment);
$this->docParser = new DocParser($environment);
$this->htmlRenderer = new HtmlRenderer($environment);
}
+
+ protected function getLinkRenderer(Environment $environment)
+ {
+ return new LinkRenderer($environment->getConfig('daux'));
+ }
+
+ protected function extendEnvironment(Environment $environment)
+ {
+ $environment->addInlineRenderer('Link', $this->getLinkRenderer($environment));
+ }
}
diff --git a/libs/Format/Base/CommonMark/LinkRenderer.php b/libs/Format/Base/CommonMark/LinkRenderer.php
new file mode 100644
index 0000000..26e75c4
--- /dev/null
+++ b/libs/Format/Base/CommonMark/LinkRenderer.php
@@ -0,0 +1,63 @@
+daux = $daux;
+ }
+
+ /**
+ * @param $url
+ * @return Entry
+ * @throws Exception
+ */
+ protected function resolveInternalFile($url) {
+
+ $file = DauxHelper::getFile($this->daux['tree'], $url);
+ if ($file) {
+ return $file;
+ }
+
+ $file = DauxHelper::getFile($this->daux['tree'], $url . '.html');
+ if ($file) {
+ return $file;
+ }
+
+ throw new Exception("Could not locate file '$url'");
+ }
+
+ /**
+ * @param Link $inline
+ * @param HtmlRendererInterface $htmlRenderer
+ *
+ * @return HtmlElement
+ */
+ public function render(AbstractInline $inline, HtmlRendererInterface $htmlRenderer)
+ {
+ $element = parent::render($inline, $htmlRenderer);
+
+ $url = $inline->getUrl();
+ if (!empty($url) && $url[0] == '!') {
+ $file = $this->resolveInternalFile(ltrim($url, "!"));
+
+ $element->setAttribute('href', $this->daux['base_url'] . $file->getUrl());
+ }
+
+ return $element;
+ }
+}
diff --git a/libs/Format/Base/MarkdownPage.php b/libs/Format/Base/MarkdownPage.php
index e844b19..ac189ea 100644
--- a/libs/Format/Base/MarkdownPage.php
+++ b/libs/Format/Base/MarkdownPage.php
@@ -1,7 +1,7 @@
file = $file;
}
+ public function getFile()
+ {
+ return $this->file;
+ }
+
public function setParams(Config $params)
{
$this->params = $params;
@@ -33,7 +38,7 @@ abstract class MarkdownPage extends SimplePage
protected function getMarkdownConverter()
{
- return new CommonMarkConverter();
+ return new CommonMarkConverter(['daux' => $this->params]);
}
protected function convertPage($content)
diff --git a/libs/Format/Confluence/CommonMark/CommonMarkConverter.php b/libs/Format/Confluence/CommonMark/CommonMarkConverter.php
new file mode 100644
index 0000000..7685f55
--- /dev/null
+++ b/libs/Format/Confluence/CommonMark/CommonMarkConverter.php
@@ -0,0 +1,20 @@
+getConfig('daux'));
+ }
+
+ protected function extendEnvironment(Environment $environment)
+ {
+ parent::extendEnvironment($environment);
+
+ //Add code renderer
+ $environment->addBlockRenderer('FencedCode', new FencedCodeRenderer());
+ $environment->addBlockRenderer('IndentedCode', new IndentedCodeRenderer());
+ }
+}
diff --git a/libs/Format/Confluence/FencedCodeRenderer.php b/libs/Format/Confluence/CommonMark/FencedCodeRenderer.php
similarity index 97%
rename from libs/Format/Confluence/FencedCodeRenderer.php
rename to libs/Format/Confluence/CommonMark/FencedCodeRenderer.php
index 3c19e27..5d938d5 100644
--- a/libs/Format/Confluence/FencedCodeRenderer.php
+++ b/libs/Format/Confluence/CommonMark/FencedCodeRenderer.php
@@ -1,4 +1,4 @@
-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 = '' . $children . '';
+ } else {
+ $children = '';
+ }
+
+ return new HtmlElement('ac:link', [], $page . $children);
+ }
+}
diff --git a/libs/Format/Confluence/MarkdownPage.php b/libs/Format/Confluence/MarkdownPage.php
index 896af37..93bb4a2 100644
--- a/libs/Format/Confluence/MarkdownPage.php
+++ b/libs/Format/Confluence/MarkdownPage.php
@@ -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 = " $value) {