The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
<!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!--
This file was generated by Devel::Cover Version 1.26
Devel::Cover is copyright 2001-2012, Paul Johnson (paul@pjcj.net)
Devel::Cover is free. It is licensed under the same terms as Perl itself.
The latest version of Devel::Cover should be available from my homepage:
http://www.pjcj.net
-->
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
    <meta http-equiv="Content-Language" content="en-us"></meta>
    <link rel="stylesheet" type="text/css" href="cover.css"></link>
    <link rel="stylesheet" type="text/css" href="cover.css"></link>
    <title>File Coverage: lib/Yukki/Web/Plugin/YukkiText.pm</title>
</head>
<body>
<h1>File Coverage</h1>
<table>
<tr><td class="h" align="right">File:</td><td align="left">lib/Yukki/Web/Plugin/YukkiText.pm</td></tr>
<tr><td class="h" align="right">Coverage:</td><td align="left" class="c0">39.4%</td></tr>
</table>
<div><br/></div>
<table>
<tr><th>line</th><th>stmt</th><th>bran</th><th>cond</th><th>sub</th><th>pod</th><th>time</th><th>code</th></tr>
<tr><td class="h">1</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">package Yukki::Web::Plugin::YukkiText;</td></tr>
<tr><td class="h">2</td><td colspan="7"></td></tr><tr><td class="h">3</td><td><div class="c3">1</div><div class="c3">1</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--subroutine.html#L3">1</a></div></td><td></td><td><div>500</div><div>3</div></td><td class="s">use v5.24;</td></tr>
<tr><td class="h">4</td><td><div class="c3">1</div><div class="c3">1</div><div class="c3">1</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--subroutine.html#L4">1</a></div></td><td></td><td><div>3</div><div>2</div><div>3</div></td><td class="s">use utf8;</td></tr>
<tr><td class="h">5</td><td><div class="c3">1</div><div class="c3">1</div><div class="c3">1</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--subroutine.html#L5">1</a></div></td><td></td><td><div>10</div><div>4</div><div>2</div></td><td class="s">use Moo;</td></tr>
<tr><td class="h">6</td><td colspan="7"></td></tr><tr><td class="h">7</td><td><div class="c3">1</div><div class="c3">1</div><div class="c3">1</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--subroutine.html#L7">1</a></div></td><td></td><td><div>184</div><div>1</div><div>6</div></td><td class="s">use Type::Utils;</td></tr>
<tr><td class="h">8</td><td><div class="c3">1</div><div class="c3">1</div><div class="c3">1</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--subroutine.html#L8">1</a></div></td><td></td><td><div>986</div><div>1</div><div>6</div></td><td class="s">use Types::Standard qw( HashRef Str );</td></tr>
<tr><td class="h">9</td><td colspan="7"></td></tr><tr><td class="h">10</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">extends &#39;Yukki::Web::Plugin&#39;;</td></tr>
<tr><td class="h">11</td><td colspan="7"></td></tr><tr><td class="h">12</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s"># ABSTRACT: format text/yukki files using markdown, etc.</td></tr>
<tr><td class="h">13</td><td colspan="7"></td></tr><tr><td class="h">14</td><td><div class="c3">1</div><div class="c3">1</div><div class="c3">1</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--subroutine.html#L14">1</a></div></td><td></td><td><div>442</div><div>2</div><div>26</div></td><td class="s">use Text::MultiMarkdown;</td></tr>
<tr><td class="h">15</td><td><div class="c3">1</div><div class="c3">1</div><div class="c3">1</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--subroutine.html#L15">1</a></div></td><td></td><td><div>2</div><div>3</div><div>24</div></td><td class="s">use Try::Tiny;</td></tr>
<tr><td class="h">16</td><td colspan="7"></td></tr><tr><td class="h">17</td><td><div class="c3">1</div><div class="c3">1</div><div class="c3">1</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--subroutine.html#L17">1</a></div></td><td></td><td><div>2</div><div>1</div><div>5</div></td><td class="s">use namespace::clean;</td></tr>
<tr><td class="h">18</td><td colspan="7"></td></tr><tr><td class="h">19 - 49</td><td colspan="6"></td><td class="s"><pre>=head1 SYNOPSIS

