neves
7/23/2011 - 5:19 PM

README.txt

NOME:ABC LEVANTAMENTOS TOPOGRÁFICOS LTDA
Setor: AGRIMENSURA
Endereço: Rua XV de Novembro, 512 Sl. 55
Bairro: Centro
Cidade: Ponta Grossa
Estado: PR
Cep: 84010-020
Tel.: (42) 3028-2613
Fax: (42) 3028-2613
E-mail: abcmoro@terra.com.br 
Site: www.abctopografia.com.br
NOME:AEROIMAGEM S/A ENGENHARIA E AEROLEVANTAMENTO
Setor: AGRIMENSURA
Endereço: Aeroporto do Bacacheri, S/Nº Hangar 28
Bairro: Bacacheri
Cidade: Curitiba
Estado: PR
Cep: 82501-970
Tel.: (41) 3356-1312
Fax: (41) 3356-3177
E-mail: info@aeroimagem.com
Site: www.aeroimagem.com
# incluir biblioteca padrao do ruby para imprimir variaveis de uma forma amigavel.
require 'pp'

nome_arquivo = 'registros_sequenciais_com_rotulo.txt'
empresas = [] # array para armazenar todos os registros
# abre o arquivo utilizando um bloco,
# colocando o objeto arquivo aberto na variavel |file|
# e fecha o arquivo automaticamente ao fim do bloco
File.open(nome_arquivo, 'r') do |arquivo|
  until arquivo.eof? # pergunta se o arquivo chegou ao fim
    empresa = {}
    # %w cria um array apartir de uma lista de palavras
    campos = %w(nome setor endereco bairro cidade estado cep tel fax email site)

    for campo in campos             # separa a linha pelos 2 pontos em duas partes e pega a ultima.
      empresa[campo] = arquivo.gets.split(':', 2).last.strip
    end
    # as 3 linhas acima podem ser escritas em uma linha mais rubyway:
    # campos.each {|campo| registro[campo] = arquivo.gets.chomp}
    empresas << empresa
  end
end

pp empresas
ABC LEVANTAMENTOS TOPOGRÁFICOS LTDA
AGRIMENSURA
Rua XV de Novembro, 512 Sl. 55
Centro
Ponta Grossa
PR
84010-020
(42) 3028-2613
(42) 3028-2613
abcmoro@terra.com.br 
www.abctopografia.com.br
AEROIMAGEM S/A ENGENHARIA E AEROLEVANTAMENTO
AGRIMENSURA
Aeroporto do Bacacheri, S/Nº Hangar 28
Bacacheri
Curitiba
PR
82501-970
(41) 3356-1312
(41) 3356-3177
info@aeroimagem.com
www.aeroimagem.com
# incluir biblioteca padrao do ruby para imprimir variaveis de uma forma amigavel.
require 'pp'

nome_arquivo = 'registros_sequenciais.txt'
empresas = [] # array para armazenar todos os registros
# abre o arquivo utilizando um bloco,
# colocando o objeto arquivo aberto na variavel |file|
# e fecha o arquivo automaticamente ao fim do bloco
File.open(nome_arquivo, 'r') do |arquivo|
  until arquivo.eof? # pergunta se o arquivo chegou ao fim
    empresa = {}
    # %w cria um array apartir de uma lista de palavras
    campos = %w(nome setor endereco bairro cidade estado cep tel fax email site)
    
    for campo in campos
      empresa[campo] = arquivo.gets.chomp
    end
    # as 3 linhas acima podem ser escritas em uma linha mais rubyway:
    # campos.each {|campo| registro[campo] = arquivo.gets.chomp}
    empresas << empresa
  end
end

