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 »
Blog no WordPress.com.
Entries e comentários feeds.
Deixe um comentário