rpv_i18n 0.2

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