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.
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
+