<div dir="ltr">faz um fork.</div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/9/3 Renato Santos <span dir="ltr"><<a href="mailto:renato.cron@gmail.com" target="_blank">renato.cron@gmail.com</a>></span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Eu pessoalmente não gosto 100% do data-verifier.<div><br></div><div>Ele tem dois 'bugs' que enchem o saco:</div>

<div><br></div><div><a href="https://github.com/gphat/data-verifier/issues/9" target="_blank">https://github.com/gphat/data-verifier/issues/9</a><br>

</div><div><br></div><div>e o cara nunca responde.</div><div><br></div><div>Falta uma flag para dizer se o valor '' é pra ser valido ou virar undef. </div><div><br></div><div>em caso de ints, num, booleans, faz sentido considerar '' como sendo undef, porém, textos podem ser vazios!</div>



<div><br></div><div><br></div><div>Sobre a questão das mensagens, também seria legal poder pegar o motivo do erro.. podia ser um die dentro do post_check e capturar isso.</div><div><br></div><div>ai depois seria crair só outro Data::ManagerFoo que saiba tratar os Data::VerifierFoo</div>



<div><br></div></div><div class="gmail_extra"><div><div class="h5"><br><br><div class="gmail_quote">2013/9/3 Solli Honorio <span dir="ltr"><<a href="mailto:shonorio@gmail.com" target="_blank">shonorio@gmail.com</a>></span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div dir="ltr">Lucas,<div><br></div><div>Obrigado pelo retorno. Ontem a noite estudei o código do Data::Manager e ví que realmente não rola fazer o que eu estava querendo fazer (passar uma pilha de mensagem e receber de acordo com o contexto) e ai estou encaminhando para a mesma solução que você.</div>





<div><br></div><div>Como vc faz com o <span style="font-family:arial,sans-serif;font-size:13px">I18N ?</span></div><div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">O Renato Cron publicou um 'template'  ( </span><span style="font-family:arial,sans-serif"><a href="https://github.com/AwareTI/MyApp" target="_blank">https://github.com/AwareTI/MyApp</a> ) </span><span style="font-size:13px;font-family:arial,sans-serif">de como eles estão utilizando o Data::Manager. Estudei o código e achei engenhoso, mas ainda quero manter um melhor controle do ResultSet porquê quero devolver uma estrutura mais complexa de informação.</span></div>





<div><span style="font-size:13px;font-family:arial,sans-serif"><br></span></div><div><span style="font-size:13px;font-family:arial,sans-serif">Abraços,</span></div><div><span style="font-size:13px;font-family:arial,sans-serif"><br>





</span></div><div><span style="font-size:13px;font-family:arial,sans-serif">Solli Honorio</span></div><div><span style="font-size:13px;font-family:arial,sans-serif"><br></span></div></div><div><div>

<div class="gmail_extra"><br><br>

<div class="gmail_quote">2013/9/3 Lucas Oliveira <span dir="ltr"><<a href="mailto:lucasmateus.oliveira@gmail.com" target="_blank">lucasmateus.oliveira@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div style="word-wrap:break-word"><div><br></div><div><span style="white-space:pre-wrap">       </span>Normalmente eu uso sempre com I18N mas da pra quebrar o galho assim</div><div><br></div><div><code></div><div><div>

<div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(194,27,45)">#!/usr/bin/env perl</div><div style="margin:0px;font-size:11px;font-family:Monaco;min-height:15px"><br></div><div style="margin:0px;font-size:11px;font-family:Monaco">





<span style="color:#b245f3">use </span>common::sense<span style="color:#c13500">;</span></div><div style="margin:0px;font-size:11px;font-family:Monaco"><span style="color:#b245f3">use </span>Data::Manager<span style="color:#c13500">;</span></div>





<div style="margin:0px;font-size:11px;font-family:Monaco"><span style="color:#b245f3">use </span>Data::Verifier<span style="color:#c13500">;</span></div><div style="margin:0px;font-size:11px;font-family:Monaco;min-height:15px">





<br></div></div><div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(178,55,243)"><span style="color:#b245f3">my </span><span style="color:#000000">%</span>msg_data<span style="color:#000000"> </span><span style="color:#c13500">= (</span></div>





<div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(4,51,255)"><span style="color:#c13500">   </span><span style="color:#000000">missing_name_last </span><span style="color:#c13500">=> </span>'Nao foi informado o campo name_last, seu idiota !'<span style="color:#c13500">,</span></div>





<div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(193,53,0)">);</div><div style="margin:0px;font-size:11px;font-family:Monaco;min-height:15px"><br></div><div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(193,53,0)">





<span style="color:#b245f3">sub </span><span style="color:#000000">messages </span>{ <span style="color:#000000">$</span><span style="color:#b237f3">msg_data</span>{<span style="color:#000000">$</span><span style="color:#b237f3">_</span>[<span style="color:#b23100">0</span>]} || <span style="color:#000000">$</span><span style="color:#b237f3">_</span>[<span style="color:#b23100">0</span>] }</div>





