<font face="georgia,serif"><br></font><br><div class="gmail_quote">2010/11/28 Thiago Rondon <span dir="ltr">&lt;<a href="mailto:thiago@aware.com.br">thiago@aware.com.br</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

Em 28-11-2010 16:46, Andre Carneiro escreveu:<div class="im"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Opa! Alguém aí falou em parsers???<br>
<br>
Isso pode ser comigo também!<br>
<br>
<br>
<br>
</blockquote>
<br></div>
Andre,<br>
<br>
Uma maneira de contribuir, seria explicar como funciona o parser do HTML::TreeBuilder::Xpath nos módulos do projeto já existente! Assim poderíamos explicar como alguém pode criar um novo parser dentro do projeto.<br>
<br>
O que acha ? Escrever documentação POD já nos arquivos existentes, como por exemplo neste código:<br>
<br>
<a href="https://github.com/maluco/OpenData-BR/blob/master/lib/OpenData/BR/Federal/PortalTransparencia/Convenios.pm" target="_blank">https://github.com/maluco/OpenData-BR/blob/master/lib/OpenData/BR/Federal/PortalTransparencia/Convenios.pm</a></blockquote>

<div><br></div><div>Pessoal,</div><div><br></div><div>Estou fazendo um trabalho paralelo ao do maluco e tenho &quot;quebrado&quot; as rotinas dessas classes em rotinas separadas de fetch, parsing e storage.</div><div><br>

</div><div>Acabei de alcançar algo funcionável e talvez merge-ável para a coleção de dados &#39;CEIS&#39; (Empresas Sancionadas) do <a href="http://PortalTransparencia.gov.br">PortalTransparencia.gov.br</a>. Acabei de subir para o branch &#39;rearch&#39; no meu fork:</div>

<div><br></div><div><meta http-equiv="content-type" content="text/html; charset=utf-8"><a href="https://github.com/russoz/OpenData-BR/tree/rearch">https://github.com/russoz/OpenData-BR/tree/rearch</a></div><div><br></div>

<div>Para conseguir fazer funcionar e apresentar prova de conceito, tive de fazer algumas pequenas gambis:</div><div><br></div><div>* o role &#39;Provider::Collection&#39; está implementando a funcionalidade do browser (método get(), para ser preciso), mas esse não é um bom lugar para isso.</div>

<div>* o role &#39;Provider&#39;, segundo a idéia original, teria um atributo &#39;loader&#39; que seria do tipo &#39;OpenData::Loader&#39; - e isso implementaria um método &#39;load()&#39; que serviria para carregar os dados em algum repositório (ou canal de comunicação - nada impede que, no futuro tenhamos um loader que jogue os dados em uma file RabbitMQ, ou mesmo IBM MQ, ou um feed RSS, whatever). Como esse role Loader ainda não foi criado, e para simplificar a demonstração, mudei a restrição de Loader para Object, implementei o método &#39;load()&#39; na classe &#39;OpenData::Output::Dumper&#39; e deixei a classe &#39;OpenData::BR::Federal::PortalTransparencia&#39; usando esse &quot;loader&quot; ou &quot;output&quot; por default, ao invés do MongoDB que é o que estava antes.</div>

<div><br></div><div>O código neste branch, agora (19:26), está passando nos testes, e o script ./scripts/<a href="http://portaltransparencia.pl">portaltransparencia.pl</a> está funcionando.</div><div><br></div><div>Antes de refatorar os outros parsers para ficarem como o CEIS, gostaria de ter algum feedback. Rondon &amp; all, por favor os seus $0.02;</div>

<div><br></div><div>[]s,</div></div>-- <br><font face="georgia, serif">Alexei Znamensky [russoz_gmail_com] [<a href="http://russoz.wordpress.com" target="_blank">russoz.wordpress.com</a>] [<a href="http://www.flickr.com/photos/alexeiz" target="_blank">www.flickr.com/photos/alexeiz</a>]<br>

<span style="border-collapse:collapse"><div>«Only love / Can bring the rain / That makes you yearn to the sky»</div></span></font><br>