<!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/Role/Savable.pm</title>
</head>
<body>
<h1>File Coverage</h1>
<table>
<tr><td class="h" align="right">File:</td><td align="left">lib/Yukki/Role/Savable.pm</td></tr>
<tr><td class="h" align="right">Coverage:</td><td align="left" class="c0">64.1%</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::Role::Savable;</td></tr>
<tr><td class="h">2</td><td colspan="7"></td></tr><tr><td class="h">3</td><td><div class="c3">4</div><div class="c3">4</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Role-Savable-pm--subroutine.html#L3">4</a></div></td><td></td><td><div>14275</div><div>11</div></td><td class="s">use v5.24;</td></tr>
<tr><td class="h">4</td><td><div class="c3">4</div><div class="c3">4</div><div class="c3">4</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Role-Savable-pm--subroutine.html#L4">4</a></div></td><td></td><td><div>13</div><div>19</div><div>18</div></td><td class="s">use utf8;</td></tr>
<tr><td class="h">5</td><td><div class="c3">4</div><div class="c3">4</div><div class="c3">4</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Role-Savable-pm--subroutine.html#L5">4</a></div></td><td></td><td><div>53</div><div>5</div><div>19</div></td><td class="s">use Moo::Role;</td></tr>
<tr><td class="h">6</td><td colspan="7"></td></tr><tr><td class="h">7</td><td><div class="c3">4</div><div class="c3">4</div><div class="c3">4</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Role-Savable-pm--subroutine.html#L7">4</a></div></td><td></td><td><div>1022</div><div>5</div><div>155</div></td><td class="s">use Scalar::Util qw( blessed );</td></tr>
<tr><td class="h">8</td><td><div class="c3">4</div><div class="c3">4</div><div class="c3">4</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Role-Savable-pm--subroutine.html#L8">4</a></div></td><td></td><td><div>1425</div><div>11385</div><div>450</div></td><td class="s">use YAML qw( Dump Load );</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"># ABSTRACT: Provides a mechanism for YAML-izing objects</td></tr>
<tr><td class="h">11</td><td colspan="7"></td></tr><tr><td class="h">12 - 44</td><td colspan="6"></td><td class="s"><pre>=head1 SYNOPSIS
package Yukki::Things;
use v5.24;
use Moo;
with 'Yukki::Role::Savable';
has foo => ( is => 'ro' );
has bar => ( is => 'ro' );
sub savable_attributes { qw( foo bar ) }
my $things = Yukki::Things->new(foo => 1, bar => 2);
path('file.yaml')->spew_utf8($things->dump_yaml);
my $things = Yukki::Things->load_yaml(path('file.yaml')->slurp_utf8);
say $things->foo; #> 1
say $things->bar; #> 2
=head1 DESCRIPTION
This is intended to provide L<Yukki> with a nice, neat way to save and load some configuration objects in a standard way.
=head1 REQUIRED METHODS
=head2 savable_attributes
my @attr = $obj->savable_attributes;
Returns the list of attributes to save in the YAML.
=cut</pre></td></tr>
<tr><td class="h">45</td><td colspan="7"></td></tr><tr><td class="h">46</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">requires 'savable_attributes';</td></tr>
<tr><td class="h">47</td><td colspan="7"></td></tr><tr><td class="h">48 - 56</td><td colspan="6"></td><td class="s"><pre>=head1 METHODS
=head2 dump_yaml
my $yaml_text = $obj->dump_yaml;
This converts the object to YAML and returns the ext.
=cut</pre></td></tr>
<tr><td class="h">57</td><td colspan="7"></td></tr><tr><td class="h">58</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub dump_yaml {</td></tr>
<tr><td class="h">59</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="lib-Yukki-Role-Savable-pm--subroutine.html#L59">0</a></div></td><td><div class="c3">1</div></td><td><div>0</div></td><td class="s"> my $self = shift;</td></tr>
<tr><td class="h">60</td><td colspan="7"></td></tr><tr><td class="h">61</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s"> my %output;</td></tr>
<tr><td class="h">62</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s"> for my $attr ($self->savable_attributes) {</td></tr>
<tr><td class="h">63</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s"> my $v = $self->$attr;</td></tr>
<tr><td class="h">64</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="lib-Yukki-Role-Savable-pm--branch.html#L64">0</a></div></td><td><div class="c0"><a href="lib-Yukki-Role-Savable-pm--condition.html#L64">0</a></div></td><td></td><td></td><td><div>0</div></td><td class="s"> if (blessed $v && $v->does('Yukki::Role::Savable')) {</td></tr>
<tr><td class="h">65</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s"> $v = $v->dump_yaml;</td></tr>
<tr><td class="h">66</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
<tr><td class="h">67</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s"> $output{ $attr } = $v;</td></tr>
<tr><td class="h">68</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
<tr><td class="h">69</td><td colspan="7"></td></tr><tr><td class="h">70</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s"> return Dump(\%output);</td></tr>
<tr><td class="h">71</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">72</td><td colspan="7"></td></tr><tr><td class="h">73 - 79</td><td colspan="6"></td><td class="s"><pre>=head2 load_yaml
my $obj = $class->load_yaml($yaml_text);
This constructs a new class from the data loaded from the given YAML text.
=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">sub load_yaml {</td></tr>
<tr><td class="h">82</td><td><div class="c3">1</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Role-Savable-pm--subroutine.html#L82">1</a></div></td><td><div class="c3">1</div></td><td><div>138</div></td><td class="s"> my ($class, $yaml) = @_;</td></tr>
<tr><td class="h">83</td><td colspan="7"></td></tr><tr><td class="h">84</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>5</div></td><td class="s"> my $input = Load($yaml);</td></tr>
<tr><td class="h">85</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>2510</div></td><td class="s"> $class->new($input);</td></tr>
<tr><td class="h">86</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">87</td><td colspan="7"></td></tr><tr><td class="h">88</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">1;</td></tr>
</table>
</body>
</html>