<div style="margin:0px;font-size:11px;font-family:Monaco;min-height:15px"><br></div><div style="margin:0px;font-size:11px;font-family:Monaco"><span style="color:#b245f3">my </span>$<span style="color:#b237f3">dm</span> <span style="color:#c13500">= </span>Data::Manager<span style="color:#c13500">-></span><span style="color:#b245f3">new</span><span style="color:#c13500">;</span></div>





<div><div style="margin:0px;font-size:11px;font-family:Monaco"><span style="color:#b245f3">my </span>$<span style="color:#b237f3">dv</span> <span style="color:#c13500">= </span>Data::Verifier<span style="color:#c13500">-></span><span style="color:#b245f3">new</span><span style="color:#c13500">(</span></div>





<div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(193,53,0)">    <span style="color:#000000">filters </span>=> [ <span style="color:#b245f3">qw(trim) </span>],</div><div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(193,53,0)">





        <span style="color:#000000">profile </span>=> {</div></div><div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(193,53,0)">            <span style="color:#000000">name_first </span>=> {</div><div>





<div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(193,53,0)">                <span style="color:#000000">required </span>=> <span style="color:#b23100">1</span>,</div><div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(193,53,0)">





                <span style="color:#000000">type     </span>=> <span style="color:#0433ff">'Str'</span>,</div><div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(193,53,0)">                <span style="color:#000000">filters  </span>=> [ <span style="color:#b245f3">qw(collapse) </span>]</div>





<div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(193,53,0)">            },</div></div><div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(193,53,0)">            <span style="color:#000000">name_last </span>=> {</div>





<div><div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(193,53,0)">                <span style="color:#000000">required </span>=> <span style="color:#b23100">1</span>,</div><div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(193,53,0)">





                <span style="color:#000000">type     </span>=> <span style="color:#0433ff">'Str'</span>,</div><div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(193,53,0)">                <span style="color:#000000">filters  </span>=> [ <span style="color:#b245f3">qw(collapse) </span>]</div>





<div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(193,53,0)">            },</div><div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(193,53,0)">            <span style="color:#000000">age  </span>=> {</div>





<div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(193,53,0)">                <span style="color:#000000">type        </span>=> <span style="color:#0433ff">'Int'</span></div><div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(4,51,255)">





            <span style="color:#c13500">},</span></div><div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(193,53,0)">            <span style="color:#000000">sign </span>=> {</div><div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(193,53,0)">





                <span style="color:#000000">required    </span>=> <span style="color:#b23100">1</span>,</div><div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(193,53,0)">                <span style="color:#000000">type        </span>=> <span style="color:#0433ff">'Str'</span></div>





<div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(4,51,255)">            <span style="color:#c13500">}</span></div><div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(193,53,0)">        }</div>





<div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(193,53,0)">    );</div><div style="margin:0px;font-size:11px;font-family:Monaco;min-height:15px"><br></div></div><div style="margin:0px;font-size:11px;font-family:Monaco">





$<span style="color:#b237f3">dm</span><span style="color:#c13500">-></span>set_verifier<span style="color:#c13500">( </span>name <span style="color:#c13500">=> </span>$<span style="color:#b237f3">dv</span> <span style="color:#c13500">);</span></div>





<div style="margin:0px;font-size:11px;font-family:Monaco">$<span style="color:#b237f3">dm</span><span style="color:#c13500">-></span>verify<span style="color:#c13500">( </span>name <span style="color:#c13500">=> { </span>name_first <span style="color:#c13500">=> </span><span style="color:#0433ff">'Solli' </span><span style="color:#c13500">});</span></div>





<div style="margin:0px;font-size:11px;font-family:Monaco;min-height:15px"><br></div><div style="margin:0px;font-size:11px;font-family:Monaco"><span style="color:#b245f3">if </span><span style="color:#c13500">(</span>!$<span style="color:#b237f3">dm</span><span style="color:#c13500">-></span>success<span style="color:#c13500">) {</span></div>





<div style="margin:0px;font-size:11px;font-family:Monaco"><span style="color:#c13500">   </span><span style="color:#b237f3">print </span>&messages<span style="color:#c13500">( </span>$<span style="color:#b237f3">_</span><span style="color:#c13500">-></span>msgid <span style="color:#c13500">).</span>$<span style="color:#b237f3">/</span></div>





<div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(178,55,243)">      <span style="color:#b245f3">foreach </span><span style="color:#c13500">(</span><span style="color:#000000">@</span>{ $dm->messages->messages }<span style="color:#c13500">);</span></div>





<div style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(193,53,0)">}</div></div><div></code></div><div><br></div><br><div><div>Em 02/09/2013, às 11:10, Solli Honorio <<a href="mailto:shonorio@gmail.com" target="_blank">shonorio@gmail.com</a>> escreveu:</div>





<br><blockquote type="cite"><div><div><div dir="ltr">Pessoal,<div><br></div><div>Estou tentando configurar uma mensagem padronização no Data::Manager, mas não está funcionando. Alguém aqui já utilizou o Data::Manager para saber se é possível fazer isto que eu quero ?</div>







<div><br></div><div>O código abaixo, estou criando uma mensagem e adicionando no Data::Manger, porquê eu imaginei que quando ocorrer o problema dentro do escopo e msgid, eu teria o texto padronizado, mas o que estou recebendo é mais uma pilha de mensagem, mesmo quando não existe o erro.</div>







<div><br></div><div><code></div><div><div><font face="courier new, monospace">#!/usr/bin/env perl</font></div><div><font face="courier new, monospace">use common::sense;</font></div><div><font face="courier new, monospace">use Data::Manager;</font></div>







<div><font face="courier new, monospace">use Data::Verifier;</font></div><div><font face="courier new, monospace">use Data::Printer;</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">my $msg = Message::Stack->new;</font></div>







<div><font face="courier new, monospace">$msg->add({</font></div><div><font face="courier new, monospace">    msgid   => 'missing_name_last',</font></div><div><font face="courier new, monospace">    level   => 'error',</font></div>







<div><font face="courier new, monospace">    scope   => 'name1',</font></div><div><font face="courier new, monospace">    subject => 'name_last',</font></div><div><font face="courier new, monospace">    text    => 'Não foi informado o campo name_last, seu idiota !'} );</font></div>







<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">my $dm = Data::Manager->new( { messages => $msg } );</font></div><div><font face="courier new, monospace">my $dv = Data::Verifier->new(</font></div>







<div><font face="courier new, monospace">    filters => [ qw(trim) ],</font></div><div><font face="courier new, monospace">        profile => {</font></div><div><font face="courier new, monospace">            name => {</font></div>







<div><font face="courier new, monospace">                required => 1,</font></div><div><font face="courier new, monospace">                type     => 'Str',</font></div><div><font face="courier new, monospace">                filters  => [ qw(collapse) ]</font></div>







<div><font face="courier new, monospace">            },</font></div><div><font face="courier new, monospace">            age  => {</font></div><div><font face="courier new, monospace">                type        => 'Int'</font></div>







<div><font face="courier new, monospace">            },</font></div><div><font face="courier new, monospace">            sign => {</font></div><div><font face="courier new, monospace">                required    => 1,</font></div>







<div><font face="courier new, monospace">                type        => 'Str'</font></div><div><font face="courier new, monospace">            }</font></div><div><font face="courier new, monospace">        }</font></div>







<div><font face="courier new, monospace">    );</font></div></div><div><font face="courier new, monospace"><br></font></div><div><pre style="font-size:12px;margin-top:0px;margin-bottom:0px;color:rgb(51,51,51);line-height:18px">



<div style="padding-left:10px"><span><font face="courier new, monospace">};</font></span></div></pre></div><div><font face="courier new, monospace"><br></font></div><div><div><font face="courier new, monospace">$dm->set_verifier('name1', $verifier);</font></div>







<div><font face="courier new, monospace">$dm->verify('name1', { name_last => 'Honorio', name_first => 'Solli' });</font></div><div><font face="courier new, monospace"><br></font></div><div>







<font face="courier new, monospace">my $results = $dm->get_results('name1');</font></div><div><font face="courier new, monospace">my $stack   = $dm->messages_for_scope('name1');</font></div><div><font face="courier new, monospace"><br>







</font></div><div><font face="courier new, monospace">say $results->success;</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">say "Is invalid name_first ", $results->is_invalid('name_first');</font></div>







<div><font face="courier new, monospace">say "Is invalid name_last ",  $results->is_invalid('name_last');  # yes</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">say "Is missing name_first ", $results->is_missing('name_first'); # no</font></div>







<div><font face="courier new, monospace">say "Is missing is_missing ", $results->is_missing('name_last'); # yes</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">say "Missing count ", $results->missing_count;</font></div>







<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">say "Count : ",  $stack->count ;</font></div><div><font face="courier new, monospace">p $stack->get_message( 0 );</font></div>







<div><font face="courier new, monospace">p $stack->get_message( 1 );</font></div></div><div><br></div><div></code></div><div><br></div><div><div><br></div>-- <br>"o animal satisfeito dorme". - Guimarães Rosa
</div></div></div></div><div>
=begin disclaimer<br>   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br> SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>





 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>=end disclaimer<br></div></blockquote></div><br></div><br>=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>"o animal satisfeito dorme". - Guimarães Rosa
</div>
</div></div><br>=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br></div></div><div><span style="color:rgb(51,51,51);font-size:x-small">Saravá,</span></div><div><span style="color:rgb(51,51,51);font-size:x-small">Renato CRON</span></div>



<div><div style="text-align:right"><font size="1" color="#333333"><a href="http://www.renatocron.com/blog/" target="_blank">http://www.renatocron.com/blog/</a></font></div></div><div style="text-align:right"><font size="1" color="#333333"><a href="http://twitter.com/#!/renato_cron" target="_blank">@renato_cron</a></font></div>




</div>
<br>=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Tiago B. Peczenyj<br>Linux User #405772<br><br><a href="http://about.me/peczenyj" target="_blank">http://about.me/peczenyj</a>
</div>