i18n_scopes 0.2.1 → 0.3.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/lib/i18n_scopes/scope.rb +0 -1
- data/lib/i18n_scopes/translation_helper.rb +3 -49
- data/lib/i18n_scopes/translation_utils.rb +55 -0
- data/lib/i18n_scopes/version.rb +1 -1
- data/lib/i18n_scopes.rb +1 -1
- data/spec/example_classes/scope_t_with_path.rb +2 -0
- data/spec/example_classes/scope_t_with_path_in_module.rb +2 -0
- data/spec/example_classes/should_define_scope.rb +2 -0
- data/spec/example_classes/should_have_attached_scoped_t.rb +2 -0
- metadata +3 -2
data/lib/i18n_scopes/scope.rb
CHANGED
|
@@ -38,7 +38,6 @@ module I18nScopes
|
|
|
38
38
|
def i18n_scope(name, *path)
|
|
39
39
|
@i18n_scope_initialized ||= begin
|
|
40
40
|
self.send :include, I18nScopes::TranslationMethods
|
|
41
|
-
# self.i18n_scope_helper ||= self.i18n_scope_helper.nil? ? {} : self.i18n_scope_helper.dup
|
|
42
41
|
self.i18n_scope_helper ||= {}
|
|
43
42
|
true
|
|
44
43
|
end
|
|
@@ -3,8 +3,6 @@ module I18nScopes
|
|
|
3
3
|
# this class provides helper methods to determine the actual scope in your class
|
|
4
4
|
class TranslationHelper
|
|
5
5
|
|
|
6
|
-
CONTROLLER_SUFFIX = "_controller"
|
|
7
|
-
|
|
8
6
|
attr_accessor :path
|
|
9
7
|
attr_accessor :options
|
|
10
8
|
|
|
@@ -30,7 +28,7 @@ module I18nScopes
|
|
|
30
28
|
custom_path += [*options.delete(:path_extension)] if options.include?(:path_extension)
|
|
31
29
|
respondables = [object]
|
|
32
30
|
respondables += [*options.delete(:respondable)] if options.include?(:respondable)
|
|
33
|
-
respondables <<
|
|
31
|
+
respondables << I18nScopes::TranslationUtils # add utils at last
|
|
34
32
|
custom_path.each do |path_name|
|
|
35
33
|
if path_name.is_a?(Symbol)
|
|
36
34
|
# find a respondable which responds_to path_name
|
|
@@ -64,7 +62,7 @@ module I18nScopes
|
|
|
64
62
|
# * +method_name+: the method name to call
|
|
65
63
|
# * +parameter_matchings+: additional parameter_matchings as a Hash
|
|
66
64
|
def value_from_method_call(object, respondables, method_name, parameter_matchings)
|
|
67
|
-
method = object.
|
|
65
|
+
method = object.method(method_name)
|
|
68
66
|
if method.arity == 0
|
|
69
67
|
return object.send(method_name)
|
|
70
68
|
else
|
|
@@ -100,51 +98,7 @@ module I18nScopes
|
|
|
100
98
|
return args
|
|
101
99
|
end
|
|
102
100
|
|
|
103
|
-
|
|
104
|
-
#
|
|
105
|
-
# === Params:
|
|
106
|
-
# * +klass+: the klass of which the modules should be used
|
|
107
|
-
def modules(klass)
|
|
108
|
-
modules = ActiveSupport::Inflector.deconstantize(klass.name)
|
|
109
|
-
modules = ActiveSupport::Inflector.underscore(modules)
|
|
110
|
-
modules.split("::")
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
# this method will return a underscored class_name
|
|
114
|
-
#
|
|
115
|
-
# Note: plural_class and strip_controller_suffix will be used here
|
|
116
|
-
#
|
|
117
|
-
# === Params:
|
|
118
|
-
# * +klass+: the class on which the name should be get
|
|
119
|
-
# * +options+: options like plural_class and strip_controller_suffix
|
|
120
|
-
def class_name(klass, options = {})
|
|
121
|
-
class_name_options = self.options.merge(options)
|
|
122
|
-
class_name = ActiveSupport::Inflector.demodulize(klass.name)
|
|
123
|
-
class_name = ActiveSupport::Inflector.underscore(class_name)
|
|
124
|
-
class_name = class_name[0, class_name.length - CONTROLLER_SUFFIX.length] if class_name_options[:strip_controller_suffix] && class_name.end_with?(CONTROLLER_SUFFIX)
|
|
125
|
-
if class_name_options[:plural_class]
|
|
126
|
-
ActiveSupport::Inflector.pluralize(class_name)
|
|
127
|
-
else
|
|
128
|
-
ActiveSupport::Inflector.singularize(class_name)
|
|
129
|
-
end
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
# returns the method name of the original caller
|
|
133
|
-
def method_name
|
|
134
|
-
found_scoped_t_at = nil
|
|
135
|
-
caller.each_with_index do |call, index|
|
|
136
|
-
if call.include?("scoped_translation")
|
|
137
|
-
found_scoped_t_at = index
|
|
138
|
-
break
|
|
139
|
-
end
|
|
140
|
-
end
|
|
141
|
-
if found_scoped_t_at && call = caller[found_scoped_t_at + 1]
|
|
142
|
-
if /^(.+?):(\d+)(?::in `(.*)')?/ =~ call
|
|
143
|
-
return Regexp.last_match[3]
|
|
144
|
-
end
|
|
145
|
-
end
|
|
146
|
-
raise "Failed to get method_name"
|
|
147
|
-
end
|
|
101
|
+
|
|
148
102
|
|
|
149
103
|
end
|
|
150
104
|
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
module I18nScopes
|
|
2
|
+
|
|
3
|
+
module TranslationUtils
|
|
4
|
+
|
|
5
|
+
CONTROLLER_SUFFIX = "_controller"
|
|
6
|
+
|
|
7
|
+
# this method will return all modules in a array, each module will be underscored
|
|
8
|
+
#
|
|
9
|
+
# === Params:
|
|
10
|
+
# * +klass+: the klass of which the modules should be used
|
|
11
|
+
def self.modules(klass)
|
|
12
|
+
modules = ActiveSupport::Inflector.deconstantize(klass.name)
|
|
13
|
+
modules = ActiveSupport::Inflector.underscore(modules)
|
|
14
|
+
modules.split("::")
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# this method will return a underscored class_name
|
|
18
|
+
#
|
|
19
|
+
# Note: plural_class and strip_controller_suffix will be used here
|
|
20
|
+
#
|
|
21
|
+
# === Params:
|
|
22
|
+
# * +klass+: the class on which the name should be get
|
|
23
|
+
# * +options+: options like plural_class and strip_controller_suffix
|
|
24
|
+
def self.class_name(klass, options = {})
|
|
25
|
+
class_name_options = options.merge(options)
|
|
26
|
+
class_name = ActiveSupport::Inflector.demodulize(klass.name)
|
|
27
|
+
class_name = ActiveSupport::Inflector.underscore(class_name)
|
|
28
|
+
class_name = class_name[0, class_name.length - CONTROLLER_SUFFIX.length] if class_name_options[:strip_controller_suffix] && class_name.end_with?(CONTROLLER_SUFFIX)
|
|
29
|
+
if class_name_options[:plural_class]
|
|
30
|
+
ActiveSupport::Inflector.pluralize(class_name)
|
|
31
|
+
else
|
|
32
|
+
ActiveSupport::Inflector.singularize(class_name)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# returns the method name of the original caller
|
|
37
|
+
def self.method_name
|
|
38
|
+
found_scoped_t_at = nil
|
|
39
|
+
caller.each_with_index do |call, index|
|
|
40
|
+
if call.include?("scoped_translation")
|
|
41
|
+
found_scoped_t_at = index
|
|
42
|
+
break
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
if found_scoped_t_at && call = caller[found_scoped_t_at + 1]
|
|
46
|
+
if /^(.+?):(\d+)(?::in `(.*)')?/ =~ call
|
|
47
|
+
return Regexp.last_match[3]
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
raise "Failed to get method_name"
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
end
|
data/lib/i18n_scopes/version.rb
CHANGED
data/lib/i18n_scopes.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: i18n_scopes
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2012-07-
|
|
12
|
+
date: 2012-07-23 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rspec
|
|
@@ -47,6 +47,7 @@ files:
|
|
|
47
47
|
- lib/i18n_scopes/scope.rb
|
|
48
48
|
- lib/i18n_scopes/translation_helper.rb
|
|
49
49
|
- lib/i18n_scopes/translation_methods.rb
|
|
50
|
+
- lib/i18n_scopes/translation_utils.rb
|
|
50
51
|
- lib/i18n_scopes/version.rb
|
|
51
52
|
- spec/configuration_spec.rb
|
|
52
53
|
- spec/example_classes/inherit_from_parent.rb
|