brcep 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
File without changes
@@ -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
@@ -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
@@ -0,0 +1,6 @@
1
+ # gem brcep
2
+
3
+ ## Dependências da GEM
4
+ ## Ajustar testes que estão quebrando
5
+ ## Ajustar o README
6
+ ## Verificar como regrar a documentação.
@@ -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,9 @@
1
+ module BrCep
2
+ module VERSION #:nodoc:
3
+ MAJOR = 0
4
+ MINOR = 0
5
+ TINY = 1
6
+
7
+ STRING = [MAJOR, MINOR, TINY].join('.')
8
+ end
9
+ 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>
@@ -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
+