burke-monkeysupport 0.0.3 → 0.0.4
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/VERSION +1 -1
- data/lib/monkeysupport.rb +5 -0
- data/lib/monkeysupport/inflector.rb +10 -51
- data/lib/monkeysupport/memoizable.rb +31 -0
- data/lib/monkeysupport/type_checks.rb +27 -0
- data/monkeysupport.gemspec +5 -1
- metadata +5 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.4
|
data/lib/monkeysupport.rb
CHANGED
@@ -1,50 +1,13 @@
|
|
1
1
|
module ActiveSupport
|
2
2
|
module Inflector
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
end
|
8
|
-
|
9
|
-
if '1.9'.respond_to?(:force_encoding)
|
10
|
-
ASCII_ENCODING = Encoding.find("ASCII-8BIT")
|
11
|
-
if Encoding.default_external == ASCII_ENCODING
|
12
|
-
def check_ascii_string(obj)
|
13
|
-
(obj.class == String) && obj.encoding == ASCII_ENCODING
|
14
|
-
end
|
15
|
-
else
|
16
|
-
def check_ascii_string(obj)
|
17
|
-
#TODO: Check ascii_only? and force_encoding here.
|
18
|
-
(obj.class == String) && obj.encoding == ASCII_ENCODING
|
19
|
-
end
|
20
|
-
end
|
21
|
-
else # <1.9
|
22
|
-
def check_ascii_string(obj)
|
23
|
-
obj.class == String
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
@_pluralize = {}
|
28
|
-
alias_method :__pluralize, :pluralize
|
29
|
-
def pluralize(word)
|
30
|
-
@_pluralize[word] ||= __pluralize(word)
|
31
|
-
end
|
32
|
-
|
33
|
-
@_singularize = {}
|
34
|
-
alias_method :__singularize, :singularize
|
35
|
-
def singularize(word)
|
36
|
-
@_singularize[word] ||= __singularize(word)
|
37
|
-
end
|
38
|
-
|
39
|
-
@_humanize = {}
|
40
|
-
alias_method :__humanize, :humanize
|
41
|
-
def humanize(word)
|
42
|
-
@_humanize[word] ||= __humanize(word)
|
43
|
-
end
|
4
|
+
extend MonkeySupport::Memoizable
|
5
|
+
extend MonkeySupport::TypeChecks
|
6
|
+
monkey_memoize :pluralize, :singularize, :humanize
|
44
7
|
|
45
8
|
alias_method :__camelize, :camelize
|
46
9
|
def camelize(lower_case_and_underscored_word, first_letter_in_uppercase = true)
|
47
|
-
if
|
10
|
+
if is_ascii_string?(lower_case_and_underscored_word)
|
48
11
|
ActiveSupport::ASC.inflector_camelize(lower_case_and_underscored_word.to_s, first_letter_in_uppercase)
|
49
12
|
else
|
50
13
|
__camelize(lower_case_and_underscored_word, first_letter_in_uppercase)
|
@@ -53,17 +16,16 @@ module ActiveSupport
|
|
53
16
|
|
54
17
|
alias_method :__underscore, :underscore
|
55
18
|
def underscore(camel_cased_word)
|
56
|
-
if
|
19
|
+
if is_ascii_string?(camel_cased_word)
|
57
20
|
ActiveSupport::ASC.inflector_underscore(camel_cased_word)
|
58
21
|
else
|
59
22
|
__underscore(camel_cased_word)
|
60
23
|
end
|
61
24
|
end
|
62
25
|
|
63
|
-
|
64
26
|
alias_method :__dasherize, :dasherize
|
65
27
|
def dasherize(underscored_word)
|
66
|
-
if
|
28
|
+
if is_ascii_string?(underscored_word)
|
67
29
|
ActiveSupport::ASC.inflector_dasherize(underscored_word)
|
68
30
|
else
|
69
31
|
__dasherize(underscored_word)
|
@@ -72,39 +34,36 @@ module ActiveSupport
|
|
72
34
|
|
73
35
|
alias_method :__demodulize, :demodulize
|
74
36
|
def demodulize(class_name_in_module)
|
75
|
-
if
|
37
|
+
if is_ascii_string?(class_name_in_module)
|
76
38
|
ActiveSupport::ASC.inflector_demodulize(class_name_in_module)
|
77
39
|
else
|
78
40
|
__demodulize(class_name_in_module)
|
79
41
|
end
|
80
42
|
end
|
81
43
|
|
82
|
-
|
83
44
|
alias_method :__parameterize, :parameterize
|
84
45
|
def parameterize(string, sep = '-')
|
85
46
|
parameterized_string = transliterate(string)
|
86
|
-
if
|
47
|
+
if is_ascii_string?(parameterized_string) && is_ascii_string?(sep)
|
87
48
|
ActiveSupport::ASC.inflector_parameterize(parameterized_string.to_s, sep)
|
88
49
|
else
|
89
50
|
__parameterize(string, sep)
|
90
51
|
end
|
91
52
|
end
|
92
53
|
|
93
|
-
|
94
54
|
alias_method :__foreign_key, :foreign_key
|
95
55
|
def foreign_key(class_name, separate_class_name_and_id_with_underscore = true)
|
96
|
-
if
|
56
|
+
if is_ascii_string?(class_name)
|
97
57
|
ActiveSupport::ASC.inflector_foreign_key(class_name, separate_class_name_and_id_with_underscore)
|
98
58
|
else
|
99
59
|
__foreign_key(class_name, separate_class_name_and_id_with_underscore)
|
100
60
|
end
|
101
61
|
end
|
102
62
|
|
103
|
-
|
104
63
|
alias_method :__ordinalize, :ordinalize
|
105
64
|
def ordinalize(number)
|
106
65
|
x = number.to_i
|
107
|
-
if
|
66
|
+
if is_fixnum?(x)
|
108
67
|
ActiveSupport::ASC.inflector_ordinalize(number.to_i)
|
109
68
|
else
|
110
69
|
__ordinalize(number)
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module MonkeySupport
|
2
|
+
module Memoizable
|
3
|
+
# This is faster than AS::Memoizeable
|
4
|
+
def monkey_memoize(*methods)
|
5
|
+
methods.each do |method|
|
6
|
+
class_eval( <<"END"
|
7
|
+
|
8
|
+
@__#{method} = {}
|
9
|
+
alias_method :__#{method}, :#{method}
|
10
|
+
|
11
|
+
if method(:#{method}).arity == 1
|
12
|
+
|
13
|
+
def #{method}(arg)
|
14
|
+
@__#{method}[arg] ||= __#{method}(arg)
|
15
|
+
end
|
16
|
+
|
17
|
+
else
|
18
|
+
|
19
|
+
def #{method}(*args)
|
20
|
+
@__#{method}[args] ||= __#{method}(*args)
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
END
|
26
|
+
)
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module MonkeySupport
|
2
|
+
module TypeChecks
|
3
|
+
|
4
|
+
def is_fixnum?(obj)
|
5
|
+
obj.class == Fixnum
|
6
|
+
end
|
7
|
+
|
8
|
+
if '1.9'.respond_to?(:force_encoding)
|
9
|
+
ASCII_ENCODING = Encoding.find("ASCII-8BIT")
|
10
|
+
if Encoding.default_external == ASCII_ENCODING
|
11
|
+
def is_ascii_string?(obj)
|
12
|
+
(obj.class == String) && obj.encoding == ASCII_ENCODING
|
13
|
+
end
|
14
|
+
else
|
15
|
+
def is_ascii_string?(obj)
|
16
|
+
#TODO: Check ascii_only? and force_encoding here.
|
17
|
+
(obj.class == String) && obj.encoding == ASCII_ENCODING
|
18
|
+
end
|
19
|
+
end
|
20
|
+
else # <1.9
|
21
|
+
def is_ascii_string?(obj)
|
22
|
+
obj.class == String
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
data/monkeysupport.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{monkeysupport}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Burke Libbey"]
|
@@ -50,6 +50,10 @@ Gem::Specification.new do |s|
|
|
50
50
|
"lib/monkeysupport.rb",
|
51
51
|
"lib/monkeysupport/inflector.rb",
|
52
52
|
"lib/monkeysupport/inflector.rb",
|
53
|
+
"lib/monkeysupport/memoizable.rb",
|
54
|
+
"lib/monkeysupport/memoizable.rb",
|
55
|
+
"lib/monkeysupport/type_checks.rb",
|
56
|
+
"lib/monkeysupport/type_checks.rb",
|
53
57
|
"monkeysupport.gemspec",
|
54
58
|
"test/monkeysupport_test.rb",
|
55
59
|
"test/monkeysupport_test.rb",
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: burke-monkeysupport
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Burke Libbey
|
@@ -51,11 +51,14 @@ files:
|
|
51
51
|
- ext/inflector.h
|
52
52
|
- lib/monkeysupport.rb
|
53
53
|
- lib/monkeysupport/inflector.rb
|
54
|
+
- lib/monkeysupport/memoizable.rb
|
55
|
+
- lib/monkeysupport/type_checks.rb
|
54
56
|
- monkeysupport.gemspec
|
55
57
|
- test/monkeysupport_test.rb
|
56
58
|
- test/test_helper.rb
|
57
59
|
has_rdoc: false
|
58
60
|
homepage: http://github.com/burke/monkeysupport
|
61
|
+
licenses:
|
59
62
|
post_install_message:
|
60
63
|
rdoc_options:
|
61
64
|
- --charset=UTF-8
|
@@ -76,7 +79,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
76
79
|
requirements: []
|
77
80
|
|
78
81
|
rubyforge_project:
|
79
|
-
rubygems_version: 1.
|
82
|
+
rubygems_version: 1.3.5
|
80
83
|
signing_key:
|
81
84
|
specification_version: 3
|
82
85
|
summary: Monkeypatching Rails with C since 2009
|