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/Model/File.pm</title>
</head>
<body>
<h1>File Coverage</h1>
<table>
<tr><td class="h" align="right">File:</td><td align="left">lib/Yukki/Model/File.pm</td></tr>
<tr><td class="h" align="right">Coverage:</td><td align="left" class="c0">43.7%</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::Model::File;</td></tr>
<tr><td class="h">2</td><td colspan="7"></td></tr><tr><td class="h">3</td><td><div class="c3">2</div><div class="c3">2</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Model-File-pm--subroutine.html#L3">2</a></div></td><td></td><td><div>13</div><div>7</div></td><td class="s">use v5.24;</td></tr>
<tr><td class="h">4</td><td><div class="c3">2</div><div class="c3">2</div><div class="c3">2</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Model-File-pm--subroutine.html#L4">2</a></div></td><td></td><td><div>7</div><div>2</div><div>10</div></td><td class="s">use utf8;</td></tr>
<tr><td class="h">5</td><td><div class="c3">2</div><div class="c3">2</div><div class="c3">2</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Model-File-pm--subroutine.html#L5">2</a></div></td><td></td><td><div>26</div><div>3</div><div>5</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></td><td></td><td></td><td></td><td></td><td></td><td class="s">extends &#39;Yukki::Model&#39;;</td></tr>
<tr><td class="h">8</td><td colspan="7"></td></tr><tr><td class="h">9</td><td><div class="c3">2</div><div class="c3">2</div><div class="c3">2</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Model-File-pm--subroutine.html#L9">2</a></div></td><td></td><td><div>366</div><div>3</div><div>75</div></td><td class="s">use Class::Load;</td></tr>
<tr><td class="h">10</td><td><div class="c3">2</div><div class="c3">2</div><div class="c3">2</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Model-File-pm--subroutine.html#L10">2</a></div></td><td></td><td><div>185</div><div>476</div><div>80</div></td><td class="s">use Digest::SHA1 qw( sha1_hex );</td></tr>
<tr><td class="h">11</td><td><div class="c3">2</div><div class="c3">2</div><div class="c3">2</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Model-File-pm--subroutine.html#L11">2</a></div></td><td></td><td><div>457</div><div>2299</div><div>68</div></td><td class="s">use Number::Bytes::Human qw( format_bytes );</td></tr>
<tr><td class="h">12</td><td><div class="c3">2</div><div class="c3">2</div><div class="c3">2</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Model-File-pm--subroutine.html#L12">2</a></div></td><td></td><td><div>199</div><div>8794</div><div>56</div></td><td class="s">use LWP::MediaTypes qw( guess_media_type );</td></tr>
<tr><td class="h">13</td><td><div class="c3">2</div><div class="c3">2</div><div class="c3">2</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Model-File-pm--subroutine.html#L13">2</a></div></td><td></td><td><div>7</div><div>5</div><div>19</div></td><td class="s">use Type::Utils;</td></tr>
<tr><td class="h">14</td><td><div class="c3">2</div><div class="c3">2</div><div class="c3">2</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Model-File-pm--subroutine.html#L14">2</a></div></td><td></td><td><div>1863</div><div>3</div><div>13</div></td><td class="s">use Types::Standard qw( Maybe Str );</td></tr>
<tr><td class="h">15</td><td><div class="c3">2</div><div class="c3">2</div><div class="c3">2</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Model-File-pm--subroutine.html#L15">2</a></div></td><td></td><td><div>1048</div><div>3</div><div>11</div></td><td class="s">use Yukki::Error qw( http_throw );</td></tr>
<tr><td class="h">16</td><td colspan="7"></td></tr><tr><td class="h">17</td><td><div class="c3">2</div><div class="c3">2</div><div class="c3">2</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Model-File-pm--subroutine.html#L17">2</a></div></td><td></td><td><div>332</div><div>3</div><div>14</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</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s"># ABSTRACT: the model for loading and saving files in the wiki</td></tr>
<tr><td class="h">20</td><td colspan="7"></td></tr><tr><td class="h">21 - 43</td><td colspan="6"></td><td class="s"><pre>=head1 SYNOPSIS