&nbsp;&nbsp;# Plugins are not used directly...

&nbsp;&nbsp;my $repo = $self-&gt;model(&#39;Repository&#39;, { name =&gt; &#39;main&#39; });
&nbsp;&nbsp;my $file = $repo-&gt;file({ full_path =&gt; &quot;some-file.yukki&#39; });
&nbsp;&nbsp;my $html = $file-&gt;fetch_formatted($ctx);

=head1 DESCRIPTION

Yukkitext formatting is based on Multi-Markdown, which is an extension to regular markdown that adds tables, metadata, and a few other tidbits. In addition to this, yukkitext adds linking using double-bracket notation:

&nbsp;&nbsp;[[ A Link ]]
&nbsp;&nbsp;[[ ./A Sub-Page Link ]]
&nbsp;&nbsp;[[ ./A Sub-Dir/Sub-Page Link ]]
&nbsp;&nbsp;[[ ./a-sub-dir/sub-page-link.pdf | Sub-Page PDF ]]

This link format is based loosely upon the format used by MojoMojo, which I was using prior to developing Yukki.

It also adds support for format helpers usinga&nbsp;&nbsp;double-curly brace notation:

&nbsp;&nbsp;{{attachment:Path/To/Attachment.pdf}}
&nbsp;&nbsp;{{=:5 + 5}}

=head1 ATTRIBUTES

=head2 html_formatters

This returns the yukkitext formatter for &quot;text/yukki&quot;.

=cut</pre></td></tr>
<tr><td class="h">50</td><td colspan="7"></td></tr><tr><td class="h">51</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">has html_formatters =&gt; (</td></tr>
<tr><td class="h">52</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;is&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; &#39;ro&#39;,</td></tr>
<tr><td class="h">53</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;isa&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; HashRef[Str],</td></tr>
<tr><td class="h">54</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;required&nbsp;&nbsp;&nbsp;&nbsp;=&gt; 1,</td></tr>
<tr><td class="h">55</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; sub { +{</td></tr>
<tr><td class="h">56</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;text/yukki&#39;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; &#39;yukkitext&#39;,</td></tr>
<tr><td class="h">57</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;} },</td></tr>
<tr><td class="h">58</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">);</td></tr>
<tr><td class="h">59</td><td colspan="7"></td></tr><tr><td class="h">60</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">with &#39;Yukki::Web::Plugin::Role::Formatter&#39;;</td></tr>
<tr><td class="h">61</td><td colspan="7"></td></tr><tr><td class="h">62 - 69</td><td colspan="6"></td><td class="s"><pre>=head2 markdown

This is the L&lt;Text::MultiMarkdown&gt; object for rendering L&lt;/yukkitext&gt;. Do not
use.

Provides a C&lt;format_markdown&gt; method delegated to C&lt;markdown&gt;. Do not use.

=cut</pre></td></tr>
<tr><td class="h">70</td><td colspan="7"></td></tr><tr><td class="h">71</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">has markdown =&gt; (</td></tr>
<tr><td class="h">72</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;is&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; &#39;ro&#39;,</td></tr>
<tr><td class="h">73</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;isa&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; class_type(&#39;Text::MultiMarkdown&#39;),</td></tr>
<tr><td class="h">74</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;required&nbsp;&nbsp;&nbsp;&nbsp;=&gt; 1,</td></tr>
<tr><td class="h">75</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;lazy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; 1,</td></tr>
<tr><td class="h">76</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;builder&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; &#39;_build_markdown&#39;,</td></tr>
<tr><td class="h">77</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;handles&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; {</td></tr>
<tr><td class="h">78</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;format_markdown&#39; =&gt; &#39;markdown&#39;,</td></tr>
<tr><td class="h">79</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;},</td></tr>
<tr><td class="h">80</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">);</td></tr>
<tr><td class="h">81</td><td colspan="7"></td></tr><tr><td class="h">82</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub _build_markdown {</td></tr>
<tr><td class="h">83</td><td><div class="c3">1</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--subroutine.html#L83">1</a></div></td><td></td><td><div>40</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;Text::MultiMarkdown-&gt;new(</td></tr>
<tr><td class="h">84</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;markdown_in_html_blocks =&gt; 1,</td></tr>
<tr><td class="h">85</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;heading_ids&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; 0,</td></tr>
<tr><td class="h">86</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strip_metadata&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; 1,</td></tr>
<tr><td class="h">87</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;);</td></tr>
<tr><td class="h">88</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">89</td><td colspan="7"></td></tr><tr><td class="h">90 - 96</td><td colspan="6"></td><td class="s"><pre>=head1 METHODS

=head2 yukkilink

Used to help render yukkilinks. Do not use.

=cut</pre></td></tr>
<tr><td class="h">97</td><td colspan="7"></td></tr><tr><td class="h">98</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub yukkilink {</td></tr>
<tr><td class="h">99</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--subroutine.html#L99">0</a></div></td><td><div class="c3">1</div></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my ($self, $params) = @_;</td></tr>
<tr><td class="h">100</td><td colspan="7"></td></tr><tr><td class="h">101</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= $params-&gt;{file};</td></tr>
<tr><td class="h">102</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $ctx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= $params-&gt;{context};</td></tr>
<tr><td class="h">103</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $repository = $file-&gt;repository_name;</td></tr>
<tr><td class="h">104</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $link&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= $params-&gt;{link};</td></tr>
<tr><td class="h">105</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $label&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= $params-&gt;{label};</td></tr>
<tr><td class="h">106</td><td colspan="7"></td></tr><tr><td class="h">107</td><td><div class="c0">0</div><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;$link =~ s/^\s+//; $link =~ s/\s+$//;</td></tr>
<tr><td class="h">108</td><td colspan="7"></td></tr><tr><td class="h">109</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--branch.html#L109">0</a></div></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my ($repo_name, $local_link) = split /:/, $link, 2 if $link =~ /:/;</td></tr>
<tr><td class="h">110</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--branch.html#L110">0</a></div></td><td><div class="c0"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--condition.html#L110">0</a></div></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;if (defined $repo_name and defined $self-&gt;app-&gt;settings-&gt;{repositories}{$repo_name}) {</td></tr>
<tr><td class="h">111</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$repository = $repo_name;</td></tr>
<tr><td class="h">112</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$link&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= $local_link;</td></tr>
<tr><td class="h">113</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr>
<tr><td class="h">114</td><td colspan="7"></td></tr><tr><td class="h">115</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# If we did not get a label, make the label into the link</td></tr>
<tr><td class="h">116</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--branch.html#L116">0</a></div></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;if (not defined $label) {</td></tr>
<tr><td class="h">117</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;($label) = $link =~ m{([^/]+)$};</td></tr>
<tr><td class="h">118</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$link = $self-&gt;app-&gt;munge_label($link);</td></tr>
<tr><td class="h">119</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr>
<tr><td class="h">120</td><td colspan="7"></td></tr><tr><td class="h">121</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my @base_name;</td></tr>
<tr><td class="h">122</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--branch.html#L122">0</a></div></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;if ($file-&gt;full_path) {</td></tr>
<tr><td class="h">123</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$base_name[0] = $file-&gt;full_path;</td></tr>
<tr><td class="h">124</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$base_name[0] =~ s/\.yukki$//g;</td></tr>
<tr><td class="h">125</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr>
<tr><td class="h">126</td><td colspan="7"></td></tr><tr><td class="h">127</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--branch.html#L127">0</a></div></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;$link = join &#39;/&#39;, @base_name, $link if $link =~ m{^\./};</td></tr>
<tr><td class="h">128</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;$link =~ s{^/}{};</td></tr>
<tr><td class="h">129</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;$link =~ s{/\./}{/}g;</td></tr>
<tr><td class="h">130</td><td colspan="7"></td></tr><tr><td class="h">131</td><td><div class="c0">0</div><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;$label =~ s/^\s*//; $label =~ s/\s*$//;</td></tr>
<tr><td class="h">132</td><td colspan="7"></td></tr><tr><td class="h">133</td><td><div class="c0">0</div><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--subroutine.html#L133">0</a></div></td><td></td><td><div>0</div><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $b = sub { $ctx-&gt;rebase_url($_[0]) };</td></tr>
<tr><td class="h">134</td><td colspan="7"></td></tr><tr><td class="h">135</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $link_repo = $self-&gt;model(&#39;Repository&#39;, { name =&gt; $repository });</td></tr>
<tr><td class="h">136</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $link_file = $link_repo-&gt;file({ full_path =&gt; $link });</td></tr>
<tr><td class="h">137</td><td colspan="7"></td></tr><tr><td class="h">138</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--branch.html#L138">0</a></div></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $class = $link_file-&gt;exists ? &#39;exists&#39; : &#39;not-exists&#39;;</td></tr>
<tr><td class="h">139</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;return qq{&lt;a class=&quot;$class&quot; href=&quot;}.$b-&gt;(&quot;page/view/$repository/$link&quot;).qq{&quot;&gt;$label&lt;/a&gt;};</td></tr>
<tr><td class="h">140</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">141</td><td colspan="7"></td></tr><tr><td class="h">142 - 146</td><td colspan="6"></td><td class="s"><pre>=head2 yukkiplugin

Used to render plugged in markup. Do not use.

=cut</pre></td></tr>
<tr><td class="h">147</td><td colspan="7"></td></tr><tr><td class="h">148</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub yukkiplugin {</td></tr>
<tr><td class="h">149</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--subroutine.html#L149">0</a></div></td><td><div class="c3">1</div></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my ($self, $params) = @_;</td></tr>
<tr><td class="h">150</td><td colspan="7"></td></tr><tr><td class="h">151</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $ctx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= $params-&gt;{context};</td></tr>
<tr><td class="h">152</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $plugin_name = $params-&gt;{plugin_name};</td></tr>
<tr><td class="h">153</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $arg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= $params-&gt;{arg};</td></tr>
<tr><td class="h">154</td><td colspan="7"></td></tr><tr><td class="h">155</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $text;</td></tr>
<tr><td class="h">156</td><td colspan="7"></td></tr><tr><td class="h">157</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my @plugins = $self-&gt;app-&gt;format_helper_plugins;</td></tr>
<tr><td class="h">158</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;PLUGIN: for my $plugin (@plugins) {</td></tr>
<tr><td class="h">159</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $helpers = $plugin-&gt;format_helpers;</td></tr>
<tr><td class="h">160</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--branch.html#L160">0</a></div></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (defined $helpers-&gt;{ $plugin_name }) {</td></tr>
<tr><td class="h">161</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$text = try {</td></tr>
<tr><td class="h">162</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--subroutine.html#L162">0</a></div></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $helper = $helpers-&gt;{ $plugin_name };</td></tr>
<tr><td class="h">163</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$plugin-&gt;$helper({</td></tr>
<tr><td class="h">164</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; $ctx,</td></tr>
<tr><td class="h">165</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; $params-&gt;{file},</td></tr>
<tr><td class="h">166</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;helper_name =&gt; $plugin_name,</td></tr>
<tr><td class="h">167</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; $arg,</td></tr>
<tr><td class="h">168</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});</td></tr>
<tr><td class="h">169</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr>
<tr><td class="h">170</td><td colspan="7"></td></tr><tr><td class="h">171</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch {</td></tr>
<tr><td class="h">172</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--subroutine.html#L172">0</a></div></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;warn &quot;Plugin Error: $_&quot;;</td></tr>
<tr><td class="h">173</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};</td></tr>
<tr><td class="h">174</td><td colspan="7"></td></tr><tr><td class="h">175</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--branch.html#L175">0</a></div></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;last PLUGIN if defined $text;</td></tr>
<tr><td class="h">176</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr>
<tr><td class="h">177</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr>
<tr><td class="h">178</td><td colspan="7"></td></tr><tr><td class="h">179</td><td><div class="c0">0</div></td><td></td><td><div class="c0"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--condition.html#L179">0</a></div></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;$text //= &quot;{{$plugin_name:$arg}}&quot;;</td></tr>
<tr><td class="h">180</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;return $text;</td></tr>
<tr><td class="h">181</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">182</td><td colspan="7"></td></tr><tr><td class="h">183 - 200</td><td colspan="6"></td><td class="s"><pre>=head2 yukkitext

&nbsp;&nbsp;my $html = $view-&gt;yukkitext({
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context&nbsp;&nbsp;&nbsp;&nbsp;=&gt; $ctx,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;repository =&gt; $repository_name,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;page&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; $page,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; $file,
&nbsp;&nbsp;});

Yukkitext is markdown plus some extra stuff. The extra stuff is:

&nbsp;&nbsp;[[ main:/link/to/page.yukki | Link Title ]] - wiki link
&nbsp;&nbsp;[[ /link/to/page.yukki | Link Title ]]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- wiki link
&nbsp;&nbsp;[[ /link/to/page.yukki ]]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- wiki link

&nbsp;&nbsp;{{attachment:file.pdf}}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- attachment URL

=cut</pre></td></tr>
<tr><td class="h">201</td><td colspan="7"></td></tr><tr><td class="h">202</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub yukkitext {</td></tr>
<tr><td class="h">203</td><td><div class="c3">1</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--subroutine.html#L203">1</a></div></td><td><div class="c3">1</div></td><td><div>2</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my ($self, $params) = @_;</td></tr>
<tr><td class="h">204</td><td colspan="7"></td></tr><tr><td class="h">205</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>3</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= $params-&gt;{file};</td></tr>
<tr><td class="h">206</td><td><div class="c3">1</div></td><td></td><td><div class="c0"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--condition.html#L206">50</a></div></td><td></td><td></td><td><div>4</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $position&nbsp;&nbsp;&nbsp;= 0 + ($params-&gt;{position} // -1);</td></tr>
<tr><td class="h">207</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>17</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $repository = $file-&gt;repository_name;</td></tr>
<tr><td class="h">208</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>31</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $yukkitext&nbsp;&nbsp;= $file-&gt;fetch;</td></tr>
<tr><td class="h">209</td><td colspan="7"></td></tr><tr><td class="h">210</td><td><div class="c3">1</div></td><td><div class="c0" title="-/F"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--branch.html#L210">50</a></div></td><td></td><td></td><td></td><td><div>14196</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;$yukkitext =~ s[(.{$position}.*?)$][$1&lt;span id=&quot;yukkitext-caret&quot;&gt;&lt;/span&gt;]sm</td></tr>
<tr><td class="h">211</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if $position &gt;= 0;</td></tr>
<tr><td class="h">212</td><td colspan="7"></td></tr><tr><td class="h">213</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# Yukki Links</td></tr>
<tr><td class="h">214</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>7</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;$yukkitext =~ s{</td></tr>
<tr><td class="h">215</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(?&lt;!\\)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# \ will escape the link</td></tr>
<tr><td class="h">216</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\[\[ \s*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# [[ to start it</td></tr>
<tr><td class="h">217</td><td colspan="7"></td></tr><tr><td class="h">218</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(?: ([\w]+) : )?&nbsp;&nbsp;&nbsp;&nbsp;# repository: is optional</td></tr>
<tr><td class="h">219</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;([^|\]]+) \s*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# link/to/page is mandatory</td></tr>
<tr><td class="h">220</td><td colspan="7"></td></tr><tr><td class="h">221</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(?: \|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# | to split link from label</td></tr>
<tr><td class="h">222</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;([^\]]+)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# a pretty label (needs trimming)</td></tr>
<tr><td class="h">223</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# is optional</td></tr>
<tr><td class="h">224</td><td colspan="7"></td></tr><tr><td class="h">225</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\]\]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# ]] to end</td></tr>
<tr><td class="h">226</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;}{</td></tr>
<tr><td class="h">227</td><td><div class="c0">0</div></td><td></td><td><div class="c0"><a href="lib-Yukki-Web-Plugin-YukkiText-pm--condition.html#L227">0</a></div></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$self-&gt;yukkilink({</td></tr>
<tr><td class="h">228</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%$params,</td></tr>
<tr><td class="h">229</td><td colspan="7"></td></tr><tr><td class="h">230</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;repository =&gt; $1 // $repository,</td></tr>
<tr><td class="h">231</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;link&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; $2,</td></tr>
<tr><td class="h">232</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; $3,</td></tr>
<tr><td class="h">233</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});</td></tr>
<tr><td class="h">234</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;}xeg;</td></tr>
<tr><td class="h">235</td><td colspan="7"></td></tr><tr><td class="h">236</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# Handle escaped links, hide the escape</td></tr>
<tr><td class="h">237</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>4</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;$yukkitext =~ s{</td></tr>
<tr><td class="h">238</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# \ will escape the link</td></tr>
<tr><td class="h">239</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(\[\[ \s*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# [[ to start it</td></tr>
<tr><td class="h">240</td><td colspan="7"></td></tr><tr><td class="h">241</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(?: [\w]+ : )?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# repository: is optional</td></tr>
<tr><td class="h">242</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[^|\]]+ \s*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# link/to/page is mandatory</td></tr>
<tr><td class="h">243</td><td colspan="7"></td></tr><tr><td class="h">244</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(?: \|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# | to split link from label</td></tr>
<tr><td class="h">245</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[^\]]+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# a pretty label (needs trimming)</td></tr>
<tr><td class="h">246</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# is optional</td></tr>
<tr><td class="h">247</td><td colspan="7"></td></tr><tr><td class="h">248</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\]\])&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# ]] to end</td></tr>
<tr><td class="h">249</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;}{$1}gx;</td></tr>
<tr><td class="h">250</td><td colspan="7"></td></tr><tr><td class="h">251</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# Yukki Plugins</td></tr>
<tr><td class="h">252</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>3</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;$yukkitext =~ s{</td></tr>
<tr><td class="h">253</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(?&lt;!\\)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# \ will escape the plugin</td></tr>
<tr><td class="h">254</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\{\{ \s*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# {{ to start it</td></tr>
<tr><td class="h">255</td><td colspan="7"></td></tr><tr><td class="h">256</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;([^:]+) :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# plugin_name: is required</td></tr>
<tr><td class="h">257</td><td colspan="7"></td></tr><tr><td class="h">258</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(.*?)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# plugin arguments</td></tr>
<tr><td class="h">259</td><td colspan="7"></td></tr><tr><td class="h">260</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\}\}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# }} to end</td></tr>
<tr><td class="h">261</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;}{</td></tr>
<tr><td class="h">262</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$self-&gt;yukkiplugin({</td></tr>
<tr><td class="h">263</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%$params,</td></tr>
<tr><td class="h">264</td><td colspan="7"></td></tr><tr><td class="h">265</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plugin_name =&gt; $1,</td></tr>
<tr><td class="h">266</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; $2,</td></tr>
<tr><td class="h">267</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});</td></tr>
<tr><td class="h">268</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;}xegms;</td></tr>
<tr><td class="h">269</td><td colspan="7"></td></tr><tr><td class="h">270</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# Handle the escaped plugin thing</td></tr>
<tr><td class="h">271</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>4</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;$yukkitext =~ s{</td></tr>
<tr><td class="h">272</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# \ will escape the plugin</td></tr>
<tr><td class="h">273</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(\{\{ \s*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# {{ to start it</td></tr>
<tr><td class="h">274</td><td colspan="7"></td></tr><tr><td class="h">275</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[^:]+ :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# plugin_name: is required</td></tr>
<tr><td class="h">276</td><td colspan="7"></td></tr><tr><td class="h">277</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.*?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# plugin arguments</td></tr>
<tr><td class="h">278</td><td colspan="7"></td></tr><tr><td class="h">279</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\}\})&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# }} to end</td></tr>
<tr><td class="h">280</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;}{$1}xgms;</td></tr>
<tr><td class="h">281</td><td colspan="7"></td></tr><tr><td class="h">282</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>49</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $formatted = &#39;&lt;div&gt;&#39; . $self-&gt;format_markdown($yukkitext) . &#39;&lt;/div&gt;&#39;;</td></tr>
<tr><td class="h">283</td><td colspan="7"></td></tr><tr><td class="h">284</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# Just in case markdown mangled the caret marker:</td></tr>
<tr><td class="h">285</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>3318</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;$formatted =~ s[&amp;lt;span id=&quot;yukkitext-caret&quot;&amp;gt;&amp;lt;/span&amp;gt;]</td></tr>
<tr><td class="h">286</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&lt;span id=&quot;yukkitext-caret&quot;&gt;&lt;/span&gt;];</td></tr>
<tr><td class="h">287</td><td colspan="7"></td></tr><tr><td class="h">288</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>22</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;return $formatted;</td></tr>
<tr><td class="h">289</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">290</td><td colspan="7"></td></tr><tr><td class="h">291</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">1;</td></tr>
</table>
</body>
</html>