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.