british 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/british.rb +63 -27
- metadata +5 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7115edabb03d3d4647a323d60496b44acf8d90c3
|
4
|
+
data.tar.gz: 186e32e55afdc4baf90854b20f9c4185e686f351
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6bb4952776e2e9f52f73dcf6757a1d9bc3827128f5a79c98ab86e8aaa71f6ff8d95b9f33bec79c553033e92f35f8988405d56aa7ffcc9feffe4cad8564b882ed
|
7
|
+
data.tar.gz: 90576b1bb474d3d5df85475071e8a380891f1be5b3e51f52bd4fe19483cfcce603ce3fb94a248f6ba968c5dc887b407493c18c48202d901939e6e681c9478016
|
data/lib/british.rb
CHANGED
@@ -79,11 +79,26 @@ module British
|
|
79
79
|
'ogue' => 'og'
|
80
80
|
}.freeze
|
81
81
|
|
82
|
+
# Public: Hash of American ↔ British words endings
|
83
|
+
INVERTED_ENDINGS = {
|
84
|
+
# Latin-derived spellings
|
85
|
+
'or' => 'our',
|
86
|
+
'er' => 're',
|
87
|
+
'se' => 'ce',
|
88
|
+
'ction' => 'xion',
|
89
|
+
|
90
|
+
# Greek-derived spellings
|
91
|
+
'ize' => 'ise',
|
92
|
+
'ization' => 'isation',
|
93
|
+
'yze' => 'yse',
|
94
|
+
'og' => 'ogue'
|
95
|
+
}.freeze
|
96
|
+
|
82
97
|
# Public: Regexp pattern to search/replace British words endings
|
83
|
-
BRITISH_ENDING_PATTERN = /#{Regexp.union(ENDINGS.keys)}(?=_
|
98
|
+
BRITISH_ENDING_PATTERN = /#{Regexp.union(ENDINGS.keys)}(?=_|\?|\!|=|$)/
|
84
99
|
|
85
100
|
# Public: Regexp pattern to search/replace American words endings
|
86
|
-
AMERICAN_ENDING_PATTERN = /#{Regexp.union(ENDINGS.values)}(?=_
|
101
|
+
AMERICAN_ENDING_PATTERN = /#{Regexp.union(ENDINGS.values)}(?=_|\?|\!|=|$)/
|
87
102
|
|
88
103
|
# Public: Submodule to be included in your own classes to use `initialise`
|
89
104
|
# and allow American methods to be called from outside
|
@@ -163,19 +178,19 @@ module British
|
|
163
178
|
host_class.extend ClassMethods
|
164
179
|
host_class.class_overwrite_method_missing
|
165
180
|
|
181
|
+
return unless host_class.private_methods(true).include?(:method_added)
|
182
|
+
|
166
183
|
# Inject our own method_added hook to catch it when
|
167
184
|
# `method_missing` is added
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
class_overwrite_method_missing if name == :method_missing
|
173
|
-
end
|
174
|
-
|
175
|
-
# do not mess with others :method_added
|
176
|
-
alias original_method_added method_added
|
177
|
-
alias method_added british_method_added
|
185
|
+
host_class.instance_eval do
|
186
|
+
def british_method_added(name)
|
187
|
+
original_method_added(name)
|
188
|
+
class_overwrite_method_missing if name == :method_missing
|
178
189
|
end
|
190
|
+
|
191
|
+
# do not mess with others :method_added
|
192
|
+
alias original_method_added method_added
|
193
|
+
alias method_added british_method_added
|
179
194
|
end
|
180
195
|
end
|
181
196
|
|
@@ -199,19 +214,19 @@ module British
|
|
199
214
|
host_object.extend ClassMethods
|
200
215
|
host_object.object_overwrite_method_missing
|
201
216
|
|
217
|
+
return unless host_object.private_methods(true).include?(:singleton_method_added)
|
218
|
+
|
202
219
|
# Inject our own singleton_method_added hook to catch it when
|
203
220
|
# `method_missing` is added
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
object_overwrite_method_missing if name == :method_missing
|
209
|
-
end
|
210
|
-
|
211
|
-
# do not mess with others :singleton_method_added
|
212
|
-
alias original_singleton_method_added singleton_method_added
|
213
|
-
alias singleton_method_added british_singleton_method_added
|
221
|
+
host_object.instance_eval do
|
222
|
+
def british_singleton_method_added(name)
|
223
|
+
original_singleton_method_added(name)
|
224
|
+
object_overwrite_method_missing if name == :method_missing
|
214
225
|
end
|
226
|
+
|
227
|
+
# do not mess with others :singleton_method_added
|
228
|
+
alias original_singleton_method_added singleton_method_added
|
229
|
+
alias singleton_method_added british_singleton_method_added
|
215
230
|
end
|
216
231
|
end
|
217
232
|
|
@@ -251,14 +266,30 @@ module British
|
|
251
266
|
class_eval do
|
252
267
|
unless method_defined?(:british_method_missing)
|
253
268
|
define_method(:british_method_missing) do |name, *args|
|
269
|
+
binded_class = self.class
|
270
|
+
|
254
271
|
# When in our own British class
|
255
|
-
if
|
272
|
+
if binded_class.include?(British::Initialisable)
|
273
|
+
name_str = name.to_s
|
274
|
+
|
256
275
|
# do American magic
|
257
|
-
britanised_name =
|
276
|
+
britanised_name = if name_str =~ /_/
|
277
|
+
name_str.gsub(AMERICAN_ENDING_PATTERN, INVERTED_ENDINGS)
|
278
|
+
else
|
279
|
+
name_str.sub(AMERICAN_ENDING_PATTERN, INVERTED_ENDINGS)
|
280
|
+
end
|
281
|
+
|
258
282
|
return send(britanised_name, *args) if respond_to?(britanised_name)
|
259
283
|
else
|
284
|
+
name_str = name.to_s
|
285
|
+
|
260
286
|
# do British magic
|
261
|
-
americanised_name =
|
287
|
+
americanised_name = if name_str =~ /_/
|
288
|
+
name_str.gsub(BRITISH_ENDING_PATTERN, ENDINGS)
|
289
|
+
else
|
290
|
+
name_str.sub(BRITISH_ENDING_PATTERN, ENDINGS)
|
291
|
+
end
|
292
|
+
|
262
293
|
return send(americanised_name, *args) if respond_to?(americanised_name)
|
263
294
|
end
|
264
295
|
|
@@ -266,7 +297,7 @@ module British
|
|
266
297
|
return original_method_missing(name, *args) if caller[0] !~ /method_missing/ && defined?(:original_method_missing)
|
267
298
|
|
268
299
|
# call original parent's method_missing
|
269
|
-
method =
|
300
|
+
method = binded_class.superclass.instance_method(:original_method_missing)
|
270
301
|
return method.bind(self).call(name, *args) if method
|
271
302
|
end
|
272
303
|
end
|
@@ -312,7 +343,12 @@ module British
|
|
312
343
|
unless respond_to?(:british_method_missing)
|
313
344
|
def british_method_missing(name, *args)
|
314
345
|
# do British magic
|
315
|
-
americanised_name = name.to_s
|
346
|
+
americanised_name = if name.to_s =~ /_/
|
347
|
+
name.to_s.gsub(BRITISH_ENDING_PATTERN, ENDINGS)
|
348
|
+
else
|
349
|
+
name.to_s.sub(BRITISH_ENDING_PATTERN, ENDINGS)
|
350
|
+
end
|
351
|
+
|
316
352
|
return send(americanised_name, *args) if respond_to?(americanised_name)
|
317
353
|
|
318
354
|
# call original method_missing (avoid double original method calls)
|
metadata
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: british
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Serge Bedzhyk
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-12-07 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: 'Allows to use alternative words endings: -ise instead of -ize etc. Defines
|
14
|
-
`is_an?` as an alias of the is_a? method. Provides module to use `initialise`
|
15
|
-
your classes.'
|
14
|
+
`is_an?` as an alias of the is_a? method. Provides a module to use `initialise`
|
15
|
+
in your classes.'
|
16
16
|
email: smileart21@gmail.com
|
17
17
|
executables: []
|
18
18
|
extensions: []
|
@@ -42,6 +42,5 @@ rubyforge_project:
|
|
42
42
|
rubygems_version: 2.5.1
|
43
43
|
signing_key:
|
44
44
|
specification_version: 4
|
45
|
-
summary: A tiny module
|
45
|
+
summary: A tiny module which is supposed to help Brits to use Ruby with more comfort
|
46
46
|
test_files: []
|
47
|
-
has_rdoc:
|