pp empresas
NOME:ABC LEVANTAMENTOS TOPOGRÁFICOS LTDA
Setor: AGRIMENSURA
Endereço: Rua XV de Novembro, 512 Sl. 55
Bairro: Centro
Cidade: Ponta Grossa
Estado: PR
Cep: 84010-020
Tel.: (42) 3028-2613
Fax: (42) 3028-2613
E-mail: abcmoro@terra.com.br 
Site: www.abctopografia.com.br
NOME:AEROIMAGEM S/A ENGENHARIA E AEROLEVANTAMENTO
Setor: AGRIMENSURA
Endereço: Aeroporto do Bacacheri, S/Nº Hangar 28
Bairro: Bacacheri
Cidade: Curitiba
Estado: PR
Cep: 82501-970
Tel.: (41) 3356-1312
Fax: (41) 3356-3177
E-mail: info@aeroimagem.com
Site: www.aeroimagem.com
NOME:ABC LEVANTAMENTOS TOPOGR�FICOS LTDA
Setor: AGRIMENSURA
Endere�o: Rua XV de Novembro, 512 Sl. 55
Bairro: Centro
Cidade: Ponta Grossa
Cep: 84010-020
Tel.: (42) 3028-2613
E-mail: abcmoro@terra.com.br 

NOME:AEROIMAGEM S/A ENGENHARIA E AEROLEVANTAMENTO
Setor: AGRIMENSURA
Endere�o: Aeroporto do Bacacheri, S/N� Hangar 28
Bairro: Bacacheri
Cidade: Curitiba
Estado: PR
Cep: 82501-970
Tel.: (41) 3356-1312
Site: www.aeroimagem.com
# para imprimir a saida no formal YAML
require 'yaml'

nome_arquivo = 'opcionais.txt'
empresas = [] # array para armazenar todos os registros
# abre o arquivo utilizando um bloco,
# colocando o objeto arquivo aberto na variavel |file|
# e fecha o arquivo automaticamente ao fim do bloco
File.open(nome_arquivo, 'r') do |arquivo|

  tradutor = { # converte o rotulo do arquivo para um simbolo amigavel
    'NOME'     => :nome,
    'Setor'    => :setor,
    'Endere�o' => :endereco,
    'Bairro'   => :bairro,
    'Cidade'   => :cidade,
    'Estado'   => :estado,
    'Cep'      => :cep,
    'Tel.'     => :tel,
    'Fax'      => :fax,
    'E-mail'   => :email,
    'Site'     => :site
  }

  # cria uma empresa com todos os campos preenchidos com string vazia
  EMPRESA_VAZIA = {}
  for simbolo in tradutor.values
    EMPRESA_VAZIA[simbolo] = ''
  end

  empresa = EMPRESA_VAZIA.dup

  for linha in arquivo
    print linha
    if linha.strip.empty? # se encontrarmos uma linha vazia, quer dizer que o registro terminou
      empresas << empresa
      empresa = EMPRESA_VAZIA.dup
      next # pula para o proximo loop
    end
    rotulo, dado = linha.split ':', 2
    rotulo = tradutor[rotulo.strip]
    empresa[rotulo] = dado.strip
  end
  empresas << empresa # adiciona a ultima empresa antes do fim do arquivo
end

# imprime os registros no formato YAML
print empresas.to_yaml
# incluir biblioteca padrao do ruby para imprimir variaveis de uma forma amigavel.
require 'pp'

nome_arquivo = 'registros_sequenciais.txt'
empresas = [] # array para armazenar todos os registros
# abre o arquivo utilizando um bloco,
# colocando o objeto arquivo aberto na variavel |file|
# e fecha o arquivo automaticamente ao fim do bloco
File.open(nome_arquivo, 'r') do |arquivo|
  until arquivo.eof? # pergunta se o arquivo chegou ao fim
    empresa = {}
    # %w cria um array apartir de uma lista de palavras
    campos = %w(nome setor endereco bairro cidade estado cep tel fax email site)
    
    for campo in campos
      empresa[campo] = arquivo.gets.chomp
    end
    # as 3 linhas acima podem ser escritas em uma linha mais rubyway:
    # campos.each {|campo| registro[campo] = arquivo.gets.chomp}
    empresas << empresa
  end
end

pp empresas
Cada engenheiro pode ter os seguintes campos:
NOME:
Setor:
Endereço:
Bairro:
Cidade:
Estado:
Cep:
Tel.:
Fax:
E-mail:

Sempre nesta ordem, mas alguns podem estar faltando.