Criando arquivos retorno com Ruby

setembro 22, 2007 às 12:24 pm | Publicado em Ruby | Deixe um comentário

É difícil encontrar um sistema que nunca precisou gerar ou ler um arquivo texto, muitos servem para comunicação entre banco e sistemas financeiros, aqueles velhos e complexos layouts com intermináveis tamanhos e formatos de string.
E eu não poderia fugir a regra, e tive que criar algo assim em um sistema ruby, (a como adoro o ruby), e não foi surpresa nenhuma saber que o ruby tinha isto pronto, bastava somente escrever algumas linhas de códigos e usar os métodos certos com a classe string e pum pronto.
Para fazer isto basta somente invocar o método ljust justificar com elementos a esquerda (left) e rjust para justificar com elementos a direita (right).

Ficaria algo mais ou menos assim com um layout pré-definido:

Campo Tamanho Mascara Exemplo Observação
Cnpj/cpf 14 99999999999999 012345678901 Preencher com 0 (zeros)
Nome 50 AAAAAA Fabiano Rech Preencher com espaços
Telefone 20 999999999999 123456789 Preencher com espaços

Dado o modelo anterior, caso tivéssemos os dados a seguir:

Cpnj/cpf: 123456
Nome: Fabiano Rech
telefone: 654321

Teríamos a seguinte linha:

“12345600000000fabiano rech 654321 ”
* O wordpress não considera os espaços em branco, mas posso garantir que eles existem 🙂

Para gerar isto, foi relativamente fácil, vejam como usei o método ljust:

irb(main):001:0> nome="fabiano rech"
=> "fabiano rech"
irb(main):002:0> cpf="123456"
=> "123456"
irb(main):003:0> telefone="654321"
=> "654321"
irb(main):004:0> linha=cpf.ljust(14, '0')
+nome.ljust(50)
+telefone.ljust(20)
=> "12345600000000fabiano rech                                      654321
"
irb(main):005:0>

Veja estes passos, cpf.ljust(14, “0”) aqui indico que a string cpf deve ser justificada a esquerda no tamanho 14 com o que faltar com 0 (zeros) e nome.just(50) aqui é quase o mesmo que nome.ljust(50, ‘’) so que de uma forma mais clean, ele justificara a esquerda com espaços em branco.
Caso seja necessário justificar a direita basta usar o rjust que os parâmetros são os mesmos.
Bom é isto, acredito que possam ou devam existir formas mais inteligentes ou fáceis de resolver isto, mas para min funcionou perfeitamente.

Deixe um comentário »

RSS feed for comments on this post. TrackBack URI

Deixe um comentário

Blog no WordPress.com.
Entries e comentários feeds.