rpv_i18n 0.2

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile ADDED
@@ -0,0 +1,3 @@
1
+ Dir.glob("tasks/**/*.rake").each do |rake_file|
2
+ load File.expand_path(File.dirname(__FILE__) + "/" + rake_file)
3
+ end
data/lib/rpv/i18n.rb ADDED
@@ -0,0 +1,2 @@
1
+ require "i18n"
2
+ require "rpv/wiring/i18n"
@@ -0,0 +1,24 @@
1
+ require "rpv/wiring/base"
2
+
3
+ X18n = I18n
4
+
5
+ module RPV
6
+ module Wiring
7
+ class I18n < Base
8
+ def initialize(args = {}, &block)
9
+ @view, @key = args[:view], args[:key]
10
+ @block = block
11
+ raise ArgumentError, "View field must be given" if @view.nil?
12
+ end
13
+
14
+ def update_view(model, view, presenter)
15
+ args = @block.call unless @block.nil?
16
+ if args.nil?
17
+ send_nested(view, "#{@view}=", X18n.t(@key).to_s)
18
+ else
19
+ send_nested(view, "#{@view}=", X18n.t(@key, args).to_s)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
data/spec/i18n/de.yml ADDED
@@ -0,0 +1,6 @@
1
+ de:
2
+ foo:
3
+ bar: Trinkhalle
4
+ dogs:
5
+ one: Ein Hund
6
+ other: '%{count} Hunde'
@@ -0,0 +1,34 @@
1
+ require "rubygems"
2
+ require "rpv/i18n"
3
+
4
+ describe "I18n Wiring" do
5
+ before(:all) do
6
+ I18n.backend.load_translations File.dirname(__FILE__) + "/i18n/de.yml"
7
+ I18n.locale = :de
8
+ end
9
+
10
+ it "should set a plain string" do
11
+ view = mock("view")
12
+ view.should_receive("drinking_place=").with("Trinkhalle")
13
+ w = RPV::Wiring::I18n.new(:view => "drinking_place", :key => "foo.bar")
14
+ w.update_view(nil, view, nil)
15
+ end
16
+
17
+ it "should execute the argument block" do
18
+ view = mock("view")
19
+ view.should_receive("dogs=").with("0 Hunde")
20
+ w = RPV::Wiring::I18n.new(:view => "dogs", :key => "dogs") { {:count => 0} }
21
+ w.update_view(nil, view, nil)
22
+
23
+ view.should_receive("dogs=").with("Ein Hund")
24
+ w = RPV::Wiring::I18n.new(:view => "dogs", :key => "dogs") { {:count => 1} }
25
+ w.update_view(nil, view, nil)
26
+ end
27
+
28
+ it "should return a string if the key is missing" do
29
+ view = mock("view")
30
+ view.should_receive("bar=").with("translation missing: de, not_there")
31
+ w = RPV::Wiring::I18n.new(:view => "bar", :key => "not_there")
32
+ w.update_view(nil, view, nil)
33
+ end
34
+ end
data/tasks/rdoc.rake ADDED
@@ -0,0 +1,10 @@
1
+ require 'rdoc/task'
2
+
3
+ RDoc::Task.new do |rdoc|
4
+ rdoc.main = "Readme.rdoc"
5
+ rdoc.rdoc_dir = "doc"
6
+ rdoc.title = "RPV: I18n"
7
+ rdoc.rdoc_files.include("Readme.rdoc")
8
+ rdoc.rdoc_files.include('lib/**/*.rb')
9
+ rdoc.options << '--line-numbers' << '--inline-source'
10
+ end
data/tasks/rspec.rake ADDED
@@ -0,0 +1,10 @@
1
+ require 'rake'
2
+ require 'spec/rake/spectask'
3
+
4
+ desc "Run all specs"
5
+ Spec::Rake::SpecTask.new('spec') do |t|
6
+ t.spec_opts = ["--colour", "--format progress", "--loadby mtime"]
7
+ t.spec_files = FileList['spec/**/*_spec.rb']
8
+ t.libs = [File.dirname(__FILE__) + '/../lib']
9
+ end
10
+
metadata ADDED
@@ -0,0 +1,101 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rpv_i18n
3
+ version: !ruby/object:Gem::Version
4
+ hash: 15
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 2
9
+ version: "0.2"
10
+ platform: ruby
11
+ authors:
12
+ - Martin Vielsmaier
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-07-07 00:00:00 +02:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: i18n
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 3
29
+ segments:
30
+ - 0
31
+ - 4
32
+ version: "0.4"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: rpv_core
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 15
44
+ segments:
45
+ - 0
46
+ - 2
47
+ version: "0.2"
48
+ type: :runtime
49
+ version_requirements: *id002
50
+ description: ""
51
+ email: martin.vielsmaier@gmail.com
52
+ executables: []
53
+
54
+ extensions: []
55
+
56
+ extra_rdoc_files: []
57
+
58
+ files:
59
+ - Rakefile
60
+ - spec/i18n/de.yml
61
+ - spec/i18n_wiring_spec.rb
62
+ - tasks/rspec.rake
63
+ - tasks/rdoc.rake
64
+ - lib/rpv/wiring/i18n.rb
65
+ - lib/rpv/i18n.rb
66
+ has_rdoc: true
67
+ homepage: http://moserei.de
68
+ licenses: []
69
+
70
+ post_install_message:
71
+ rdoc_options: []
72
+
73
+ require_paths:
74
+ - lib
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ none: false
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ hash: 3
81
+ segments:
82
+ - 0
83
+ version: "0"
84
+ required_rubygems_version: !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ hash: 3
90
+ segments:
91
+ - 0
92
+ version: "0"
93
+ requirements: []
94
+
95
+ rubyforge_project:
96
+ rubygems_version: 1.3.7
97
+ signing_key:
98
+ specification_version: 3
99
+ summary: ""
100
+ test_files: []
101
+