&nbsp;&nbsp;my $repository = $app-&gt;model(&#39;Repository&#39;, { repository =&gt; &#39;main&#39; });
&nbsp;&nbsp;my $file = $repository-&gt;file({
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; &#39;foobar&#39;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filetype =&gt; &#39;yukki&#39;,
&nbsp;&nbsp;});

=head1 DESCRIPTION

Tools for fetching files from the git repository and storing them there.

=head1 EXTENDS

L&lt;Yukki::Model&gt;

=head1 ATTRIBUTES

=head2 path

This is the path to the file in the repository, but without the file suffix.

=cut</pre></td></tr>
<tr><td class="h">44</td><td colspan="7"></td></tr><tr><td class="h">45</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">has path =&gt; (</td></tr>
<tr><td class="h">46</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;=&gt; &#39;ro&#39;,</td></tr>
<tr><td class="h">47</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;=&gt; Str,</td></tr>
<tr><td class="h">48</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;required&nbsp;&nbsp;&nbsp;=&gt; 1,</td></tr>
<tr><td class="h">49</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">);</td></tr>
<tr><td class="h">50</td><td colspan="7"></td></tr><tr><td class="h">51 - 55</td><td colspan="6"></td><td class="s"><pre>=head2 filetype

The suffix of the file. Defaults to &quot;yukki&quot;.

=cut</pre></td></tr>
<tr><td class="h">56</td><td colspan="7"></td></tr><tr><td class="h">57</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">has filetype =&gt; (</td></tr>
<tr><td class="h">58</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;=&gt; &#39;ro&#39;,</td></tr>
<tr><td class="h">59</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;=&gt; Maybe[Str],</td></tr>
<tr><td class="h">60</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;required&nbsp;&nbsp;&nbsp;=&gt; 1,</td></tr>
<tr><td class="h">61</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;=&gt; &#39;yukki&#39;,</td></tr>
<tr><td class="h">62</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">);</td></tr>
<tr><td class="h">63</td><td colspan="7"></td></tr><tr><td class="h">64 - 69</td><td colspan="6"></td><td class="s"><pre>=head2 repository

This is the the L&lt;Yukki::Model::Repository&gt; the file will be fetched from or
stored into.

=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 repository =&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;=&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;=&gt; class_type(&#39;Yukki::Model::Repository&#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;=&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;handles&nbsp;&nbsp;&nbsp;&nbsp;=&gt; {</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;&nbsp;&nbsp;&nbsp;&nbsp;&#39;make_blob&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; &#39;make_blob&#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;&nbsp;&nbsp;&nbsp;&nbsp;&#39;make_blob_from_file&#39; =&gt; &#39;make_blob_from_file&#39;,</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;find_root&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; &#39;find_root&#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;&nbsp;&nbsp;&nbsp;&nbsp;&#39;branch&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; &#39;branch&#39;,</td></tr>
<tr><td class="h">80</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;show&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; &#39;show&#39;,</td></tr>
<tr><td class="h">81</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;make_tree&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; &#39;make_tree&#39;,</td></tr>
<tr><td class="h">82</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;commit_tree&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; &#39;commit_tree&#39;,</td></tr>
<tr><td class="h">83</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;update_root&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; &#39;update_root&#39;,</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;&#39;find_path&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; &#39;find_path&#39;,</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;&#39;fetch_size&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; &#39;fetch_size&#39;,</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;&#39;repository_name&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; &#39;name&#39;,</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;&nbsp;&nbsp;&nbsp;&nbsp;&#39;author_name&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; &#39;author_name&#39;,</td></tr>
<tr><td class="h">88</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;author_email&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; &#39;author_email&#39;,</td></tr>
<tr><td class="h">89</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;log&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; &#39;log&#39;,</td></tr>
<tr><td class="h">90</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;diff_blobs&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; &#39;diff_blobs&#39;,</td></tr>
<tr><td class="h">91</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">92</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">);</td></tr>
<tr><td class="h">93</td><td colspan="7"></td></tr><tr><td class="h">94 - 100</td><td colspan="6"></td><td class="s"><pre>=head1 METHODS

=head2 BUILDARGS

Allows C&lt;full_path&gt; to be given instead of C&lt;path&gt; and C&lt;filetype&gt;.

=cut</pre></td></tr>
<tr><td class="h">101</td><td colspan="7"></td></tr><tr><td class="h">102</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub BUILDARGS {</td></tr>
<tr><td class="h">103</td><td><div class="c3">1</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Model-File-pm--subroutine.html#L103">1</a></div></td><td><div class="c3">1</div></td><td><div>1680</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $class = shift;</td></tr>
<tr><td class="h">104</td><td colspan="7"></td></tr><tr><td class="h">105</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>2</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my %args;</td></tr>
<tr><td class="h">106</td><td><div class="c3">1</div><div class="c0">0</div><div class="c0">0</div></td><td><div class="c0" title="-/F"><a href="lib-Yukki-Model-File-pm--branch.html#L106">50</a></div></td><td></td><td></td><td></td><td><div>3</div><div>0</div><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;if (@_ == 1) { %args = %{ $_[0] }; }</td></tr>
<tr><td class="h">107</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;else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ %args = @_; }</td></tr>
<tr><td class="h">108</td><td colspan="7"></td></tr><tr><td class="h">109</td><td><div class="c3">1</div></td><td><div class="c0" title="-/F"><a href="lib-Yukki-Model-File-pm--branch.html#L109">50</a></div></td><td></td><td></td><td></td><td><div>3</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;if ($args{full_path}) {</td></tr>
<tr><td class="h">110</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 $full_path = delete $args{full_path};</td></tr>
<tr><td class="h">111</td><td colspan="7"></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;my ($path, $filetype) = $full_path =~ m{^(.*)(?:\.(\w+))?$};</td></tr>
<tr><td class="h">113</td><td colspan="7"></td></tr><tr><td class="h">114</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;$args{path}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= $path;</td></tr>
<tr><td class="h">115</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;$args{filetype} = $filetype;</td></tr>
<tr><td class="h">116</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">117</td><td colspan="7"></td></tr><tr><td class="h">118</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>12</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;return \%args;</td></tr>
<tr><td class="h">119</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">120</td><td colspan="7"></td></tr><tr><td class="h">121 - 126</td><td colspan="6"></td><td class="s"><pre>=head2 full_path

This is the complete path to the file in the repository with the L&lt;/filetype&gt;
tacked onto the end.

=cut</pre></td></tr>
<tr><td class="h">127</td><td colspan="7"></td></tr><tr><td class="h">128</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub full_path {</td></tr>
<tr><td class="h">129</td><td><div class="c3">6</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Model-File-pm--subroutine.html#L129">6</a></div></td><td><div class="c3">1</div></td><td><div>9</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $self = shift;</td></tr>
<tr><td class="h">130</td><td colspan="7"></td></tr><tr><td class="h">131</td><td><div class="c3">6</div></td><td></td><td></td><td></td><td></td><td><div>9</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $full_path;</td></tr>
<tr><td class="h">132</td><td><div class="c3">6</div></td><td><div class="c0" title="T/-"><a href="lib-Yukki-Model-File-pm--branch.html#L132">50</a></div></td><td></td><td></td><td></td><td><div>20</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;if (defined $self-&gt;filetype) {</td></tr>
<tr><td class="h">133</td><td><div class="c3">6</div></td><td></td><td></td><td></td><td></td><td><div>28</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$full_path = join &#39;.&#39;, $self-&gt;path, $self-&gt;filetype;</td></tr>
<tr><td class="h">134</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">135</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;else {</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;&nbsp;&nbsp;&nbsp;&nbsp;$full_path = $self-&gt;path;</td></tr>
<tr><td class="h">137</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">138</td><td colspan="7"></td></tr><tr><td class="h">139</td><td><div class="c3">6</div></td><td></td><td></td><td></td><td></td><td><div>111</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;return $full_path;</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 file_name

This is the base name of the file.

=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 file_name {</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-Model-File-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 = shift;</td></tr>
<tr><td class="h">150</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 $full_path = $self-&gt;full_path;</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 ($file_name) = $full_path =~ m{([^/]+)$};</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;return $file_name;</td></tr>
<tr><td class="h">153</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">154</td><td colspan="7"></td></tr><tr><td class="h">155 - 159</td><td colspan="6"></td><td class="s"><pre>=head2 file_id

This is a SHA-1 of the file name in hex.

=cut</pre></td></tr>
<tr><td class="h">160</td><td colspan="7"></td></tr><tr><td class="h">161</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub file_id {</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-Model-File-pm--subroutine.html#L162">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 = shift;</td></tr>
<tr><td class="h">163</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 sha1_hex($self-&gt;file_name);</td></tr>
<tr><td class="h">164</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">165</td><td colspan="7"></td></tr><tr><td class="h">166 - 170</td><td colspan="6"></td><td class="s"><pre>=head2 object_id

This is the git object ID of the file blob.

=cut</pre></td></tr>
<tr><td class="h">171</td><td colspan="7"></td></tr><tr><td class="h">172</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub object_id {</td></tr>
<tr><td class="h">173</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="lib-Yukki-Model-File-pm--subroutine.html#L173">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 = shift;</td></tr>
<tr><td class="h">174</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 $self-&gt;find_path($self-&gt;full_path);</td></tr>
<tr><td class="h">175</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">176</td><td colspan="7"></td></tr><tr><td class="h">177 - 181</td><td colspan="6"></td><td class="s"><pre>=head2 title

This is the title for the file. For most files this is the file name. For files with the &quot;yukki&quot; L&lt;/filetype&gt;, the title metadata or first heading found in the file is used.

=cut</pre></td></tr>
<tr><td class="h">182</td><td colspan="7"></td></tr><tr><td class="h">183</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub title {</td></tr>
<tr><td class="h">184</td><td><div class="c3">1</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Model-File-pm--subroutine.html#L184">1</a></div></td><td><div class="c3">1</div></td><td><div>72</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $self = shift;</td></tr>
<tr><td class="h">185</td><td colspan="7"></td></tr><tr><td class="h">186</td><td><div class="c3">1</div></td><td><div class="c0" title="T/-"><a href="lib-Yukki-Model-File-pm--branch.html#L186">50</a></div></td><td></td><td></td><td></td><td><div>7</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;if ($self-&gt;filetype eq &#39;yukki&#39;) {</td></tr>
<tr><td class="h">187</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>6</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LINE: for my $line ($self-&gt;fetch) {</td></tr>
<tr><td class="h">188</td><td><div class="c3">1</div></td><td><div class="c0" title="T/-"><a href="lib-Yukki-Model-File-pm--branch.html#L188">50</a></div><div class="c0" title="-/-"><a href="lib-Yukki-Model-File-pm--branch.html#L188">0</a></div></td><td></td><td></td><td></td><td><div>14342</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($line =~ /^#\s*(.*)$/) {</td></tr>
<tr><td class="h">189</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>493</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $1;</td></tr>
<tr><td class="h">190</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">191</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;elsif ($line =~ /:/) {</td></tr>
<tr><td class="h">192</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;my ($name, $value) = split m{\s*:\s*}, $line, 2;</td></tr>
<tr><td class="h">193</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="lib-Yukki-Model-File-pm--branch.html#L193">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;&nbsp;&nbsp;&nbsp;&nbsp;return $value if lc($name) eq &#39;title&#39;;</td></tr>
<tr><td class="h">194</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">195</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;else {</td></tr>
<tr><td class="h">196</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;last LINE;</td></tr>
<tr><td class="h">197</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">198</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">199</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">200</td><td colspan="7"></td></tr><tr><td class="h">201</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 $title = $self-&gt;file_name;</td></tr>
<tr><td class="h">202</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;$title =~ s/\.(\w+)$//g;</td></tr>
<tr><td class="h">203</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 $title;</td></tr>
<tr><td class="h">204</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">205</td><td colspan="7"></td></tr><tr><td class="h">206 - 210</td><td colspan="6"></td><td class="s"><pre>=head2 file_size

This is the size of the file in bytes.

=cut</pre></td></tr>
<tr><td class="h">211</td><td colspan="7"></td></tr><tr><td class="h">212</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub file_size {</td></tr>
<tr><td class="h">213</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="lib-Yukki-Model-File-pm--subroutine.html#L213">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 = shift;</td></tr>
<tr><td class="h">214</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 $self-&gt;fetch_size($self-&gt;full_path);</td></tr>
<tr><td class="h">215</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">216</td><td colspan="7"></td></tr><tr><td class="h">217 - 221</td><td colspan="6"></td><td class="s"><pre>=head2 formatted_file_size

This returns a human-readable version of the file size.

=cut</pre></td></tr>
<tr><td class="h">222</td><td colspan="7"></td></tr><tr><td class="h">223</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub formatted_file_size {</td></tr>
<tr><td class="h">224</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="lib-Yukki-Model-File-pm--subroutine.html#L224">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 = shift;</td></tr>
<tr><td class="h">225</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 format_bytes($self-&gt;file_size);</td></tr>
<tr><td class="h">226</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">227</td><td colspan="7"></td></tr><tr><td class="h">228 - 232</td><td colspan="6"></td><td class="s"><pre>=head2 media_type

This is the MIME type detected for the file.

=cut</pre></td></tr>
<tr><td class="h">233</td><td colspan="7"></td></tr><tr><td class="h">234</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub media_type {</td></tr>
<tr><td class="h">235</td><td><div class="c3">2</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Model-File-pm--subroutine.html#L235">2</a></div></td><td><div class="c3">1</div></td><td><div>6</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $self = shift;</td></tr>
<tr><td class="h">236</td><td><div class="c3">2</div></td><td></td><td></td><td></td><td></td><td><div>8</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;return guess_media_type($self-&gt;full_path);</td></tr>
<tr><td class="h">237</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">238</td><td colspan="7"></td></tr><tr><td class="h">239 - 256</td><td colspan="6"></td><td class="s"><pre>=head2 store

&nbsp;&nbsp;$file-&gt;store({
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;content =&gt; &#39;text to put in file...&#39;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comment =&gt; &#39;comment describing the change&#39;,
&nbsp;&nbsp;});

&nbsp;&nbsp;# OR

&nbsp;&nbsp;$file-&gt;store({
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filename =&gt; &#39;file.pdf&#39;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comment&nbsp;&nbsp;=&gt; &#39;comment describing the change&#39;,
&nbsp;&nbsp;});

This stores a new version of the file, either from the given content string or a
named local file.

=cut</pre></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">sub store {</td></tr>
<tr><td class="h">259</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="lib-Yukki-Model-File-pm--subroutine.html#L259">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">260</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 $path = $self-&gt;full_path;</td></tr>
<tr><td class="h">261</td><td colspan="7"></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;my (@parts) = split m{/}, $path;</td></tr>
<tr><td class="h">263</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 $blob_name = $parts[-1];</td></tr>
<tr><td class="h">264</td><td colspan="7"></td></tr><tr><td class="h">265</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 $object_id;</td></tr>
<tr><td class="h">266</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="lib-Yukki-Model-File-pm--branch.html#L266">0</a></div><div class="c0" title="-/-"><a href="lib-Yukki-Model-File-pm--branch.html#L266">0</a></div></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;if ($params-&gt;{content}) {</td></tr>
<tr><td class="h">267</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;$object_id = $self-&gt;make_blob($blob_name, $params-&gt;{content});</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;&nbsp;}</td></tr>
<tr><td class="h">269</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;elsif ($params-&gt;{filename}) {</td></tr>
<tr><td class="h">270</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;$object_id = $self-&gt;make_blob_from_file($blob_name, $params-&gt;{filename});</td></tr>
<tr><td class="h">271</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">272</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="lib-Yukki-Model-File-pm--branch.html#L272">0</a></div></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;http_throw(&quot;unable to create blob for $path&quot;) unless $object_id;</td></tr>
<tr><td class="h">273</td><td colspan="7"></td></tr><tr><td class="h">274</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 $old_tree_id = $self-&gt;find_root;</td></tr>
<tr><td class="h">275</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="lib-Yukki-Model-File-pm--branch.html#L275">0</a></div></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;http_throw(&quot;unable to locate original tree ID for &quot;.$self-&gt;branch)</td></tr>
<tr><td class="h">276</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unless $old_tree_id;</td></tr>
<tr><td class="h">277</td><td colspan="7"></td></tr><tr><td class="h">278</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 $new_tree_id = $self-&gt;make_tree($old_tree_id, \@parts, $object_id);</td></tr>
<tr><td class="h">279</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="lib-Yukki-Model-File-pm--branch.html#L279">0</a></div></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;http_throw(&quot;unable to create the new tree containing $path\n&quot;)</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;&nbsp;&nbsp;&nbsp;&nbsp;unless $new_tree_id;</td></tr>
<tr><td class="h">281</td><td colspan="7"></td></tr><tr><td class="h">282</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 $commit_id = $self-&gt;commit_tree($old_tree_id, $new_tree_id, $params-&gt;{comment});</td></tr>
<tr><td class="h">283</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="lib-Yukki-Model-File-pm--branch.html#L283">0</a></div></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;http_throw(&quot;unable to commit the new tree containing $path\n&quot;)</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;&nbsp;&nbsp;&nbsp;&nbsp;unless $commit_id;</td></tr>
<tr><td class="h">285</td><td colspan="7"></td></tr><tr><td class="h">286</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;$self-&gt;update_root($old_tree_id, $commit_id);</td></tr>
<tr><td class="h">287</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">288</td><td colspan="7"></td></tr><tr><td class="h">289 - 298</td><td colspan="6"></td><td class="s"><pre>=head2 rename

&nbsp;&nbsp;my $new_file = $file-&gt;rename({
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;full_path =&gt; &#39;renamed/to/path.yukki&#39;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comment&nbsp;&nbsp;&nbsp;=&gt; &#39;renamed the file&#39;,
&nbsp;&nbsp;});

Renames the file within the repository. When complete, this method returns a reference to the L&lt;Yukki::Model::File&gt; object representing the new path.

=cut</pre></td></tr>
<tr><td class="h">299</td><td colspan="7"></td></tr><tr><td class="h">300</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub rename {</td></tr>
<tr><td class="h">301</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="lib-Yukki-Model-File-pm--subroutine.html#L301">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">302</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 $old_path = $self-&gt;full_path;</td></tr>
<tr><td class="h">303</td><td colspan="7"></td></tr><tr><td class="h">304</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 (@new_parts) = split m{/}, $params-&gt;{full_path};</td></tr>
<tr><td class="h">305</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 (@old_parts) = split m{/}, $old_path;</td></tr>
<tr><td class="h">306</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 $blob_name = $old_parts[-1];</td></tr>
<tr><td class="h">307</td><td colspan="7"></td></tr><tr><td class="h">308</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 $object_id = $self-&gt;object_id;</td></tr>
<tr><td class="h">309</td><td colspan="7"></td></tr><tr><td class="h">310</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 $old_tree_id = $self-&gt;find_root;</td></tr>
<tr><td class="h">311</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="lib-Yukki-Model-File-pm--branch.html#L311">0</a></div></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;http_throw(&quot;unable to locate original tree ID for &quot;.$self-&gt;branch)</td></tr>
<tr><td class="h">312</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unless $old_tree_id;</td></tr>
<tr><td class="h">313</td><td colspan="7"></td></tr><tr><td class="h">314</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 $new_tree_id = $self-&gt;make_tree(</td></tr>
<tr><td class="h">315</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$old_tree_id, \@old_parts, \@new_parts, $object_id);</td></tr>
<tr><td class="h">316</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="lib-Yukki-Model-File-pm--branch.html#L316">0</a></div></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;http_throw(&quot;unable to create the new tree renaming $old_path to $params-&gt;{full_path}\n&quot;)</td></tr>
<tr><td class="h">317</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unless $new_tree_id;</td></tr>
<tr><td class="h">318</td><td colspan="7"></td></tr><tr><td class="h">319</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 $commit_id = $self-&gt;commit_tree($old_tree_id, $new_tree_id, $params-&gt;{comment});</td></tr>
<tr><td class="h">320</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="lib-Yukki-Model-File-pm--branch.html#L320">0</a></div></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;http_throw(&quot;unable to commit the new tree renaming $old_path to $params-&gt;{full_path}\n&quot;)</td></tr>
<tr><td class="h">321</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unless $commit_id;</td></tr>
<tr><td class="h">322</td><td colspan="7"></td></tr><tr><td class="h">323</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;$self-&gt;update_root($old_tree_id, $commit_id);</td></tr>
<tr><td class="h">324</td><td colspan="7"></td></tr><tr><td class="h">325</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;return Yukki::Model::File-&gt;new(</td></tr>
<tr><td class="h">326</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; $self-&gt;app,</td></tr>
<tr><td class="h">327</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;repository =&gt; $self-&gt;repository,</td></tr>
<tr><td class="h">328</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;full_path&nbsp;&nbsp;=&gt; $params-&gt;{full_path},</td></tr>
<tr><td class="h">329</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;);</td></tr>
<tr><td class="h">330</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">331</td><td colspan="7"></td></tr><tr><td class="h">332 - 338</td><td colspan="6"></td><td class="s"><pre>=head2 remove

&nbsp;&nbsp;$self-&gt;remove({ comment =&gt; &#39;removed the file&#39; });

Removes the file from the repostory. The file is not permanently deleted as it still exists in the version history. However, as of this writing, the API here does not provide any means for getting at a deleted file.

=cut</pre></td></tr>
<tr><td class="h">339</td><td colspan="7"></td></tr><tr><td class="h">340</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub remove {</td></tr>
<tr><td class="h">341</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="lib-Yukki-Model-File-pm--subroutine.html#L341">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">342</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 $old_path = $self-&gt;full_path;</td></tr>
<tr><td class="h">343</td><td colspan="7"></td></tr><tr><td class="h">344</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 (@old_parts) = split m{/}, $old_path;</td></tr>
<tr><td class="h">345</td><td colspan="7"></td></tr><tr><td class="h">346</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 $old_tree_id = $self-&gt;find_root;</td></tr>
<tr><td class="h">347</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="lib-Yukki-Model-File-pm--branch.html#L347">0</a></div></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;http_throw(&quot;unable to locate original tree ID for &quot;.$self-&gt;branch)</td></tr>
<tr><td class="h">348</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unless $old_tree_id;</td></tr>
<tr><td class="h">349</td><td colspan="7"></td></tr><tr><td class="h">350</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 $new_tree_id = $self-&gt;make_tree($old_tree_id, \@old_parts);</td></tr>
<tr><td class="h">351</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="lib-Yukki-Model-File-pm--branch.html#L351">0</a></div></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;http_throw(&quot;unable to create the new tree removing $old_path\n&quot;)</td></tr>
<tr><td class="h">352</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unless $new_tree_id;</td></tr>
<tr><td class="h">353</td><td colspan="7"></td></tr><tr><td class="h">354</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 $commit_id = $self-&gt;commit_tree($old_tree_id, $new_tree_id, $params-&gt;{comment});</td></tr>
<tr><td class="h">355</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="lib-Yukki-Model-File-pm--branch.html#L355">0</a></div></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;http_throw(&quot;unable to commit the new tree removing $old_path\n&quot;)</td></tr>
<tr><td class="h">356</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unless $commit_id;</td></tr>
<tr><td class="h">357</td><td colspan="7"></td></tr><tr><td class="h">358</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;$self-&gt;update_root($old_tree_id, $commit_id);</td></tr>
<tr><td class="h">359</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">360</td><td colspan="7"></td></tr><tr><td class="h">361 - 365</td><td colspan="6"></td><td class="s"><pre>=head2 exists

Returns true if the file exists in the repository already.

=cut</pre></td></tr>
<tr><td class="h">366</td><td colspan="7"></td></tr><tr><td class="h">367</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub exists {</td></tr>
<tr><td class="h">368</td><td><div class="c3">1</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Model-File-pm--subroutine.html#L368">1</a></div></td><td><div class="c3">1</div></td><td><div>1</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $self = shift;</td></tr>
<tr><td class="h">369</td><td colspan="7"></td></tr><tr><td class="h">370</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 $path = $self-&gt;full_path;</td></tr>
<tr><td class="h">371</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>13</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;return $self-&gt;find_path($path);</td></tr>
<tr><td class="h">372</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">373</td><td colspan="7"></td></tr><tr><td class="h">374 - 381</td><td colspan="6"></td><td class="s"><pre>=head2 fetch

&nbsp;&nbsp;my $content = $self-&gt;fetch;
&nbsp;&nbsp;my @lines&nbsp;&nbsp;&nbsp;= $self-&gt;fetch;

Returns the contents of the file.

=cut</pre></td></tr>
<tr><td class="h">382</td><td colspan="7"></td></tr><tr><td class="h">383</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub fetch {</td></tr>
<tr><td class="h">384</td><td><div class="c3">2</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Model-File-pm--subroutine.html#L384">2</a></div></td><td><div class="c3">1</div></td><td><div>4</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $self = shift;</td></tr>
<tr><td class="h">385</td><td colspan="7"></td></tr><tr><td class="h">386</td><td><div class="c3">2</div></td><td></td><td></td><td></td><td></td><td><div>7</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $path = $self-&gt;full_path;</td></tr>
<tr><td class="h">387</td><td><div class="c3">2</div></td><td></td><td></td><td></td><td></td><td><div>33</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $object_id = $self-&gt;find_path($path);</td></tr>
<tr><td class="h">388</td><td colspan="7"></td></tr><tr><td class="h">389</td><td><div class="c3">2</div></td><td><div class="c0" title="-/F"><a href="lib-Yukki-Model-File-pm--branch.html#L389">50</a></div></td><td></td><td></td><td></td><td><div>18</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;return unless defined $object_id;</td></tr>
<tr><td class="h">390</td><td colspan="7"></td></tr><tr><td class="h">391</td><td><div class="c3">2</div></td><td></td><td></td><td></td><td></td><td><div>114</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;return $self-&gt;show($object_id);</td></tr>
<tr><td class="h">392</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">393</td><td colspan="7"></td></tr><tr><td class="h">394 - 400</td><td colspan="6"></td><td class="s"><pre>=head2 has_format

&nbsp;&nbsp;my $yes_or_no = $self-&gt;has_format($media_type);

Returns true if the named media type has a format plugin.

=cut</pre></td></tr>
<tr><td class="h">401</td><td colspan="7"></td></tr><tr><td class="h">402</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub has_format {</td></tr>
<tr><td class="h">403</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="lib-Yukki-Model-File-pm--subroutine.html#L403">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, $media_type) = @_;</td></tr>
<tr><td class="h">404</td><td><div class="c0">0</div></td><td></td><td><div class="c0"><a href="lib-Yukki-Model-File-pm--condition.html#L404">0</a></div></td><td></td><td></td><td><div>0</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;$media_type //= $self-&gt;media_type;</td></tr>
<tr><td class="h">405</td><td colspan="7"></td></tr><tr><td class="h">406</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 @formatters = $self-&gt;app-&gt;formatter_plugins;</td></tr>
<tr><td class="h">407</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;for my $formatter (@formatters) {</td></tr>
<tr><td class="h">408</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="lib-Yukki-Model-File-pm--branch.html#L408">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;return 1 if $formatter-&gt;has_format($media_type);</td></tr>
<tr><td class="h">409</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">410</td><td colspan="7"></td></tr><tr><td class="h">411</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 &#39;&#39;;</td></tr>
<tr><td class="h">412</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">413</td><td colspan="7"></td></tr><tr><td class="h">414 - 420</td><td colspan="6"></td><td class="s"><pre>=head2 fetch_formatted

&nbsp;&nbsp;my $html_content = $self-&gt;fetch_formatted($ctx);

Returns the contents of the file. If there are any configured formatter plugins for the media type of the file, those will be used to return the file.

=cut</pre></td></tr>
<tr><td class="h">421</td><td colspan="7"></td></tr><tr><td class="h">422</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub fetch_formatted {</td></tr>
<tr><td class="h">423</td><td><div class="c3">1</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Model-File-pm--subroutine.html#L423">1</a></div></td><td><div class="c3">1</div></td><td><div>4</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my ($self, $ctx, $position) = @_;</td></tr>
<tr><td class="h">424</td><td><div class="c3">1</div></td><td></td><td><div class="c0"><a href="lib-Yukki-Model-File-pm--condition.html#L424">50</a></div></td><td></td><td></td><td><div>6</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;$position //= 0;</td></tr>
<tr><td class="h">425</td><td colspan="7"></td></tr><tr><td class="h">426</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>8</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $media_type = $self-&gt;media_type;</td></tr>
<tr><td class="h">427</td><td colspan="7"></td></tr><tr><td class="h">428</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>92</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $formatter;</td></tr>
<tr><td class="h">429</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>27</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;for my $plugin ($self-&gt;app-&gt;formatter_plugins) {</td></tr>
<tr><td class="h">430</td><td><div class="c3">1</div></td><td><div class="c0" title="T/-"><a href="lib-Yukki-Model-File-pm--branch.html#L430">50</a></div></td><td></td><td></td><td></td><td><div>14</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $plugin-&gt;format({</td></tr>
<tr><td class="h">431</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;context&nbsp;&nbsp;&nbsp;&nbsp;=&gt; $ctx,</td></tr>
<tr><td class="h">432</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;file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; $self,</td></tr>
<tr><td class="h">433</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;position&nbsp;&nbsp;&nbsp;=&gt; $position,</td></tr>
<tr><td class="h">434</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 $plugin-&gt;has_format($media_type);</td></tr>
<tr><td class="h">435</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">436</td><td colspan="7"></td></tr><tr><td class="h">437</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;return $self-&gt;fetch;</td></tr>
<tr><td class="h">438</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">439</td><td colspan="7"></td></tr><tr><td class="h">440 - 478</td><td colspan="6"></td><td class="s"><pre>=head2 history

&nbsp;&nbsp;my @revisions = $self-&gt;history;

Returns a list of revisions. Each revision is a hash with the following keys:

=over

=item object_id

The object ID of the commit.

=item author_name

The name of the commti author.

=item date

The date the commit was made.

=item time_ago

A string showing how long ago the edit took place.

=item comment

The comment the author made about the comment.

=item lines_added

Number of lines added.

=item lines_removed

Number of lines removed.

=back

=cut</pre></td></tr>
<tr><td class="h">479</td><td colspan="7"></td></tr><tr><td class="h">480</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub history {</td></tr>
<tr><td class="h">481</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="lib-Yukki-Model-File-pm--subroutine.html#L481">0</a></div></td><td><div class="c3">1</div></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $self = shift;</td></tr>
<tr><td class="h">482</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;return $self-&gt;log($self-&gt;full_path);</td></tr>
<tr><td class="h">483</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">484</td><td colspan="7"></td></tr><tr><td class="h">485 - 496</td><td colspan="6"></td><td class="s"><pre>=head2 diff

&nbsp;&nbsp;my @chunks = $self-&gt;diff(&#39;a939fe...&#39;, &#39;b7763d...&#39;);

Given two object IDs, returns a list of chunks showing the difference between two revisions of this path. Each chunk is a two element array. The first element is the type of chunk and the second is any detail for that chunk.

The types are:

&nbsp;&nbsp;&nbsp;&nbsp;&quot;+&quot;&nbsp;&nbsp;&nbsp;&nbsp;This chunk was added to the second revision.
&nbsp;&nbsp;&nbsp;&nbsp;&quot;-&quot;&nbsp;&nbsp;&nbsp;&nbsp;This chunk was removed in the second revision.
&nbsp;&nbsp;&nbsp;&nbsp;&quot; &quot;&nbsp;&nbsp;&nbsp;&nbsp;This chunk is the same in both revisions.
=cut</pre></td></tr>
<tr><td class="h">497</td><td colspan="7"></td></tr><tr><td class="h">498</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub diff {</td></tr>
<tr><td class="h">499</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="lib-Yukki-Model-File-pm--subroutine.html#L499">0</a></div></td><td><div class="c3">1</div></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my ($self, $object_id_1, $object_id_2) = @_;</td></tr>
<tr><td class="h">500</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;return $self-&gt;diff_blobs($self-&gt;full_path, $object_id_1, $object_id_2);</td></tr>
<tr><td class="h">501</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">502</td><td colspan="7"></td></tr><tr><td class="h">503 - 511</td><td colspan="6"></td><td class="s"><pre>=head2 file_preview

&nbsp;&nbsp;my $file_preview = $self-&gt;file_preview(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;content =&gt; $content,
&nbsp;&nbsp;);

Takes this file and returns a L&lt;Yukki::Model::FilePreview&gt; object, with the file contents &quot;replaced&quot; by the given content.

=cut</pre></td></tr>
<tr><td class="h">512</td><td colspan="7"></td></tr><tr><td class="h">513</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub file_preview {</td></tr>
<tr><td class="h">514</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="lib-Yukki-Model-File-pm--subroutine.html#L514">0</a></div></td><td><div class="c3">1</div></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my ($self, %params) = @_;</td></tr>
<tr><td class="h">515</td><td colspan="7"></td></tr><tr><td class="h">516</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;Class::Load::load_class(&#39;Yukki::Model::FilePreview&#39;);</td></tr>
<tr><td class="h">517</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;return Yukki::Model::FilePreview-&gt;new(</td></tr>
<tr><td class="h">518</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%params,</td></tr>
<tr><td class="h">519</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; $self-&gt;app,</td></tr>
<tr><td class="h">520</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;repository =&gt; $self-&gt;repository,</td></tr>
<tr><td class="h">521</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; $self-&gt;path,</td></tr>
<tr><td class="h">522</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">523</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">524</td><td colspan="7"></td></tr><tr><td class="h">525 - 531</td><td colspan="6"></td><td class="s"><pre>=head2 list_files

&nbsp;&nbsp;my @files = $self-&gt;list_files;

List the files attached to/under this file path.

=cut</pre></td></tr>
<tr><td class="h">532</td><td colspan="7"></td></tr><tr><td class="h">533</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub list_files {</td></tr>
<tr><td class="h">534</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="lib-Yukki-Model-File-pm--subroutine.html#L534">0</a></div></td><td><div class="c3">1</div></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my ($self) = @_;</td></tr>
<tr><td class="h">535</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;return $self-&gt;repository-&gt;list_files($self-&gt;path);</td></tr>
<tr><td class="h">536</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">537</td><td colspan="7"></td></tr><tr><td class="h">538 - 552</td><td colspan="6"></td><td class="s"><pre>=head2 parent

&nbsp;&nbsp;my $parent = $self-&gt;parent;

Return a L&lt;Yukki::Model::File&gt; representing the parent path of the current file within the current repository. For example, if the current L&lt;path&gt; is:

&nbsp;&nbsp;foo/bar/baz.pdf

the parent of it will be:

&nbsp;&nbsp;foo/bar.yukki

This returns C&lt;undef&gt; if the current file is at the root of the repository.

=cut</pre></td></tr>
<tr><td class="h">553</td><td colspan="7"></td></tr><tr><td class="h">554</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub parent {</td></tr>
<tr><td class="h">555</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="lib-Yukki-Model-File-pm--subroutine.html#L555">0</a></div></td><td><div class="c3">1</div></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $self = shift;</td></tr>
<tr><td class="h">556</td><td colspan="7"></td></tr><tr><td class="h">557</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my @parts = split m{/}, $self-&gt;path;</td></tr>
<tr><td class="h">558</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="lib-Yukki-Model-File-pm--branch.html#L558">0</a></div></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;return if @parts == 1;</td></tr>
<tr><td class="h">559</td><td colspan="7"></td></tr><tr><td class="h">560</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;pop @parts;</td></tr>
<tr><td class="h">561</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;return Yukki::Model::File-&gt;new(</td></tr>
<tr><td class="h">562</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; $self-&gt;app,</td></tr>
<tr><td class="h">563</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;repository =&gt; $self-&gt;repository,</td></tr>
<tr><td class="h">564</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; join(&#39;/&#39;, @parts),</td></tr>
<tr><td class="h">565</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">566</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">567</td><td colspan="7"></td></tr><tr><td class="h">568 - 572</td><td colspan="6"></td><td class="s"><pre>=head2 branch

Returns the repository branch to which this file belongs.

=cut</pre></td></tr>
<tr><td class="h">573</td><td colspan="7"></td></tr><tr><td class="h">574</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">1;</td></tr>
</table>
</body>
</html>