padrino-localization 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.1.3
@@ -7,54 +7,55 @@ module Padrino
7
7
  module Urls
8
8
  def self.registered(app)
9
9
  app.helpers self
10
- end
11
-
12
- def self.included(base)
13
- base.instance_eval do
14
- alias_method_chain :url, :locale
10
+ app.extend ::Padrino::Localization::Urls::ClassMethods
11
+ app.instance_eval do
12
+ alias :url_without_locale :url
13
+ alias :url :url_with_locale
14
+ alias :url_for :url_with_locale
15
15
  end
16
16
  end
17
17
 
18
- ###
19
- # Generates an URL with a current locale, for a resource, inside of application.
20
- #
21
- # Example:
22
- #
23
- # url_for_with_locale(:users) # /ru/users
24
- #
25
- # url_for_with_locale('/') # /ru/
26
- #
27
- # url_for_with_locale(:posts, :new, :locale => 'se') # /se/posts/new
28
- #
29
- def url_with_locale *args
30
- locale_scope = (::I18n.locale == ::I18n.default_locale) ? {} : {:locale => ::I18n.locale}
31
- if args.last.kind_of? Hash
32
- # should not overwrite provided locale
33
- args.last.merge!(locale_scope)
34
- url_without_locale *args
35
- else
36
- args << locale_scope
37
- url_without_locale *args
38
- end.gsub('//','/')
39
- end
18
+ module ClassMethods
19
+
20
+ ###
21
+ # Generates an URL with a current locale, for a resource, inside of application.
22
+ #
23
+ # Example:
24
+ #
25
+ # url_for_with_locale(:users) # /ru/users
26
+ #
27
+ # url_for_with_locale('/') # /ru/
28
+ #
29
+ # url_for_with_locale(:posts, :new, :locale => 'se') # /se/posts/new
30
+ #
31
+ def url_with_locale *args
32
+ opts = args.extract_options!
33
+ locale_scope = opts.delete(:locale) || ::I18n.locale
34
+ locale_scope = ::I18n.locale unless Padrino::Localization::Middleware.languages.include?(locale_scope.to_s)
35
+ args << opts
36
+ link = url_without_locale *args
37
+ link.insert(0,"/#{locale_scope}") if (locale_scope.to_s != ::I18n.default_locale.to_s)
38
+ link
39
+ end
40
40
 
41
- ###
42
- # Returns a link, unless application locale is equivalent to those from URL.
43
- #
44
- # Examples:
45
- #
46
- # link_to_unless_current_locale :ru, "Main page", url(:main, :index, :locale => :ru)
47
- # # => "Main page"
48
- #
49
- # link_to_unless_current_locale :ru, "Main page", url(:main, :index, :locale => :ru)
50
- # # => "Main page"
51
- #
52
- def link_to_unless_current_locale *opts, &block
53
- locale = opts.shift.to_s
54
- if locale == ::I18n.locale.to_s
55
- opts.first
56
- else
57
- link_to *opts, &block
41
+ ###
42
+ # Returns a link, unless application locale is equivalent to those from URL.
43
+ #
44
+ # Examples:
45
+ #
46
+ # link_to_unless_current_locale :ru, "Main page", url(:main, :index, :locale => :ru)
47
+ # # => "Main page"
48
+ #
49
+ # link_to_unless_current_locale :ru, "Main page", url(:main, :index, :locale => :ru)
50
+ # # => "Main page"
51
+ #
52
+ def link_to_unless_current_locale *opts, &block
53
+ locale = opts.shift.to_s
54
+ if locale == ::I18n.locale.to_s
55
+ opts.first
56
+ else
57
+ link_to *opts, &block
58
+ end
58
59
  end
59
60
  end
60
61
  end
@@ -3,6 +3,12 @@ module Padrino
3
3
  class Middleware
4
4
  attr_reader :languages
5
5
  alias_method :langs, :languages
6
+
7
+ class << self
8
+ def languages
9
+ @languages
10
+ end
11
+ end
6
12
 
7
13
  def initialize(app, langs)
8
14
  @app = app
@@ -24,6 +30,8 @@ module Padrino
24
30
  raise ArgumentError.new("An arguments should be 2 latters long") unless l.to_s =~ /\A[a-z]{2}\Z/i
25
31
  l.to_s
26
32
  end
33
+ self.class.instance_variable_set :@languages, @languages
34
+ @languages
27
35
  end
28
36
  alias_method :langs=, :languages=
