british 0.1.1 → 0.2.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.
- checksums.yaml +4 -4
- data/lib/british.rb +65 -34
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3836974f5f6e65cc936f70cf0c34dad3eb98f9b7
|
4
|
+
data.tar.gz: 7ec6347cb6583f9cea09d399e32e277a60ce6753
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2efa86bab2c4438f3bba0b8831e57a727019f01cde7b6e8187c50b049636dbb31a86bddcab39915fbd32e3d70cbcc1c213ef0aad1cd9404cd89e67fc64b130f5
|
7
|
+
data.tar.gz: f103153e8c950d6397c718025eb1c25516d8fba309c10380ae64755f4ca9dfd3c65c17809cc80bcdb701d16d877498258401ff256f298483a4d578037030aed7
|
data/lib/british.rb
CHANGED
@@ -62,7 +62,10 @@ module British
|
|
62
62
|
'isation' => 'ization',
|
63
63
|
'yse' => 'yze',
|
64
64
|
'ogue' => 'og'
|
65
|
-
}
|
65
|
+
}.freeze
|
66
|
+
|
67
|
+
# Public: Regexp pattern to search/replace British words endings
|
68
|
+
BRITISH_ENDING_PATTERN = /#{Regexp.union(ENDINGS.keys)}(?=_|-|\?|\!|=|$)/
|
66
69
|
|
67
70
|
# Public: Submodule to be included in your own classes to use `initialise`
|
68
71
|
#
|
@@ -94,46 +97,74 @@ module British
|
|
94
97
|
# Public: British alias of native is_a? method
|
95
98
|
# Returns the original method's result
|
96
99
|
def is_an?(*args)
|
97
|
-
is_a?(*args) if
|
100
|
+
is_a?(*args) if respond_to?(:is_a?)
|
98
101
|
end
|
99
102
|
|
100
103
|
# Public: additional alias for is_an?/is_a? method
|
101
|
-
|
104
|
+
alias an? is_an?
|
102
105
|
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
# name - original method name
|
107
|
-
# *args - original method args
|
108
|
-
#
|
109
|
-
# Example
|
110
|
-
#
|
111
|
-
# # with any British object
|
112
|
-
# british_object.colour # will be translated into color
|
113
|
-
# british_object.magnetise # will be translated into magnetize
|
114
|
-
#
|
115
|
-
# # all method endings age allowed
|
116
|
-
# british_object.surprize!
|
117
|
-
# british_object.surprize?
|
118
|
-
# british_object.surprize=
|
119
|
-
#
|
120
|
-
# # complex names are supported
|
121
|
-
# british_object.initialise_something # initialize_something will be called
|
122
|
-
#
|
123
|
-
# Returns the original method's result
|
124
|
-
# Raises NoMethodError if the method cannot be found.
|
125
|
-
def method_missing(name, *args)
|
126
|
-
name = name.to_s
|
106
|
+
def self.included(host_class)
|
107
|
+
host_class.extend ClassMethods
|
108
|
+
host_class.overwrite_method_missing
|
127
109
|
|
128
|
-
|
129
|
-
|
110
|
+
host_class.instance_eval do
|
111
|
+
def method_added(name)
|
112
|
+
return if name != :method_missing
|
113
|
+
overwrite_method_missing
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
130
117
|
|
131
|
-
|
132
|
-
|
118
|
+
# Public: ClassMethods to extend in self.included
|
119
|
+
# Defines an?, is_an?, method_missing
|
120
|
+
module ClassMethods
|
133
121
|
|
134
|
-
|
135
|
-
|
122
|
+
# Public: method to overwrite original method_missing with magic one:
|
123
|
+
# this method_missing tries to translate British methods to American
|
124
|
+
# ones before throwing NoMethodError if neither method was found.
|
125
|
+
#
|
126
|
+
# name - original method name
|
127
|
+
# *args - original method args
|
128
|
+
#
|
129
|
+
# Example
|
130
|
+
#
|
131
|
+
# # with any British object
|
132
|
+
# british_object.colour # will be translated into color
|
133
|
+
# british_object.magnetise # will be translated into magnetize
|
134
|
+
#
|
135
|
+
# # all method endings age allowed
|
136
|
+
# british_object.surprize!
|
137
|
+
# british_object.surprize?
|
138
|
+
# british_object.surprize=
|
139
|
+
#
|
140
|
+
# # complex names are supported
|
141
|
+
# british_object.initialise_something # initialize_something will be called
|
142
|
+
#
|
143
|
+
# Returns the original method's result
|
144
|
+
# Calls original method_missing (if British didn't hook anything)
|
145
|
+
# Raises NoMethodError if the method cannot be found
|
146
|
+
def overwrite_method_missing
|
147
|
+
class_eval do
|
148
|
+
unless method_defined?(:british_method_missing)
|
149
|
+
define_method(:british_method_missing) do |name, *args|
|
150
|
+
# do British magic
|
151
|
+
americanised_name = name.to_s.gsub(BRITISH_ENDING_PATTERN, ENDINGS)
|
152
|
+
return send(americanised_name, *args) if respond_to?(americanised_name)
|
136
153
|
|
137
|
-
|
154
|
+
# call original method_missing (avoid double original method calls)
|
155
|
+
return original_method_missing(name, *args) if caller[0] !~ /method_missing/ && defined?(:original_method_missing)
|
156
|
+
|
157
|
+
# call original parent's method_missing
|
158
|
+
method = self.class.superclass.instance_method(:original_method_missing)
|
159
|
+
return method.bind(self).call(name, *args) if method
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
if instance_method(:method_missing) != instance_method(:british_method_missing)
|
164
|
+
alias_method :original_method_missing, :method_missing
|
165
|
+
alias_method :method_missing, :british_method_missing
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|
138
169
|
end
|
139
170
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: british
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.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-03-06 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: 'Allows to use alternative words endings: -ise instead of -ize etc. Defines
|
14
14
|
`is_an?` as an alias of the is_a? method. Provides module to use `initialise` in
|
@@ -39,7 +39,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
39
39
|
version: '0'
|
40
40
|
requirements: []
|
41
41
|
rubyforge_project:
|
42
|
-
rubygems_version: 2.5.
|
42
|
+
rubygems_version: 2.5.2
|
43
43
|
signing_key:
|
44
44
|
specification_version: 4
|
45
45
|
summary: A tiny module that is supposed to help Brits to use Ruby with more comfort.
|