hoodie 1.0.2 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/hoodie/inflections.rb +39 -8
- data/lib/hoodie/stash/disk_store.rb +8 -3
- data/lib/hoodie/utils/konstruktor.rb +2 -2
- data/lib/hoodie/utils/machine.rb +2 -3
- data/lib/hoodie/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f676e87cf9a6241c2607f7eead7c60e992723742
|
4
|
+
data.tar.gz: c74b9f4fd735a31eb9aa29faca59e91f3b514182
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c1132afa221a4facb28f9a76228f81e2da35702972c53ee7f5dd17fc7899f6a0b88ccf953ae6a73676b3eeec8d5d41175d9e2c8aa1a8d26da59f629a83b2f5ba
|
7
|
+
data.tar.gz: 41139176977147cbc12b9759ac869d3bc48b35f669db9f050e75485746d7bfeebcf317e821e5f571555e603ef9fcce2fb7d38da89981ee95ef5500210d6eeb30
|
data/lib/hoodie/inflections.rb
CHANGED
@@ -26,21 +26,24 @@ module Hoodie
|
|
26
26
|
# and uncountable words are kept in inflections.rb.
|
27
27
|
#
|
28
28
|
module Inflections
|
29
|
-
|
30
29
|
# Convert input to UpperCamelCase. Will also convert '/' to '::' which is
|
31
30
|
# useful for converting paths to namespaces.
|
32
31
|
#
|
33
32
|
# @param [String] input
|
33
|
+
#
|
34
34
|
# @return [String]
|
35
|
+
#
|
35
36
|
def self.camelize(input)
|
36
|
-
input.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:\A|_)(.)/) {
|
37
|
+
input.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:\A|_)(.)/) {$1.upcase}
|
37
38
|
end
|
38
39
|
|
39
40
|
# Convert input to underscored, lowercase string. Changes '::' to '/' to
|
40
41
|
# convert namespaces to paths.
|
41
42
|
#
|
42
43
|
# @param [String] input
|
44
|
+
#
|
43
45
|
# @return [String]
|
46
|
+
#
|
44
47
|
def self.underscore(input)
|
45
48
|
word = input.gsub(/::/, '/')
|
46
49
|
underscorize(word)
|
@@ -49,7 +52,9 @@ module Hoodie
|
|
49
52
|
# Convert input underscores to dashes.
|
50
53
|
#
|
51
54
|
# @param [String] input
|
55
|
+
#
|
52
56
|
# @return [String]
|
57
|
+
#
|
53
58
|
def self.dasherize(input)
|
54
59
|
input.tr('_', '-')
|
55
60
|
end
|
@@ -57,7 +62,9 @@ module Hoodie
|
|
57
62
|
# Return unscoped constant name.
|
58
63
|
#
|
59
64
|
# @param [String] input
|
65
|
+
#
|
60
66
|
# @return [String]
|
67
|
+
#
|
61
68
|
def self.demodulize(input)
|
62
69
|
input.split('::').last
|
63
70
|
end
|
@@ -65,7 +72,9 @@ module Hoodie
|
|
65
72
|
# Creates a foreign key name
|
66
73
|
#
|
67
74
|
# @param [String] input
|
75
|
+
#
|
68
76
|
# @return [String]
|
77
|
+
#
|
69
78
|
def self.foreign_key(input)
|
70
79
|
"#{underscorize(demodulize(input))}_id"
|
71
80
|
end
|
@@ -75,7 +84,9 @@ module Hoodie
|
|
75
84
|
# caller is igored.
|
76
85
|
#
|
77
86
|
# @param [String] input
|
87
|
+
#
|
78
88
|
# @return [Class, Module]
|
89
|
+
#
|
79
90
|
def self.constantize(input)
|
80
91
|
names = input.split('::')
|
81
92
|
names.shift if names.first.empty?
|
@@ -94,7 +105,9 @@ module Hoodie
|
|
94
105
|
# Convert a number into an ordinal string.
|
95
106
|
#
|
96
107
|
# @param [Fixnum] number
|
108
|
+
#
|
97
109
|
# @return [String]
|
110
|
+
#
|
98
111
|
def self.ordinalize(number)
|
99
112
|
abs_value = number.abs
|
100
113
|
|
@@ -112,7 +125,9 @@ module Hoodie
|
|
112
125
|
# Convert input word string to plural
|
113
126
|
#
|
114
127
|
# @param [String] word
|
128
|
+
#
|
115
129
|
# @return [String]
|
130
|
+
#
|
116
131
|
def self.pluralize(word)
|
117
132
|
return word if uncountable?(word)
|
118
133
|
inflections.plurals.apply_to(word)
|
@@ -121,7 +136,9 @@ module Hoodie
|
|
121
136
|
# Convert word to singular
|
122
137
|
#
|
123
138
|
# @param [String] word
|
139
|
+
#
|
124
140
|
# @return [String]
|
141
|
+
#
|
125
142
|
def self.singularize(word)
|
126
143
|
return word if uncountable?(word)
|
127
144
|
inflections.singulars.apply_to(word)
|
@@ -130,7 +147,9 @@ module Hoodie
|
|
130
147
|
# Humanize string.
|
131
148
|
#
|
132
149
|
# @param [String] input
|
150
|
+
#
|
133
151
|
# @return [String]
|
152
|
+
#
|
134
153
|
def self.humanize(input)
|
135
154
|
result = inflections.humans.apply_to(input)
|
136
155
|
result.gsub!(/_id\z/, "")
|
@@ -142,7 +161,9 @@ module Hoodie
|
|
142
161
|
# Tabelize input string.
|
143
162
|
#
|
144
163
|
# @param [String] input
|
164
|
+
#
|
145
165
|
# @return [String]
|
166
|
+
#
|
146
167
|
def self.tableize(input)
|
147
168
|
pluralize(underscore(input).gsub('/', '_'))
|
148
169
|
end
|
@@ -151,7 +172,9 @@ module Hoodie
|
|
151
172
|
# names to models.
|
152
173
|
#
|
153
174
|
# @param [String] input
|
175
|
+
#
|
154
176
|
# @return [String]
|
177
|
+
#
|
155
178
|
def self.classify(table_name)
|
156
179
|
camelize(singularize(table_name.sub(/.*\./, '')))
|
157
180
|
end
|
@@ -159,9 +182,12 @@ module Hoodie
|
|
159
182
|
# Create a snake case string with an optional namespace prepended.
|
160
183
|
#
|
161
184
|
# @param [String] input
|
185
|
+
#
|
162
186
|
# @param [String] namespace
|
187
|
+
#
|
163
188
|
# @return [String]
|
164
|
-
|
189
|
+
#
|
190
|
+
def self.snakeify(input, namespace = nil)
|
165
191
|
input = input.dup
|
166
192
|
input.sub!(/^#{namespace}(\:\:)?/, '') if namespace
|
167
193
|
input.gsub!(/[A-Z]/) {|s| "_" + s}
|
@@ -173,7 +199,9 @@ module Hoodie
|
|
173
199
|
# Test if word is uncountable.
|
174
200
|
#
|
175
201
|
# @param [String] word
|
202
|
+
#
|
176
203
|
# @return [Boolean] true, if word is uncountable
|
204
|
+
#
|
177
205
|
def self.uncountable?(word)
|
178
206
|
word.empty? || inflections.uncountables.include?(word.downcase)
|
179
207
|
end
|
@@ -181,7 +209,9 @@ module Hoodie
|
|
181
209
|
# Convert input to underscored, lowercase string
|
182
210
|
#
|
183
211
|
# @param [String] input
|
212
|
+
#
|
184
213
|
# @return [String]
|
214
|
+
#
|
185
215
|
def self.underscorize(word)
|
186
216
|
word.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
|
187
217
|
word.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
|
@@ -191,9 +221,10 @@ module Hoodie
|
|
191
221
|
end
|
192
222
|
private_class_method :underscorize
|
193
223
|
|
194
|
-
# Yields a singleton instance of
|
224
|
+
# Yields a singleton instance of Garcon::Inflections.
|
225
|
+
#
|
226
|
+
# @return [Garcon::Inflections]
|
195
227
|
#
|
196
|
-
# @return [Inflections::Inflections]
|
197
228
|
def self.inflections
|
198
229
|
instance = Inflections.instance
|
199
230
|
block_given? ? yield(instance) : instance
|
@@ -201,6 +232,6 @@ module Hoodie
|
|
201
232
|
end
|
202
233
|
end
|
203
234
|
|
204
|
-
|
205
|
-
|
206
|
-
|
235
|
+
require_relative 'inflections/rules_collection'
|
236
|
+
require_relative 'inflections/inflections'
|
237
|
+
require_relative 'inflections/defaults'
|
@@ -31,9 +31,10 @@ module Hoodie
|
|
31
31
|
|
32
32
|
# Initializes a new disked backed stash hash cache store.
|
33
33
|
#
|
34
|
-
# @param
|
34
|
+
# @param [String] path
|
35
|
+
# Location for stash store cache.
|
35
36
|
#
|
36
|
-
# @return
|
37
|
+
# @return [DiskStore]
|
37
38
|
#
|
38
39
|
def initialize(store = file_store)
|
39
40
|
@store = store
|
@@ -117,7 +118,11 @@ module Hoodie
|
|
117
118
|
write_cache_file(key, Marshal.dump(value))
|
118
119
|
end
|
119
120
|
|
120
|
-
#
|
121
|
+
# Returns path to cache file with 'key'
|
122
|
+
#
|
123
|
+
# @return [String]
|
124
|
+
# Path to cache file.
|
125
|
+
#
|
121
126
|
def cache_file(key)
|
122
127
|
File.join(store, key.to_s + '.cache')
|
123
128
|
end
|
data/lib/hoodie/utils/machine.rb
CHANGED
@@ -29,11 +29,11 @@
|
|
29
29
|
# )
|
30
30
|
#
|
31
31
|
# def initialize
|
32
|
-
# @
|
32
|
+
# @machine = Machine.new(STATE_TRANSITIONS, :awaiting_foo)
|
33
33
|
# end
|
34
34
|
#
|
35
35
|
# def handle_event(event)
|
36
|
-
# action = @
|
36
|
+
# action = @machine.send_input(event)
|
37
37
|
# send(action) unless action.nil?
|
38
38
|
# end
|
39
39
|
#
|
@@ -80,4 +80,3 @@ module Hoodie
|
|
80
80
|
end
|
81
81
|
end
|
82
82
|
end
|
83
|
-
|
data/lib/hoodie/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hoodie
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stefano Harding
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-05-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|