hyperion-api 0.0.1.alpha4 → 0.0.1.alpha5
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/hyperion/api.rb +5 -9
- data/lib/hyperion/util.rb +31 -4
- data/spec/hyperion/api_spec.rb +6 -0
- data/spec/hyperion/util_spec.rb +24 -0
- metadata +1 -1
data/lib/hyperion/api.rb
CHANGED
@@ -23,8 +23,9 @@ module Hyperion
|
|
23
23
|
# Assigns the datastore within the given block
|
24
24
|
def with_datastore(name, opts={})
|
25
25
|
self.datastore = new_datastore(name, opts)
|
26
|
-
yield
|
26
|
+
result = yield
|
27
27
|
self.datastore = nil
|
28
|
+
result
|
28
29
|
end
|
29
30
|
|
30
31
|
def new_datastore(name, opts={})
|
@@ -167,7 +168,7 @@ module Hyperion
|
|
167
168
|
def format_record(record)
|
168
169
|
if record
|
169
170
|
record = record.reduce({}) do |new_record, (key, value)|
|
170
|
-
new_record[snake_case(key.to_s).to_sym] = value
|
171
|
+
new_record[Util.snake_case(key.to_s).to_sym] = value
|
171
172
|
new_record
|
172
173
|
end
|
173
174
|
record[:kind] = format_kind(record[:kind])
|
@@ -176,16 +177,11 @@ module Hyperion
|
|
176
177
|
end
|
177
178
|
|
178
179
|
def format_kind(kind)
|
179
|
-
snake_case(kind.to_s)
|
180
|
+
Util.snake_case(kind.to_s)
|
180
181
|
end
|
181
182
|
|
182
183
|
def format_field(field)
|
183
|
-
snake_case(field.to_s).to_sym
|
184
|
-
end
|
185
|
-
|
186
|
-
def snake_case(str)
|
187
|
-
separate_camel_humps = str.gsub(/([a-z0-9])([A-Z])/, '\1 \2').downcase
|
188
|
-
separate_camel_humps.gsub(/[ |\-]/, '_')
|
184
|
+
Util.snake_case(field.to_s).to_sym
|
189
185
|
end
|
190
186
|
|
191
187
|
end
|
data/lib/hyperion/util.rb
CHANGED
@@ -4,13 +4,40 @@ module Hyperion
|
|
4
4
|
class << self
|
5
5
|
|
6
6
|
def camel_case(str)
|
7
|
-
str.gsub(/[_| |\-][A-Za-z]/) { |a| a[1..-1].upcase }
|
7
|
+
cameled = str.gsub(/[_| |\-][A-Za-z]/) { |a| a[1..-1].upcase } if str
|
8
|
+
uncapitalize(cameled)
|
8
9
|
end
|
9
10
|
|
10
11
|
def class_name(str)
|
11
|
-
|
12
|
-
|
13
|
-
|
12
|
+
capitalize(camel_case(str))
|
13
|
+
end
|
14
|
+
|
15
|
+
def snake_case(str)
|
16
|
+
str.gsub(/([a-z0-9])([A-Z])/, '\1 \2').downcase.gsub(/[ |\-]/, '_') if str
|
17
|
+
end
|
18
|
+
|
19
|
+
def capitalize(str)
|
20
|
+
do_to_first(str) do |first_letter|
|
21
|
+
first_letter.upcase
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def uncapitalize(str)
|
26
|
+
do_to_first(str) do |first_letter|
|
27
|
+
first_letter.downcase
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def do_to_first(str)
|
32
|
+
if str
|
33
|
+
first = yield(str[0, 1])
|
34
|
+
if str.length > 1
|
35
|
+
last = str[1..-1]
|
36
|
+
first + last
|
37
|
+
else
|
38
|
+
first
|
39
|
+
end
|
40
|
+
end
|
14
41
|
end
|
15
42
|
|
16
43
|
end
|
data/spec/hyperion/api_spec.rb
CHANGED
@@ -12,6 +12,12 @@ describe Hyperion::API do
|
|
12
12
|
it 'will throw an error if the datastore is called before assignment' do
|
13
13
|
expect{ subject.datastore }.to raise_error
|
14
14
|
end
|
15
|
+
|
16
|
+
it 'assigns datastore and returns the result' do
|
17
|
+
api.with_datastore(:memory) do
|
18
|
+
:return
|
19
|
+
end.should == :return
|
20
|
+
end
|
15
21
|
end
|
16
22
|
|
17
23
|
context 'factory' do
|
data/spec/hyperion/util_spec.rb
CHANGED
@@ -15,6 +15,25 @@ describe Hyperion::Util do
|
|
15
15
|
util.camel_case('with spaces').should == 'withSpaces'
|
16
16
|
util.camel_case('with-dash').should == 'withDash'
|
17
17
|
util.camel_case('starting Capital').should == 'startingCapital'
|
18
|
+
util.camel_case('StartingCapital').should == 'startingCapital'
|
19
|
+
util.camel_case('O').should == 'o'
|
20
|
+
util.camel_case('').should == ''
|
21
|
+
util.camel_case(nil).should == nil
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'snake cases words' do
|
25
|
+
util.snake_case('fake_ds').should == 'fake_ds'
|
26
|
+
util.snake_case('defaultSceneName').should == 'default_scene_name'
|
27
|
+
util.snake_case('set defaultSceneName').should == 'set_default_scene_name'
|
28
|
+
util.snake_case('class_name').should == 'class_name'
|
29
|
+
util.snake_case('once_upon_a_time').should == 'once_upon_a_time'
|
30
|
+
util.snake_case('with spaces').should == 'with_spaces'
|
31
|
+
util.snake_case('with-dash').should == 'with_dash'
|
32
|
+
util.snake_case('starting Capital').should == 'starting_capital'
|
33
|
+
util.snake_case('StartingCapital').should == 'starting_capital'
|
34
|
+
util.snake_case('O').should == 'o'
|
35
|
+
util.snake_case('').should == ''
|
36
|
+
util.snake_case(nil).should == nil
|
18
37
|
end
|
19
38
|
|
20
39
|
it 'converts to class name' do
|
@@ -26,5 +45,10 @@ describe Hyperion::Util do
|
|
26
45
|
util.class_name('with spaces').should == 'WithSpaces'
|
27
46
|
util.class_name('with-dash').should == 'WithDash'
|
28
47
|
util.class_name('starting Capital').should == 'StartingCapital'
|
48
|
+
util.class_name('StartingCapital').should == 'StartingCapital'
|
49
|
+
util.class_name('S').should == 'S'
|
50
|
+
util.class_name('s').should == 'S'
|
51
|
+
util.class_name('').should == ''
|
52
|
+
util.class_name(nil).should == nil
|
29
53
|
end
|
30
54
|
end
|