29
37
 
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "padrino-localization"
8
- s.version = "0.1.2"
8
+ s.version = "0.1.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["kot-begemot"]
12
- s.date = "2012-08-19"
12
+ s.date = "2012-08-20"
13
13
  s.description = "This gem allows you to localalize your padrino application with ease"
14
14
  s.email = "max@studentify.nl"
15
15
  s.extra_rdoc_files = [
@@ -66,14 +66,25 @@ class MainControllerTest < Test::Unit::TestCase
66
66
  assert page.has_content? "translation missing: ru.user.index"
67
67
  end
68
68
 
69
- def test_user_show_with_params
70
- visit "/en/user/show/10"
71
- assert page.has_content? "ID is 10"
69
+ def test_url_test_no_locale
70
+ assert_equal '/', TestApp.url(:index)
71
+ end
72
72
 
73
- visit "/ru/user/show/10"
74
- assert page.has_content?("ID is 10"), "Page body was: #{page.body}"
73
+ def test_url_test_with_locale
74
+ assert_equal '/ru/', TestApp.url_with_locale(:index, :locale => "ru")
75
+ assert_equal '/ru/', TestApp.url(:index, :locale => "ru")
76
+ assert_equal '/ru/', TestApp.url_for(:index, :locale => "ru")
77
+ ::I18n.locale = :ru
78
+ assert_equal '/ru/', TestApp.url(:index)
79
+ assert_equal '/', TestApp.url(:index, :locale => "en")
80
+ ::I18n.locale = ::I18n.default_locale
81
+ end
75
82
 
76
- visit "/user/show/10"
77
- assert page.has_content? "ID is 10"
83
+ def test_url_is_not_registered
84
+ assert_equal '/', TestApp.url_with_locale(:index, :locale => "sdv")
85
+ ::I18n.locale = :ru
86
+ assert_equal '/ru/', TestApp.url(:index, :locale => "sdfsa")
87
+ assert_equal '/ru/', TestApp.url_for(:index, :locale => "sdfsa")
88
+ ::I18n.locale = ::I18n.default_locale
78
89
  end
79
90
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: padrino-localization
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-19 00:00:00.000000000Z
12
+ date: 2012-08-20 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: padrino
16
- requirement: &84521410 !ruby/object:Gem::Requirement
16
+ requirement: &85254750 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *84521410
24
+ version_requirements: *85254750
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: i18n
27
- requirement: &84468760 !ruby/object:Gem::Requirement
27
+ requirement: &85202010 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *84468760
35
+ version_requirements: *85202010
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: test-spec
38
- requirement: &84468360 !ruby/object:Gem::Requirement
38
+ requirement: &85201580 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *84468360
46
+ version_requirements: *85201580
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: yard
49
- requirement: &84467900 !ruby/object:Gem::Requirement
49
+ requirement: &85201180 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.6.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *84467900
57
+ version_requirements: *85201180
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: bundler
60
- requirement: &84467510 !ruby/object:Gem::Requirement
60
+ requirement: &85200740 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.0.0
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *84467510
68
+ version_requirements: *85200740
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: jeweler
71
- requirement: &84467120 !ruby/object:Gem::Requirement
71
+ requirement: &85200330 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 1.6.4
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *84467120
79
+ version_requirements: *85200330
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: debugger
82
- requirement: &84466650 !ruby/object:Gem::Requirement
82
+ requirement: &85199870 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 1.1.3
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *84466650
90
+ version_requirements: *85199870
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: simplecov
93
- requirement: &84466240 !ruby/object:Gem::Requirement
93
+ requirement: &85199470 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ~>
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: 0.6.4
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *84466240
101
+ version_requirements: *85199470
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: ruby-debug
104
- requirement: &84465860 !ruby/object:Gem::Requirement
104
+ requirement: &85199090 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '0'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *84465860
112
+ version_requirements: *85199090
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: rcov
115
- requirement: &84465440 !ruby/object:Gem::Requirement
115
+ requirement: &85198690 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ~>
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: 1.0.0
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *84465440
123
+ version_requirements: *85198690
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: capybara
126
- requirement: &84465050 !ruby/object:Gem::Requirement
126
+ requirement: &85198280 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ! '>='
@@ -131,7 +131,7 @@ dependencies:
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *84465050
134
+ version_requirements: *85198280
135
135
  description: This gem allows you to localalize your padrino application with ease
136
136
  email: max@studentify.nl
137
137
  executables: []
@@ -179,7 +179,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
179
179
  version: '0'
180
180
  segments:
181
181
  - 0
182
- hash: 747525453
182
+ hash: -154014833
183
183
  required_rubygems_version: !ruby/object:Gem::Requirement
184
184
  none: false
185
185
  requirements: