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/User.pm</title>
</head>
<body>
<h1>File Coverage</h1>
<table>
<tr><td class="h" align="right">File:</td><td align="left">lib/Yukki/User.pm</td></tr>
<tr><td class="h" align="right">Coverage:</td><td align="left" class="c1">86.2%</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::User;</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-User-pm--subroutine.html#L3">2</a></div></td><td></td><td><div>15</div><div>5</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-User-pm--subroutine.html#L4">2</a></div></td><td></td><td><div>7</div><div>3</div><div>8</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-User-pm--subroutine.html#L5">2</a></div></td><td></td><td><div>30</div><div>7</div><div>8</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">with &#39;Yukki::Role::Savable&#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-User-pm--subroutine.html#L9">2</a></div></td><td></td><td><div>456</div><div>3</div><div>14</div></td><td class="s">use Types::Standard qw( Str ArrayRef );</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-User-pm--subroutine.html#L10">2</a></div></td><td></td><td><div>1149</div><div>2</div><div>7</div></td><td class="s">use Yukki::Types qw( LoginName );</td></tr>
<tr><td class="h">11</td><td colspan="7"></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-User-pm--subroutine.html#L12">2</a></div></td><td></td><td><div>639</div><div>2</div><div>11</div></td><td class="s">use namespace::clean;</td></tr>
<tr><td class="h">13</td><td colspan="7"></td></tr><tr><td class="h">14</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s"># ABSTRACT: Encapsulates Yukki users</td></tr>
<tr><td class="h">15</td><td colspan="7"></td></tr><tr><td class="h">16 - 43</td><td colspan="6"></td><td class="s"><pre>=head1 SYNOPSIS

&nbsp;&nbsp;&nbsp;&nbsp;use Yukki::User;

&nbsp;&nbsp;&nbsp;&nbsp;my $user_file = $app-&gt;locate(&#39;user_path&#39;, &#39;bob&#39;);
&nbsp;&nbsp;&nbsp;&nbsp;my $user = Yukki::User-&gt;load_yaml($user_file);

&nbsp;&nbsp;&nbsp;&nbsp;say &quot;login name: &quot;, $user-&gt;login_name;
&nbsp;&nbsp;&nbsp;&nbsp;say &quot;password: &quot;, $user-&gt;password;
&nbsp;&nbsp;&nbsp;&nbsp;say &quot;name: &quot;, $user-&gt;name;
&nbsp;&nbsp;&nbsp;&nbsp;say &quot;email: &quot;, $user-&gt;email;
&nbsp;&nbsp;&nbsp;&nbsp;say &quot;groups: &quot;, join(&#39;, &#39;, $user-&gt;groups-&gt;@*);

=head1 DESCRIPTION

Encapsulates the definition of a user object. Users are defined to provide information about the author of each change in the wiki.

=head1 ROLES

L&lt;Yukki::Role::Savable&gt;

=head1 ATTRIBUTES

=head2 login_name

This is the name the user uses to login.

=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 login_name =&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;&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;&nbsp;=&gt; LoginName,</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;&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 password

This is the hashed password for the user.

=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 password =&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;&nbsp;=&gt; &#39;rw&#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;&nbsp;=&gt; 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;&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">);</td></tr>
<tr><td class="h">62</td><td colspan="7"></td></tr><tr><td class="h">63 - 67</td><td colspan="6"></td><td class="s"><pre>=head2 name

This is the full name of the user, used as the author name on commits.

=cut</pre></td></tr>
<tr><td class="h">68</td><td colspan="7"></td></tr><tr><td class="h">69</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">has name =&gt; (</td></tr>
<tr><td class="h">70</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;rw&#39;,</td></tr>
<tr><td class="h">71</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; Str,</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;required&nbsp;&nbsp;&nbsp;&nbsp;=&gt; 1,</td></tr>
<tr><td class="h">73</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">);</td></tr>
<tr><td class="h">74</td><td colspan="7"></td></tr><tr><td class="h">75 - 79</td><td colspan="6"></td><td class="s"><pre>=head2 email

This is the email address of the user, used to uniquely identify the author in commits.

=cut</pre></td></tr>
<tr><td class="h">80</td><td colspan="7"></td></tr><tr><td class="h">81</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">has email =&gt; (</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;is&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; &#39;rw&#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;isa&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; Str,</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;required&nbsp;&nbsp;&nbsp;&nbsp;=&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">);</td></tr>
<tr><td class="h">86</td><td colspan="7"></td></tr><tr><td class="h">87 - 91</td><td colspan="6"></td><td class="s"><pre>=head2 groups

This is the list of groups to which the user belongs.

=cut</pre></td></tr>
<tr><td class="h">92</td><td colspan="7"></td></tr><tr><td class="h">93</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">has groups =&gt; (</td></tr>
<tr><td class="h">94</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">95</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; ArrayRef[Str],</td></tr>
<tr><td class="h">96</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">97</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">98</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">99</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">);</td></tr>
<tr><td class="h">100</td><td colspan="7"></td></tr><tr><td class="h">101 - 107</td><td colspan="6"></td><td class="s"><pre>=head1 METHODS

=head2 groups_string

Returns the groups concatenated together into a single string.

=cut</pre></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></td><td></td><td><div class="c0"><a href="lib-Yukki-User-pm--subroutine.html#L109">0</a></div></td><td><div class="c3">1</div></td><td></td><td class="s">sub groups_string { join &#39; &#39;, shift-&gt;groups-&gt;@* }</td></tr>
<tr><td class="h">110</td><td colspan="7"></td></tr><tr><td class="h">111 - 115</td><td colspan="6"></td><td class="s"><pre>=head2 savable_attributes

Returns the savable attributes.

=cut</pre></td></tr>
<tr><td class="h">116</td><td colspan="7"></td></tr><tr><td class="h">117</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub savable_attributes {</td></tr>
<tr><td class="h">118</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="lib-Yukki-User-pm--subroutine.html#L118">0</a></div></td><td><div class="c3">1</div></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;qw(</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;&nbsp;&nbsp;&nbsp;&nbsp;login_name</td></tr>
<tr><td class="h">120</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;password</td></tr>
<tr><td class="h">121</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name</td></tr>
<tr><td class="h">122</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;email</td></tr>
<tr><td class="h">123</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;groups</td></tr>
<tr><td class="h">124</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">125</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">126</td><td colspan="7"></td></tr><tr><td class="h">127</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">1;</td></tr>
</table>
</body>
</html>