brcep 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +0 -0
- data/MIT-LICENSE +20 -0
- data/README +0 -0
- data/Rakefile +99 -0
- data/TODO +6 -0
- data/lib/brcep.rb +17 -0
- data/lib/brcep/br_form_options_helper.rb +58 -0
- data/lib/brcep/busca_endereco.rb +42 -0
- data/lib/brcep/version.rb +9 -0
- data/test/br_form_helper_test.rb +29 -0
- data/test/busca_endereco_test.rb +77 -0
- data/test/mocks/zip_22640100.xml +33 -0
- data/test/mocks/zip_invalid.xml +23 -0
- data/test/test_helper.rb +16 -0
- metadata +77 -0
data/CHANGELOG
ADDED
File without changes
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2008 [name of plugin creator]
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README
ADDED
File without changes
|
data/Rakefile
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'rake/testtask'
|
4
|
+
require 'rake/rdoctask'
|
5
|
+
require 'rake/packagetask'
|
6
|
+
require 'rake/gempackagetask'
|
7
|
+
require 'rake/contrib/sshpublisher'
|
8
|
+
require File.join(File.dirname(__FILE__), 'lib', 'brcep', 'version')
|
9
|
+
|
10
|
+
PKG_BUILD = ENV['PKG_BUILD'] ? '.' + ENV['PKG_BUILD'] : ''
|
11
|
+
PKG_NAME = 'brcep'
|
12
|
+
PKG_VERSION = BrCep::VERSION::STRING + PKG_BUILD
|
13
|
+
PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
|
14
|
+
|
15
|
+
RELEASE_NAME = "REL #{PKG_VERSION}"
|
16
|
+
|
17
|
+
RUBY_FORGE_PROJECT = "brcep"
|
18
|
+
RUBY_FORGE_USER = "tapajos"
|
19
|
+
|
20
|
+
desc "Default Task"
|
21
|
+
task :default => [ :test ]
|
22
|
+
|
23
|
+
# Run the unit tests
|
24
|
+
Rake::TestTask.new { |t|
|
25
|
+
t.libs << "test"
|
26
|
+
t.pattern = 'test/*_test.rb'
|
27
|
+
t.verbose = true
|
28
|
+
t.warning = false
|
29
|
+
}
|
30
|
+
|
31
|
+
|
32
|
+
# Generate the RDoc documentation
|
33
|
+
# Rake::RDocTask.new { |rdoc|
|
34
|
+
# rdoc.rdoc_dir = 'doc'
|
35
|
+
# rdoc.title = "Action Mailer -- Easy email delivery and testing"
|
36
|
+
# rdoc.options << '--line-numbers' << '--inline-source' << '-A cattr_accessor=object'
|
37
|
+
# rdoc.options << '--charset' << 'utf-8'
|
38
|
+
# rdoc.template = "#{ENV['template']}.rb" if ENV['template']
|
39
|
+
# rdoc.rdoc_files.include('README', 'CHANGELOG')
|
40
|
+
# rdoc.rdoc_files.include('lib/action_mailer.rb')
|
41
|
+
# rdoc.rdoc_files.include('lib/action_mailer/*.rb')
|
42
|
+
# }
|
43
|
+
|
44
|
+
|
45
|
+
# Create compressed packages
|
46
|
+
spec = Gem::Specification.new do |s|
|
47
|
+
s.platform = Gem::Platform::RUBY
|
48
|
+
s.name = PKG_NAME
|
49
|
+
s.summary = "brcep é uma das gems que compoem o Brazilian Rails"
|
50
|
+
s.description = %q{brcep é uma das gems que compoem o Brazilian Rails}
|
51
|
+
s.version = PKG_VERSION
|
52
|
+
|
53
|
+
s.author = "Marcos Tapajós"
|
54
|
+
s.email = "tapajos@gmail.com"
|
55
|
+
s.rubyforge_project = "brcep"
|
56
|
+
s.homepage = "http://www.improveit.com.br/software_livre/brazilian_rails"
|
57
|
+
|
58
|
+
s.add_dependency('actionpack', '>= 1.4.2')
|
59
|
+
|
60
|
+
s.has_rdoc = true
|
61
|
+
s.requirements << 'none'
|
62
|
+
s.require_path = 'lib'
|
63
|
+
# s.autorequire = 'brcep'
|
64
|
+
|
65
|
+
s.files = [ "Rakefile", "README", "CHANGELOG", "TODO", "MIT-LICENSE" ]
|
66
|
+
s.files = s.files + Dir.glob( "lib/**/*" ).delete_if { |item| item.include?( "\.svn" ) }
|
67
|
+
s.files = s.files + Dir.glob( "test/**/*" ).delete_if { |item| item.include?( "\.svn" ) }
|
68
|
+
end
|
69
|
+
|
70
|
+
Rake::GemPackageTask.new(spec) do |p|
|
71
|
+
p.gem_spec = spec
|
72
|
+
p.need_tar = true
|
73
|
+
p.need_zip = true
|
74
|
+
end
|
75
|
+
|
76
|
+
|
77
|
+
# desc "Publish the API documentation"
|
78
|
+
# task :pgem => [:package] do
|
79
|
+
# Rake::SshFilePublisher.new("wrath.rubyonrails.org", "public_html/gems/gems", "pkg", "#{PKG_FILE_NAME}.gem").upload
|
80
|
+
# end
|
81
|
+
#
|
82
|
+
# desc "Publish the API documentation"
|
83
|
+
# task :pdoc => [:rdoc] do
|
84
|
+
# Rake::SshDirPublisher.new("wrath.rubyonrails.org", "public_html/am", "doc").upload
|
85
|
+
# end
|
86
|
+
#
|
87
|
+
|
88
|
+
desc "Publish the release files to RubyForge."
|
89
|
+
task :release => [ :package ] do
|
90
|
+
require 'rubyforge'
|
91
|
+
require 'rake/contrib/rubyforgepublisher'
|
92
|
+
|
93
|
+
packages = %w( gem tgz zip ).collect{ |ext| "pkg/#{PKG_NAME}-#{PKG_VERSION}.#{ext}" }
|
94
|
+
|
95
|
+
rubyforge = RubyForge.new
|
96
|
+
rubyforge.configure
|
97
|
+
rubyforge.login
|
98
|
+
rubyforge.add_release(PKG_NAME, PKG_NAME, "REL #{PKG_VERSION}", *packages)
|
99
|
+
end
|
data/TODO
ADDED
data/lib/brcep.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
$:.unshift(File.dirname(__FILE__)) unless
|
2
|
+
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
3
|
+
|
4
|
+
require 'rubygems'
|
5
|
+
require 'action_controller'
|
6
|
+
require 'html/document'
|
7
|
+
require 'active_support'
|
8
|
+
require 'action_view'
|
9
|
+
|
10
|
+
|
11
|
+
%w(busca_endereco
|
12
|
+
version
|
13
|
+
br_form_options_helper).each {|req| require File.dirname(__FILE__) + "/brcep/#{req}"}
|
14
|
+
|
15
|
+
|
16
|
+
module BrCep
|
17
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module ActionView::Helpers::FormOptionsHelper
|
2
|
+
ESTADOS_BRASILEIROS = [["Acre", "AC"],
|
3
|
+
["Alagoas", "AL"],
|
4
|
+
["Amapá", "AP"],
|
5
|
+
["Amazonas", "AM"],
|
6
|
+
["Bahia", "BA"],
|
7
|
+
["Ceará", "CE"],
|
8
|
+
["Distrito Federal", "DF"],
|
9
|
+
["Espírito Santos", "ES"],
|
10
|
+
["Goiás", "GO"],
|
11
|
+
["Maranhão", "MA"],
|
12
|
+
["Mato Grosso", "MT"],
|
13
|
+
["Mato Grosso do Sul", "MS"],
|
14
|
+
["Minas Gerais", "MG"],
|
15
|
+
["Pará", "PA"],
|
16
|
+
["Paraíba", "PB"],
|
17
|
+
["Paraná", "PR"],
|
18
|
+
["Pernambuco", "PE"],
|
19
|
+
["Piauí", "PI"],
|
20
|
+
["Rio de Janeiro", "RJ"],
|
21
|
+
["Rio Grande do Norte", "RN"],
|
22
|
+
["Rio Grande do Sul", "RS"],
|
23
|
+
["Rondônia", "RO"],
|
24
|
+
["Roraima", "RR"],
|
25
|
+
["Santa Catarina", "SC"],
|
26
|
+
["São Paulo", "SP"],
|
27
|
+
["Sergipe", "SE"],
|
28
|
+
["Tocantins", "TO"]
|
29
|
+
] unless const_defined?("ESTADOS_BRASILEIROS")
|
30
|
+
|
31
|
+
# Helper para montar um select para seleção de estados brasileiros, usando
|
32
|
+
# option_estados_for_select para gerar a lista de opções.
|
33
|
+
def select_estado(object, method, options = {}, html_options = {})
|
34
|
+
select object, method, ESTADOS_BRASILEIROS, options, html_options
|
35
|
+
end
|
36
|
+
|
37
|
+
# Helper para montar um select para seleção de estados brasileiros, usando
|
38
|
+
# option_uf_for_select para gerar a lista de opções.
|
39
|
+
def select_uf(object, method, options = {}, html_options = {})
|
40
|
+
select object, method, ESTADOS_BRASILEIROS.collect {|estado, sigla| sigla}, options, html_options
|
41
|
+
end
|
42
|
+
|
43
|
+
# Retorna uma string com a lista de estados brasileiros para usar em uma tag select,
|
44
|
+
# com exibição do nome do estado, mas armazenando a sigla.
|
45
|
+
def option_estados_for_select
|
46
|
+
html = ""
|
47
|
+
html += options_for_select ESTADOS_BRASILEIROS
|
48
|
+
html
|
49
|
+
end
|
50
|
+
|
51
|
+
# Retorna uma string com a lista de estados brasileiros para usar em uma tag select,
|
52
|
+
# com exibição e armazenamento a sigla.
|
53
|
+
def option_uf_for_select
|
54
|
+
html = ""
|
55
|
+
html += options_for_select ESTADOS_BRASILEIROS.collect {|nome,sigla| sigla}
|
56
|
+
html
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'rexml/document'
|
3
|
+
|
4
|
+
#Este recurso usa o webservice da http://www.bronzebusiness.com.br/webservices/wscep.asmx para
|
5
|
+
#realizar as consultas de cep, então, somente funcionará para serviços com acesso a internet e
|
6
|
+
#disponibilidade do serviço da Bronze Business.
|
7
|
+
#
|
8
|
+
#Como fazer a busca de endereço por cep?
|
9
|
+
#
|
10
|
+
# BuscaEndereco.por_cep(22640010) ==> ['Avenida', 'das Americas', 'Barra da Tijuca', 'RJ', 'Rio de Janeiro', 22640100]
|
11
|
+
# BuscaEndereco.por_cep('22640010') ==> ['Avenida', 'das Americas', 'Barra da Tijuca', 'RJ', 'Rio de Janeiro', 22640100]
|
12
|
+
# BuscaEndereco.por_cep('22640-010') ==> ['Avenida', 'das Americas', 'Barra da Tijuca', 'RJ', 'Rio de Janeiro', 22640100]
|
13
|
+
# BuscaEndereco.por_cep('22.640-010') ==> ['Avenida', 'das Americas', 'Barra da Tijuca', 'RJ', 'Rio de Janeiro', 22640100]
|
14
|
+
# BuscaEndereco.por_cep('00000000') ==> RuntimeError 'Cep 00000000 não encontrado.'
|
15
|
+
#
|
16
|
+
class BuscaEndereco
|
17
|
+
|
18
|
+
URL_WEB_SERVICE = 'http://www.bronzebusiness.com.br/webservices/wscep.asmx/cep?strcep=' #:nodoc:
|
19
|
+
|
20
|
+
# Retorna um array com os dados de endereçamento para o cep informado ou um erro para cep inexistente.
|
21
|
+
#
|
22
|
+
# Exemplo:
|
23
|
+
# BuscaEndereco.por_cep(22640010) ==> ['Avenida', 'das Americas', 'Barra da Tijuca', 'RJ', 'Rio de Janeiro', 22640100]
|
24
|
+
def self.por_cep(numero)
|
25
|
+
cep = numero.to_s.gsub(/\./, '').gsub(/\-/, '').to_i
|
26
|
+
response = Net::HTTP.get_response(URI.parse("#{URL_WEB_SERVICE}#{cep}"))
|
27
|
+
|
28
|
+
raise "Não foi possível obter o cep. (#{response.code} - #{response.message})" unless response.kind_of?(Net::HTTPSuccess)
|
29
|
+
|
30
|
+
doc = REXML::Document.new(response.body)
|
31
|
+
|
32
|
+
retorno = []
|
33
|
+
%w(logradouro nome bairro UF cidade).each do |e|
|
34
|
+
elemento = REXML::XPath.match(doc, "//#{e}").first
|
35
|
+
raise "Cep #{cep} não encontrado." if elemento.nil?
|
36
|
+
|
37
|
+
retorno << elemento.text
|
38
|
+
end
|
39
|
+
|
40
|
+
retorno << cep
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper'
|
2
|
+
require 'rubygems'
|
3
|
+
require 'net/http'
|
4
|
+
require 'mocha'
|
5
|
+
|
6
|
+
class BrFormHelperTest < Test::Unit::TestCase
|
7
|
+
|
8
|
+
include ActionView::Helpers::FormOptionsHelper
|
9
|
+
|
10
|
+
def test_option_estados_for_select
|
11
|
+
assert_equal %(<option value=\"AC\">Acre</option>\n<option value=\"AL\">Alagoas</option>\n<option value=\"AP\">Amapá</option>\n<option value=\"AM\">Amazonas</option>\n<option value=\"BA\">Bahia</option>\n<option value=\"CE\">Ceará</option>\n<option value=\"DF\">Distrito Federal</option>\n<option value=\"ES\">Espírito Santos</option>\n<option value=\"GO\">Goiás</option>\n<option value=\"MA\">Maranhão</option>\n<option value=\"MT\">Mato Grosso</option>\n<option value=\"MS\">Mato Grosso do Sul</option>\n<option value=\"MG\">Minas Gerais</option>\n<option value=\"PA\">Pará</option>\n<option value=\"PB\">Paraíba</option>\n<option value=\"PR\">Paraná</option>\n<option value=\"PE\">Pernambuco</option>\n<option value=\"PI\">Piauí</option>\n<option value=\"RJ\">Rio de Janeiro</option>\n<option value=\"RN\">Rio Grande do Norte</option>\n<option value=\"RS\">Rio Grande do Sul</option>\n<option value=\"RO\">Rondônia</option>\n<option value=\"RR\">Roraima</option>\n<option value=\"SC\">Santa Catarina</option>\n<option value=\"SP\">São Paulo</option>\n<option value=\"SE\">Sergipe</option>\n<option value=\"TO\">Tocantins</option>), option_estados_for_select
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_option_uf_for_select
|
15
|
+
assert_equal %(<option value=\"AC\">AC</option>\n<option value=\"AL\">AL</option>\n<option value=\"AP\">AP</option>\n<option value=\"AM\">AM</option>\n<option value=\"BA\">BA</option>\n<option value=\"CE\">CE</option>\n<option value=\"DF\">DF</option>\n<option value=\"ES\">ES</option>\n<option value=\"GO\">GO</option>\n<option value=\"MA\">MA</option>\n<option value=\"MT\">MT</option>\n<option value=\"MS\">MS</option>\n<option value=\"MG\">MG</option>\n<option value=\"PA\">PA</option>\n<option value=\"PB\">PB</option>\n<option value=\"PR\">PR</option>\n<option value=\"PE\">PE</option>\n<option value=\"PI\">PI</option>\n<option value=\"RJ\">RJ</option>\n<option value=\"RN\">RN</option>\n<option value=\"RS\">RS</option>\n<option value=\"RO\">RO</option>\n<option value=\"RR\">RR</option>\n<option value=\"SC\">SC</option>\n<option value=\"SP\">SP</option>\n<option value=\"SE\">SE</option>\n<option value=\"TO\">TO</option>), option_uf_for_select
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_select_estado
|
19
|
+
assert_equal %(<select id=\"lancamento_estado\" name=\"lancamento[estado]\"><option value=\"AC\">Acre</option>\n<option value=\"AL\">Alagoas</option>\n<option value=\"AP\">Amapá</option>\n<option value=\"AM\">Amazonas</option>\n<option value=\"BA\">Bahia</option>\n<option value=\"CE\">Ceará</option>\n<option value=\"DF\">Distrito Federal</option>\n<option value=\"ES\">Espírito Santos</option>\n<option value=\"GO\">Goiás</option>\n<option value=\"MA\">Maranhão</option>\n<option value=\"MT\">Mato Grosso</option>\n<option value=\"MS\">Mato Grosso do Sul</option>\n<option value=\"MG\">Minas Gerais</option>\n<option value=\"PA\">Pará</option>\n<option value=\"PB\">Paraíba</option>\n<option value=\"PR\">Paraná</option>\n<option value=\"PE\">Pernambuco</option>\n<option value=\"PI\">Piauí</option>\n<option value=\"RJ\">Rio de Janeiro</option>\n<option value=\"RN\">Rio Grande do Norte</option>\n<option value=\"RS\">Rio Grande do Sul</option>\n<option value=\"RO\">Rondônia</option>\n<option value=\"RR\">Roraima</option>\n<option value=\"SC\">Santa Catarina</option>\n<option value=\"SP\">São Paulo</option>\n<option value=\"SE\">Sergipe</option>\n<option value=\"TO\">Tocantins</option></select>), select_estado(:lancamento, :estado)
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_select_uf
|
23
|
+
options = {:options1 => "1"}
|
24
|
+
html_options = {:name => "name"}
|
25
|
+
expects(:select).with(:lancamento, :estado, ['AC', 'AL', 'AP', 'AM', 'BA', 'CE', 'DF', 'ES', 'GO', 'MA', 'MT', 'MS', 'MG', 'PA', 'PB', 'PR', 'PE', 'PI', 'RJ', 'RN', 'RS', 'RO', 'RR', 'SC', 'SP', 'SE', 'TO'], {:options1 => '1'}, {:name => 'name'}).returns("select")
|
26
|
+
assert_equal "select", select_uf(:lancamento, :estado, options, html_options)
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper'
|
2
|
+
require 'rubygems'
|
3
|
+
require 'net/http'
|
4
|
+
require 'mocha'
|
5
|
+
|
6
|
+
|
7
|
+
INVALID_ZIPS = [0, '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000']
|
8
|
+
VALID_ZIPS = [22640100, '22640100', '22.640-100', '22.640-100']
|
9
|
+
|
10
|
+
class MockSuccess < Net::HTTPSuccess
|
11
|
+
def initialize; end
|
12
|
+
end
|
13
|
+
|
14
|
+
class MockServerError < Net::HTTPServerError
|
15
|
+
def initialize;
|
16
|
+
@message = 'HTTPServiceUnavailable'
|
17
|
+
@code = '504'
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def limpa_cep(numero)
|
22
|
+
numero.to_s.gsub(/\./, '').gsub(/\-/, '').to_i
|
23
|
+
end
|
24
|
+
|
25
|
+
class BuscaEnderecoTest < Test::Unit::TestCase
|
26
|
+
def test_raise_witout_service
|
27
|
+
http_response = MockServerError.new
|
28
|
+
Net::HTTP.expects(:get_response).returns(http_response)
|
29
|
+
assert_raise RuntimeError, "Não foi possível obter o cep. (505 - HTTPServiceUnaviable)" do
|
30
|
+
BuscaEndereco.por_cep(VALID_ZIPS.first)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_raise_for_invalid_zip_code
|
35
|
+
INVALID_ZIPS.each do |invalid_zip|
|
36
|
+
mock_get_response('invalid')
|
37
|
+
assert_raise RuntimeError, "Cep #{invalid_zip} não encontrado." do
|
38
|
+
BuscaEndereco.por_cep(invalid_zip)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_valid_code
|
44
|
+
VALID_ZIPS.each do |valid_zip|
|
45
|
+
mock_get_response(limpa_cep(valid_zip))
|
46
|
+
assert_equal ['Avenida', 'das Americas', 'Barra da Tijuca', 'RJ', 'Rio de Janeiro', limpa_cep(valid_zip)], BuscaEndereco.por_cep(valid_zip)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def mock_get_response(zip_number)
|
53
|
+
xml_data = xml_data_from zip_name(zip_number)
|
54
|
+
|
55
|
+
http_response = MockSuccess.new
|
56
|
+
http_response.expects(:body).returns(xml_data)
|
57
|
+
|
58
|
+
Net::HTTP.expects(:get_response).returns(http_response)
|
59
|
+
end
|
60
|
+
|
61
|
+
def xml_data_from xml_mock
|
62
|
+
file = File.new(xml_mock)
|
63
|
+
|
64
|
+
xml_data = ''
|
65
|
+
|
66
|
+
while (line = file.gets)
|
67
|
+
xml_data << line
|
68
|
+
end
|
69
|
+
|
70
|
+
xml_data
|
71
|
+
end
|
72
|
+
|
73
|
+
def zip_name(nome)
|
74
|
+
File.join(File.dirname(__FILE__), 'mocks', "zip_#{nome}.xml")
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
@@ -0,0 +1,33 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<DataSet xmlns="http://tempuri.org/">
|
3
|
+
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
4
|
+
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
|
5
|
+
<xs:complexType>
|
6
|
+
<xs:choice minOccurs="0" maxOccurs="unbounded">
|
7
|
+
<xs:element name="tbCEP">
|
8
|
+
<xs:complexType>
|
9
|
+
<xs:sequence>
|
10
|
+
<xs:element name="logradouro" type="xs:string" minOccurs="0" />
|
11
|
+
<xs:element name="nome" type="xs:string" minOccurs="0" />
|
12
|
+
<xs:element name="bairro" type="xs:string" minOccurs="0" />
|
13
|
+
<xs:element name="UF" type="xs:string" minOccurs="0" />
|
14
|
+
<xs:element name="cidade" type="xs:string" minOccurs="0" />
|
15
|
+
</xs:sequence>
|
16
|
+
</xs:complexType>
|
17
|
+
</xs:element>
|
18
|
+
</xs:choice>
|
19
|
+
</xs:complexType>
|
20
|
+
</xs:element>
|
21
|
+
</xs:schema>
|
22
|
+
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
|
23
|
+
<NewDataSet xmlns="">
|
24
|
+
<tbCEP diffgr:id="tbCEP1" msdata:rowOrder="0">
|
25
|
+
<logradouro>Avenida</logradouro>
|
26
|
+
<nome>das Americas</nome>
|
27
|
+
<bairro>Barra da Tijuca</bairro>
|
28
|
+
<UF>RJ</UF>
|
29
|
+
<cidade>Rio de Janeiro</cidade>
|
30
|
+
</tbCEP>
|
31
|
+
</NewDataSet>
|
32
|
+
</diffgr:diffgram>
|
33
|
+
</DataSet>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<DataSet xmlns="http://tempuri.org/">
|
3
|
+
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
4
|
+
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
|
5
|
+
<xs:complexType>
|
6
|
+
<xs:choice minOccurs="0" maxOccurs="unbounded">
|
7
|
+
<xs:element name="tbCEP">
|
8
|
+
<xs:complexType>
|
9
|
+
<xs:sequence>
|
10
|
+
<xs:element name="logradouro" type="xs:string" minOccurs="0" />
|
11
|
+
<xs:element name="nome" type="xs:string" minOccurs="0" />
|
12
|
+
<xs:element name="bairro" type="xs:string" minOccurs="0" />
|
13
|
+
<xs:element name="UF" type="xs:string" minOccurs="0" />
|
14
|
+
<xs:element name="cidade" type="xs:string" minOccurs="0" />
|
15
|
+
</xs:sequence>
|
16
|
+
</xs:complexType>
|
17
|
+
</xs:element>
|
18
|
+
</xs:choice>
|
19
|
+
</xs:complexType>
|
20
|
+
</xs:element>
|
21
|
+
</xs:schema>
|
22
|
+
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" />
|
23
|
+
</DataSet>
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require File.dirname(__FILE__) + '/../lib/brcep'
|
3
|
+
|
4
|
+
|
5
|
+
def tornar_metodos_publicos(clazz)
|
6
|
+
clazz.class_eval do
|
7
|
+
private_instance_methods.each { |instance_method| public instance_method }
|
8
|
+
private_methods.each { |method| public_class_method method }
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def p80 text
|
13
|
+
p '*'*80
|
14
|
+
p text
|
15
|
+
p '*'*80
|
16
|
+
end
|
metadata
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: brcep
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- "Marcos Tapaj\xC3\xB3s"
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-06-23 00:00:00 -03:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: actionpack
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 1.4.2
|
24
|
+
version:
|
25
|
+
description: "brcep \xC3\xA9 uma das gems que compoem o Brazilian Rails"
|
26
|
+
email: tapajos@gmail.com
|
27
|
+
executables: []
|
28
|
+
|
29
|
+
extensions: []
|
30
|
+
|
31
|
+
extra_rdoc_files: []
|
32
|
+
|
33
|
+
files:
|
34
|
+
- Rakefile
|
35
|
+
- README
|
36
|
+
- CHANGELOG
|
37
|
+
- TODO
|
38
|
+
- MIT-LICENSE
|
39
|
+
- lib/brcep
|
40
|
+
- lib/brcep/br_form_options_helper.rb
|
41
|
+
- lib/brcep/busca_endereco.rb
|
42
|
+
- lib/brcep/version.rb
|
43
|
+
- lib/brcep.rb
|
44
|
+
- test/br_form_helper_test.rb
|
45
|
+
- test/busca_endereco_test.rb
|
46
|
+
- test/mocks
|
47
|
+
- test/mocks/zip_22640100.xml
|
48
|
+
- test/mocks/zip_invalid.xml
|
49
|
+
- test/test_helper.rb
|
50
|
+
has_rdoc: true
|
51
|
+
homepage: http://www.improveit.com.br/software_livre/brazilian_rails
|
52
|
+
post_install_message:
|
53
|
+
rdoc_options: []
|
54
|
+
|
55
|
+
require_paths:
|
56
|
+
- lib
|
57
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: "0"
|
62
|
+
version:
|
63
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: "0"
|
68
|
+
version:
|
69
|
+
requirements:
|
70
|
+
- none
|
71
|
+
rubyforge_project: brcep
|
72
|
+
rubygems_version: 1.2.0
|
73
|
+
signing_key:
|
74
|
+
specification_version: 2
|
75
|
+
summary: "brcep \xC3\xA9 uma das gems que compoem o Brazilian Rails"
|
76
|
+
test_files: []
|
77
|
+
|