brtraducao 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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,100 @@
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', 'brtraducao', 'version')
9
+
10
+ PKG_BUILD = ENV['PKG_BUILD'] ? '.' + ENV['PKG_BUILD'] : ''
11
+ PKG_NAME = 'brtraducao'
12
+ PKG_VERSION = BrTraducao::VERSION::STRING + PKG_BUILD
13
+ PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
14
+
15
+ RELEASE_NAME = "REL #{PKG_VERSION}"
16
+
17
+ RUBY_FORGE_PROJECT = "brtraducao"
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 = "brtraducao é uma das gems que compoem o Brazilian Rails"
50
+ s.description = %q{brtraducao é 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 = "brtraducao"
56
+ s.homepage = "http://www.improveit.com.br/software_livre/brazilian_rails"
57
+
58
+ s.add_dependency('actionpack', '>= 1.4.2')
59
+ s.add_dependency('activerecord', '>= 1.15.3')
60
+ s.add_dependency('activesupport', '>= 1.4.2')
61
+
62
+ s.has_rdoc = true
63
+ s.requirements << 'none'
64
+ s.require_path = 'lib'
65
+
66
+ s.files = [ "Rakefile", "README", "CHANGELOG", "TODO", "MIT-LICENSE" ]
67
+ s.files = s.files + Dir.glob( "lib/**/*" ).delete_if { |item| item.include?( "\.svn" ) }
68
+ s.files = s.files + Dir.glob( "test/**/*" ).delete_if { |item| item.include?( "\.svn" ) }
69
+ end
70
+
71
+ Rake::GemPackageTask.new(spec) do |p|
72
+ p.gem_spec = spec
73
+ p.need_tar = true
74
+ p.need_zip = true
75
+ end
76
+
77
+
78
+ # desc "Publish the API documentation"
79
+ # task :pgem => [:package] do
80
+ # Rake::SshFilePublisher.new("wrath.rubyonrails.org", "public_html/gems/gems", "pkg", "#{PKG_FILE_NAME}.gem").upload
81
+ # end
82
+ #
83
+ # desc "Publish the API documentation"
84
+ # task :pdoc => [:rdoc] do
85
+ # Rake::SshDirPublisher.new("wrath.rubyonrails.org", "public_html/am", "doc").upload
86
+ # end
87
+ #
88
+
89
+ desc "Publish the release files to RubyForge."
90
+ task :release => [ :package ] do
91
+ require 'rubyforge'
92
+ require 'rake/contrib/rubyforgepublisher'
93
+
94
+ packages = %w( gem tgz zip ).collect{ |ext| "pkg/#{PKG_NAME}-#{PKG_VERSION}.#{ext}" }
95
+
96
+ rubyforge = RubyForge.new
97
+ rubyforge.configure
98
+ rubyforge.login
99
+ rubyforge.add_release(PKG_NAME, PKG_NAME, "REL #{PKG_VERSION}", *packages)
100
+ end
data/TODO ADDED
@@ -0,0 +1,5 @@
1
+ # gem brdinheiro
2
+
3
+ ## testes do dinheiro_active_record
4
+ ## Ajustar o README
5
+ ## Verificar como regrar a documentação.
@@ -0,0 +1,30 @@
1
+ module ActionView::Helpers::ActiveRecordHelper
2
+ # Traduz as mensagens de erro do ActiveRecord
3
+ def error_messages_for(*params)
4
+ options = params.last.is_a?(Hash) ? params.pop.symbolize_keys : {}
5
+ objects = params.collect { |object_name| instance_variable_get('@'+object_name.to_s()) }
6
+ objects.compact!
7
+ count = objects.inject(0) {|sum, object| sum + object.errors.count }
8
+ unless count.zero?
9
+ html = {}
10
+ [:id, :class].each do |key|
11
+ if options.include?(key)
12
+ value = options[key]
13
+ html[key] = value unless value.blank?
14
+ else
15
+ html[key] = 'errorExplanation'
16
+ end
17
+ end
18
+ header_message = "#{pluralize(count, 'erro')} para #{(options[:object_name] || params.first).to_s.gsub('_', ' ')}"
19
+ error_messages = objects.map { |object| object.errors.full_messages.map {|msg| content_tag(:li, msg) } }
20
+ content_tag(:div,
21
+ content_tag(options[:header_tag] || :h2, header_message) <<
22
+ content_tag(:p, 'Foram detectados os seguintes erros:') <<
23
+ content_tag(:ul, error_messages),
24
+ html
25
+ )
26
+ else
27
+ ''
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,49 @@
1
+ module ActiveRecord
2
+ # Traduz as mensagens de erro do ActiveRecord::Errors
3
+ #
4
+ # :inclusion => "não está incluído na lista"
5
+ # :exclusion => "é reservado"
6
+ # :invalid => "é inválido"
7
+ # :confirmation => "não corresponde à confirmação"
8
+ # :accepted => "deve ser aceito"
9
+ # :empty => "deve ser preenchido"
10
+ # :blank => "deve ser preenchido"
11
+ # :too_long => "deve ter até %d caractere(s)"
12
+ # :too_short => "deve ter no mínimo %d caractere(s)"
13
+ # :wrong_length => "deve ter %d caractere(s)"
14
+ # :taken => "já está em uso"
15
+ # :not_a_number => "não é um número"
16
+ # :greater_than => "deve ser maior que %d"
17
+ # :greater_than_or_equal_to => "deve ser maior ou igual a %d"
18
+ # :equal_to => "deve ser igual a %d"
19
+ # :less_than => "deve ser menor que %d"
20
+ # :less_than_or_equal_to => "deve ser menor ou igual a %d"
21
+ # :odd => "deve ser impar"
22
+ # :even => "deve ser par"
23
+ class Errors
24
+ @@default_error_messages = {
25
+ :inclusion => "não está incluído(a) na lista",
26
+ :exclusion => "é reservado(a)",
27
+ :invalid => "é inválido(a)",
28
+ :confirmation => "não corresponde à confirmação",
29
+ :accepted => "deve ser aceito(a)",
30
+ :empty => "deve ser preenchido(a)",
31
+ :blank => "deve ser preenchido(a)",
32
+ :too_long => "deve ter até %d caractere(s)",
33
+ :too_short => "deve ter no mínimo %d caractere(s)",
34
+ :wrong_length => "deve ter %d caractere(s)",
35
+ :taken => "já está em uso",
36
+ :not_a_number => "não é um número",
37
+ :greater_than => "deve ser maior que %d",
38
+ :greater_than_or_equal_to => "deve ser maior ou igual a %d",
39
+ :equal_to => "deve ser igual a %d",
40
+ :less_than => "deve ser menor que %d",
41
+ :less_than_or_equal_to => "deve ser menor ou igual a %d",
42
+ :odd => "deve ser impar",
43
+ :even => "deve ser par"
44
+ }
45
+ end
46
+
47
+ end
48
+
49
+
@@ -0,0 +1,64 @@
1
+ module Inflector
2
+ Inflector.inflections do |inflect|
3
+ inflect.singular(/^(.*)s$/i, '\1')
4
+ inflect.singular(/^(.*)s$/i, '\1')
5
+ inflect.singular(/^(.*)s$/i, '\1')
6
+ inflect.singular(/^(.*)s$/i, '\1')
7
+ inflect.singular(/^(.*)s$/i, '\1')
8
+
9
+ inflect.plural(/^(.*[z|r])$/i, '\1es')
10
+ inflect.singular(/^(.*[r|z])es$/i, '\1')
11
+
12
+ inflect.plural(/^(.*)al$/i, '\1ais')
13
+ inflect.plural(/^(.*)el$/i, '\1eis')
14
+ inflect.plural(/^(.*)ol$/i, '\1ois')
15
+ inflect.plural(/^(.*)ul$/i, '\1uis')
16
+ inflect.singular(/^(.*)ais$/i, '\1al')
17
+ inflect.singular(/^(.*)eis$/i, '\1el')
18
+ inflect.singular(/^(.*)ois$/i, '\1ol')
19
+ inflect.singular(/^(.*)uis$/i, '\1ul')
20
+
21
+ inflect.plural(/^(.*)il$/i, '\1is')
22
+
23
+ inflect.plural(/^(.*)m$/i, '\1ns')
24
+ inflect.singular(/^(.*)ns$/i, '\1m')
25
+
26
+ inflect.plural(/^(.*s)$/i, '\1es')
27
+ inflect.plural(/^(.*)ás$/i, '\1ases')
28
+ inflect.plural(/^(.*)ês$/i, '\1eses')
29
+ inflect.singular(/^(.*)sses$/i, '\1sse')
30
+ inflect.singular(/^(.*[^s]s)es$/i, '\1')
31
+
32
+ inflect.plural(/^(.*)ão$/i, '\1ões')
33
+ inflect.singular(/^(.*)ões$/i, '\1ão')
34
+
35
+ inflect.plural(/^(.*)ao$/i, '\1oes')
36
+ inflect.singular(/^(.*)aos$/i, '\1ao')
37
+
38
+ inflect.singular(/^(.*)ães$/i, '\1ão')
39
+ inflect.singular(/^(.*)ãos$/i, '\1ão')
40
+ inflect.singular(/^(.*)oes$/i, '\1ao')
41
+ inflect.singular(/^(.*)aes$/i, '\1ao')
42
+
43
+ # #irregulares
44
+ irregulares = { "cão" => 'cães',
45
+ "pão" => 'pães',
46
+ "mão" => 'mãos',
47
+ "alemão" => 'alemães',
48
+ "cao" => 'caes',
49
+ "pao" => 'paes',
50
+ "mao" => 'maos',
51
+ "alemao" => 'alemaes',
52
+ "mail" => 'mails',
53
+ "email" => 'emails'
54
+ }
55
+
56
+
57
+ irregulares.each do |key, value|
58
+ inflect.plural(/^#{key.to_s}$/, value)
59
+ inflect.singular(/^#{value}$/, key.to_s)
60
+ end
61
+
62
+ inflect.uncountable %w( tórax tênis ônibus lápis fênix )
63
+ end
64
+ end
@@ -0,0 +1,9 @@
1
+ module BrTraducao
2
+ module VERSION #:nodoc:
3
+ MAJOR = 0
4
+ MINOR = 0
5
+ TINY = 1
6
+
7
+ STRING = [MAJOR, MINOR, TINY].join('.')
8
+ end
9
+ end
data/lib/brtraducao.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
+ # require 'action_pack'
10
+
11
+ %w(action_view_portuguese
12
+ version
13
+ active_record_portuguese).each {|req| require File.dirname(__FILE__) + "/brtraducao/#{req}"}
14
+
15
+
16
+ module BrTraducao
17
+ end
@@ -0,0 +1,134 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+ require 'mocha'
3
+
4
+ class ActionViewTest < Test::Unit::TestCase
5
+
6
+ include ActionView::Helpers::FormHelper
7
+ include ActionView::Helpers::ActiveRecordHelper
8
+ include ActionView::Helpers::TextHelper
9
+ include ActionView::Helpers::TagHelper
10
+ include ActionView::Helpers::UrlHelper
11
+ include ActionView::Helpers::FormTagHelper
12
+ include ActionView::Helpers::DateHelper
13
+ include ActionView::Helpers::FormOptionsHelper
14
+
15
+ silence_warnings do
16
+ Post = Struct.new("Post", :title, :author_name, :body, :secret, :written_on)
17
+ Post.class_eval do
18
+ alias_method :title_before_type_cast, :title unless respond_to?(:title_before_type_cast)
19
+ alias_method :body_before_type_cast, :body unless respond_to?(:body_before_type_cast)
20
+ alias_method :author_name_before_type_cast, :author_name unless respond_to?(:author_name_before_type_cast)
21
+ end
22
+
23
+ User = Struct.new("User", :email)
24
+ User.class_eval do
25
+ alias_method :email_before_type_cast, :email unless respond_to?(:email_before_type_cast)
26
+ end
27
+
28
+ Column = Struct.new("Column", :type, :name, :human_name)
29
+ end
30
+
31
+ def setup_post
32
+ @post = Post.new
33
+ def @post.errors
34
+ Class.new {
35
+ def on(field) field == "author_name" || field == "body" end
36
+ def empty?() false end
37
+ def count() 1 end
38
+ def full_messages() [ "Author name can't be empty" ] end
39
+ }.new
40
+ end
41
+
42
+ def @post.new_record?() true end
43
+ def @post.to_param() nil end
44
+
45
+ def @post.column_for_attribute(attr_name)
46
+ Post.content_columns.select { |column| column.name == attr_name }.first
47
+ end
48
+
49
+ silence_warnings do
50
+ def Post.content_columns() [ Column.new(:string, "title", "Title"),
51
+ Column.new(:text, "body", "Body") ]
52
+ end
53
+ end
54
+
55
+ @post.title = "Hello World"
56
+ @post.author_name = ""
57
+ @post.body = "Back to the hill and over it again!"
58
+ @post.secret = 1
59
+ @post.written_on = Date.new(2004, 6, 15)
60
+ end
61
+
62
+ def setup_user
63
+ @user = User.new
64
+ def @user.errors
65
+ Class.new {
66
+ def on(field) field == "email" end
67
+ def empty?() false end
68
+ def count() 1 end
69
+ def full_messages() [ "User email can't be empty" ] end
70
+ }.new
71
+ end
72
+
73
+ def @user.new_record?() true end
74
+ def @user.to_param() nil end
75
+
76
+ def @user.column_for_attribute(attr_name)
77
+ User.content_columns.select { |column| column.name == attr_name }.first
78
+ end
79
+
80
+ silence_warnings do
81
+ def User.content_columns() [ Column.new(:string, "email", "Email") ] end
82
+ end
83
+
84
+ @user.email = ""
85
+ end
86
+
87
+ def setup
88
+ setup_post
89
+ setup_user
90
+
91
+ @controller = Object.new
92
+ def @controller.url_for(options)
93
+ options = options.symbolize_keys
94
+
95
+ [options[:action], options[:id].to_param].compact.join('/')
96
+ end
97
+ end
98
+
99
+ def test_error_for_block
100
+ assert_dom_equal %(<div class=\"errorExplanation\" id=\"errorExplanation\"><h2>1 erro para post</h2><p>Foram detectados os seguintes erros:</p><ul><li>Author name can't be empty</li></ul></div>), error_messages_for("post")
101
+ assert_equal %(<div class=\"errorDeathByClass\" id=\"errorDeathById\"><h1>1 erro para post</h1><p>Foram detectados os seguintes erros:</p><ul><li>Author name can't be empty</li></ul></div>), error_messages_for("post", :class => "errorDeathByClass", :id => "errorDeathById", :header_tag => "h1")
102
+ assert_equal %(<div id=\"errorDeathById\"><h1>1 erro para post</h1><p>Foram detectados os seguintes erros:</p><ul><li>Author name can't be empty</li></ul></div>), error_messages_for("post", :class => nil, :id => "errorDeathById", :header_tag => "h1")
103
+ assert_equal %(<div class=\"errorDeathByClass\"><h1>1 erro para post</h1><p>Foram detectados os seguintes erros:</p><ul><li>Author name can't be empty</li></ul></div>), error_messages_for("post", :class => "errorDeathByClass", :id => nil, :header_tag => "h1")
104
+ end
105
+
106
+ def test_error_messages_for_handles_nil
107
+ assert_equal "", error_messages_for("notthere")
108
+ end
109
+
110
+ def test_error_message_on_handles_nil
111
+ assert_equal "", error_message_on("notthere", "notthere")
112
+ end
113
+
114
+ def test_error_message_on
115
+ assert error_message_on(:post, :author_name)
116
+ end
117
+
118
+ def test_error_messages_for_many_objects
119
+ assert_dom_equal %(<div class=\"errorExplanation\" id=\"errorExplanation\"><h2>2 erros para post</h2><p>Foram detectados os seguintes erros:</p><ul><li>Author name can't be empty</li><li>User email can't be empty</li></ul></div>), error_messages_for("post", "user")
120
+
121
+ # reverse the order, error order changes and so does the title
122
+ assert_dom_equal %(<div class=\"errorExplanation\" id=\"errorExplanation\"><h2>2 erros para user</h2><p>Foram detectados os seguintes erros:</p><ul><li>User email can't be empty</li><li>Author name can't be empty</li></ul></div>), error_messages_for("user", "post")
123
+
124
+ # add the default to put post back in the title
125
+ assert_dom_equal %(<div class=\"errorExplanation\" id=\"errorExplanation\"><h2>2 erros para post</h2><p>Foram detectados os seguintes erros:</p><ul><li>User email can't be empty</li><li>Author name can't be empty</li></ul></div>), error_messages_for("user", "post", :object_name => "post")
126
+
127
+ # symbols work as well
128
+ assert_dom_equal %(<div class=\"errorExplanation\" id=\"errorExplanation\"><h2>2 erros para post</h2><p>Foram detectados os seguintes erros:</p><ul><li>User email can't be empty</li><li>Author name can't be empty</li></ul></div>), error_messages_for(:user, :post, :object_name => :post)
129
+
130
+ # any default works too
131
+ assert_dom_equal %(<div class=\"errorExplanation\" id=\"errorExplanation\"><h2>2 erros para monkey</h2><p>Foram detectados os seguintes erros:</p><ul><li>User email can't be empty</li><li>Author name can't be empty</li></ul></div>), error_messages_for(:user, :post, :object_name => "monkey")
132
+ end
133
+
134
+ end
@@ -0,0 +1,38 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ class ActiveRecordTestable < ActiveRecord::Errors
4
+
5
+ def self.default_error_messages
6
+ @@default_error_messages
7
+ end
8
+
9
+ end
10
+
11
+ class ActiveRecordTest < Test::Unit::TestCase
12
+
13
+ def test_active_record_messages
14
+ errors = ActiveRecordTestable.default_error_messages
15
+ assert_equal "não está incluído(a) na lista", errors[:inclusion]
16
+ assert_equal "é reservado(a)", errors[:exclusion]
17
+ assert_equal "é inválido(a)", errors[:invalid]
18
+ assert_equal "não corresponde à confirmação", errors[:confirmation]
19
+ assert_equal "deve ser aceito(a)", errors[:accepted]
20
+ assert_equal "deve ser preenchido(a)", errors[:empty]
21
+ assert_equal "deve ser preenchido(a)", errors[:blank]
22
+ assert_equal "deve ter até %d caractere(s)", errors[:too_long]
23
+ assert_equal "deve ter no mínimo %d caractere(s)", errors[:too_short]
24
+ assert_equal "deve ter %d caractere(s)", errors[:wrong_length]
25
+ assert_equal "já está em uso", errors[:taken]
26
+ assert_equal "não é um número", errors[:not_a_number]
27
+ assert_equal "deve ser maior que %d", errors[:greater_than]
28
+ assert_equal "deve ser maior ou igual a %d", errors[:greater_than_or_equal_to]
29
+ assert_equal "deve ser igual a %d", errors[:equal_to]
30
+ assert_equal "deve ser menor que %d", errors[:less_than]
31
+ assert_equal "deve ser menor ou igual a %d", errors[:less_than_or_equal_to]
32
+ assert_equal "deve ser impar", errors[:odd]
33
+ assert_equal "deve ser par", errors[:even]
34
+ end
35
+
36
+ end
37
+
38
+
@@ -0,0 +1,20 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + '/../lib/brtraducao'
3
+ require File.dirname(__FILE__) + '/../lib/brtraducao/inflector_portuguese'
4
+
5
+ require 'rubygems'
6
+ require 'action_pack'
7
+ require 'action_controller/assertions'
8
+
9
+ def tornar_metodos_publicos(clazz)
10
+ clazz.class_eval do
11
+ private_instance_methods.each { |instance_method| public instance_method }
12
+ private_methods.each { |method| public_class_method method }
13
+ end
14
+ end
15
+
16
+ def p80 text
17
+ p '*'*80
18
+ p text
19
+ p '*'*80
20
+ end
metadata ADDED
@@ -0,0 +1,95 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: brtraducao
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
+ - !ruby/object:Gem::Dependency
26
+ name: activerecord
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.15.3
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: activesupport
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 1.4.2
44
+ version:
45
+ description: "brtraducao \xC3\xA9 uma das gems que compoem o Brazilian Rails"
46
+ email: tapajos@gmail.com
47
+ executables: []
48
+
49
+ extensions: []
50
+
51
+ extra_rdoc_files: []
52
+
53
+ files:
54
+ - Rakefile
55
+ - README
56
+ - CHANGELOG
57
+ - TODO
58
+ - MIT-LICENSE
59
+ - lib/brtraducao
60
+ - lib/brtraducao/action_view_portuguese.rb
61
+ - lib/brtraducao/active_record_portuguese.rb
62
+ - lib/brtraducao/inflector_portuguese.rb
63
+ - lib/brtraducao/version.rb
64
+ - lib/brtraducao.rb
65
+ - test/action_view_test.rb
66
+ - test/active_record_test.rb
67
+ - test/test_helper.rb
68
+ has_rdoc: true
69
+ homepage: http://www.improveit.com.br/software_livre/brazilian_rails
70
+ post_install_message:
71
+ rdoc_options: []
72
+
73
+ require_paths:
74
+ - lib
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: "0"
80
+ version:
81
+ required_rubygems_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: "0"
86
+ version:
87
+ requirements:
88
+ - none
89
+ rubyforge_project: brtraducao
90
+ rubygems_version: 1.2.0
91
+ signing_key:
92
+ specification_version: 2
93
+ summary: "brtraducao \xC3\xA9 uma das gems que compoem o Brazilian Rails"
94
+ test_files: []
95
+