totito 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source "http://rubygems.org"
2
+
3
+ group :development do
4
+ gem "shoulda"
5
+ gem "mocha"
6
+ gem "bundler"
7
+ gem "jeweler"
8
+ end
@@ -0,0 +1,36 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ activesupport (3.2.8)
5
+ i18n (~> 0.6)
6
+ multi_json (~> 1.0)
7
+ git (1.2.5)
8
+ i18n (0.6.1)
9
+ jeweler (1.8.4)
10
+ bundler (~> 1.0)
11
+ git (>= 1.2.5)
12
+ rake
13
+ rdoc
14
+ json (1.7.5)
15
+ metaclass (0.0.1)
16
+ mocha (0.12.4)
17
+ metaclass (~> 0.0.1)
18
+ multi_json (1.3.6)
19
+ rake (0.9.2.2)
20
+ rdoc (3.12)
21
+ json (~> 1.4)
22
+ shoulda (3.1.1)
23
+ shoulda-context (~> 1.0)
24
+ shoulda-matchers (~> 1.2)
25
+ shoulda-context (1.0.0)
26
+ shoulda-matchers (1.3.0)
27
+ activesupport (>= 3.0.0)
28
+
29
+ PLATFORMS
30
+ ruby
31
+
32
+ DEPENDENCIES
33
+ bundler
34
+ jeweler
35
+ mocha
36
+ shoulda
@@ -0,0 +1,5 @@
1
+ = Totito
2
+
3
+ This is a simple gem to aid in the translation of Rails models, using I18n.
4
+
5
+ by redradix.com
@@ -0,0 +1,34 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'bundler'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
12
+ require 'rake'
13
+
14
+ require 'jeweler'
15
+ Jeweler::Tasks.new do |gem|
16
+ gem.name = "totito"
17
+ gem.homepage = "http://github.com/redradix/totito"
18
+ gem.license = "MIT"
19
+ gem.summary = %Q{Model i18n/translations}
20
+ gem.description = %Q{This simple gem helps with model translations and internationalization}
21
+ gem.email = "info@redradix.com"
22
+ gem.authors = ['redradix']
23
+ # dependencies defined in Gemfile
24
+ end
25
+ Jeweler::RubygemsDotOrgTasks.new
26
+
27
+ require 'rake/testtask'
28
+ Rake::TestTask.new(:test) do |test|
29
+ test.libs << 'lib' << 'test'
30
+ test.pattern = 'test/**/test_*.rb'
31
+ test.verbose = true
32
+ end
33
+
34
+ task :default => :test
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.0
@@ -0,0 +1,5 @@
1
+ require 'totito/translates'
2
+ require 'totito/railtie'
3
+
4
+ module Totito
5
+ end
@@ -0,0 +1 @@
1
+ ActiveRecord::Base.send(:include, Totito) if defined? Rails
@@ -0,0 +1,23 @@
1
+ module Totito
2
+
3
+ def self.included(base)
4
+ base.extend ClassMethods
5
+ end
6
+
7
+ module ClassMethods
8
+ def translates(*attrs)
9
+ attrs.each do |att|
10
+ define_method att do
11
+ read_attribute("#{att}_#{::I18n.locale}") ||
12
+ read_attribute("#{att}_#{::I18n.default_locale}") ||
13
+ raise('Attribute not found')
14
+ end
15
+
16
+ define_method "#{att}=" do
17
+ raise 'You should not set directly a virtual babel fish attribute!'
18
+ end
19
+ end
20
+ end
21
+ end
22
+
23
+ end
@@ -0,0 +1,19 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'test/unit'
11
+ require 'shoulda'
12
+ require 'mocha'
13
+
14
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
15
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
16
+ require 'totito'
17
+
18
+ class Test::Unit::TestCase
19
+ end
@@ -0,0 +1,61 @@
1
+ require 'helper'
2
+
3
+ class TestClass
4
+ include Totito
5
+ translates :a, :b, :c
6
+ end
7
+
8
+ class I18n; end
9
+
10
+ class TestTotito < Test::Unit::TestCase
11
+ context 'translates' do
12
+ setup do
13
+ @model = TestClass.new
14
+ @fields = [:a, :b, :c]
15
+ I18n.stubs(:locale).returns(:es)
16
+ I18n.stubs(:default_locale).returns(:en)
17
+ end
18
+
19
+ should 'define a method for each attribute' do
20
+ @fields.each do |field|
21
+ assert @model.respond_to? field
22
+ end
23
+ end
24
+
25
+ should 'define a setter for each attribute' do
26
+ @fields.each do |field|
27
+ assert @model.respond_to? "#{field}="
28
+ end
29
+ end
30
+
31
+ should 'access the db based on the locale' do
32
+ @model.expects(:read_attribute).with('a_es').returns(true)
33
+ @model.a
34
+ end
35
+
36
+ should 'raise on set' do
37
+ begin
38
+ @model.a = 1
39
+ assert false
40
+ rescue
41
+ assert true
42
+ end
43
+ end
44
+
45
+ should 'default when no attribute for current locale' do
46
+ @model.expects(:read_attribute).with('a_es').returns(nil)
47
+ @model.expects(:read_attribute).with('a_en').returns(true)
48
+ @model.a
49
+ end
50
+
51
+ should 'raise when no attribute' do
52
+ @model.expects(:read_attribute).twice.returns(nil)
53
+ begin
54
+ @model.a
55
+ assert false
56
+ rescue
57
+ assert true
58
+ end
59
+ end
60
+ end
61
+ end
metadata ADDED
@@ -0,0 +1,124 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: totito
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - redradix
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-09-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: shoulda
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: mocha
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: bundler
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: jeweler
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ description: This simple gem helps with model translations and internationalization
79
+ email: info@redradix.com
80
+ executables: []
81
+ extensions: []
82
+ extra_rdoc_files:
83
+ - README.rdoc
84
+ files:
85
+ - .document
86
+ - Gemfile
87
+ - Gemfile.lock
88
+ - README.rdoc
89
+ - Rakefile
90
+ - VERSION
91
+ - lib/totito.rb
92
+ - lib/totito/railtie.rb
93
+ - lib/totito/translates.rb
94
+ - test/helper.rb
95
+ - test/test_totito.rb
96
+ homepage: http://github.com/redradix/totito
97
+ licenses:
98
+ - MIT
99
+ post_install_message:
100
+ rdoc_options: []
101
+ require_paths:
102
+ - lib
103
+ required_ruby_version: !ruby/object:Gem::Requirement
104
+ none: false
105
+ requirements:
106
+ - - ! '>='
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ segments:
110
+ - 0
111
+ hash: 1180016978011015386
112
+ required_rubygems_version: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ requirements: []
119
+ rubyforge_project:
120
+ rubygems_version: 1.8.24
121
+ signing_key:
122
+ specification_version: 3
123
+ summary: Model i18n/translations
124
+ test_files: []