totito 0.0.0
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/.document +5 -0
- data/Gemfile +8 -0
- data/Gemfile.lock +36 -0
- data/README.rdoc +5 -0
- data/Rakefile +34 -0
- data/VERSION +1 -0
- data/lib/totito.rb +5 -0
- data/lib/totito/railtie.rb +1 -0
- data/lib/totito/translates.rb +23 -0
- data/test/helper.rb +19 -0
- data/test/test_totito.rb +61 -0
- metadata +124 -0
data/.document
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -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
|
data/README.rdoc
ADDED
data/Rakefile
ADDED
@@ -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
|
data/lib/totito.rb
ADDED
@@ -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
|
data/test/helper.rb
ADDED
@@ -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
|
data/test/test_totito.rb
ADDED
@@ -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: []
|