Red.git | docs/coverage/report-data/ | Red-Model.html


<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>RaCoCo result: Red::Model</title>
	<link rel="stylesheet"
				href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
				integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
				crossorigin="anonymous">
	<style>
      pre.code::before {
          counter-reset: listing;
      }

      pre.code span {
          counter-increment: listing;
      }

      pre.code span::before {
          content: counter(listing) ". ";
      }

      .coverage-green {
          background-color: #32CD32;
          /*color-blind
          background-color: #00CED1;
          /**/
      }

      .coverage-red {
          background-color: #fa8072;
      }

      .coverage-purple {
          background-color: #9370DB;
      }
	</style>
</head>
<body>
<div class="container">
	<div class="row mt-5 mb-3">
		<div class="col-12">
			<div class="page-header">
				<h1>Red::Model 88.2%</h1>
			</div>
		</div>
	</div>
	<div class="row justify-content-md-center">
		<div class="col-md-10">
			<pre class="code">
<span class="coverage-green">use Red::AST;</span>
<span class="coverage-no"></span>
<span class="coverage-no">=head2 Red::Model</span>
<span class="coverage-no"></span>
<span class="coverage-no">#| Base role for models</span>
<span class="coverage-green">unit role Red::Model;</span>
<span class="coverage-no"></span>
<span class="coverage-red">has $!filter;</span>
<span class="coverage-no">#method gist { self.^attributes; #`{self.perl} }</span>
<span class="coverage-no"></span>
<span class="coverage-green">multi method perl(::?CLASS:D:) {</span>
<span class="coverage-green">    my @attrs = self.^attributes.grep({ !.^can(&quot;relationship-ast&quot;) &amp;&amp; .has_accessor}).map: {</span>
<span class="coverage-green">        &quot;{ .name.substr(2) } =&gt; { .get_value(self).perl }&quot;</span>
<span class="coverage-no">    }</span>
<span class="coverage-green">    &quot;{ self.^name }.new({ @attrs.join: &quot;, &quot; })&quot;</span>
<span class="coverage-no">}</span>
<span class="coverage-no"></span>
<span class="coverage-green">method new(*%pars) is hidden-from-backtrace {</span>
<span class="coverage-green">    my @columns = self.^columns;</span>
<span class="coverage-green">    for @columns -&gt; \col {</span>
<span class="coverage-green">        my $name = col.name.substr: 2;</span>
<span class="coverage-green">        if %pars{$name}:exists {</span>
<span class="coverage-green">            my \value = %pars{$name};</span>
<span class="coverage-green">            my $is-rtype = col.type.?is-red-type(col.type);</span>
<span class="coverage-green">            die X::TypeCheck::Assignment.new(symbol =&gt; col.name, got =&gt; value, expected =&gt; col.type)</span>
<span class="coverage-red">                unless ( !$is-rtype &amp;&amp; value ~~ col.type ) || ( $is-rtype &amp;&amp; col.type.red-type-accepts: value.WHAT );</span>
<span class="coverage-no">        }</span>
<span class="coverage-no">    }</span>
<span class="coverage-green">    nextwith |%pars</span>
<span class="coverage-no">}</span>
			</pre>
		</div>
	</div>
</div>
</body>
</html>