sinatra-api-helpers 1.0.0 → 1.0.1

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.
@@ -0,0 +1,9 @@
1
+ class String
2
+ unless String.instance_methods.include?(:camelize)
3
+ def camelize
4
+ s = self.sub(/[_|\s]\w/) { |f| f[1].capitalize }
5
+ s[0] = s[0].upcase
6
+ s
7
+ end
8
+ end
9
+ end
@@ -22,6 +22,12 @@
22
22
  module Sinatra
23
23
  # TODO: accept nested parameters
24
24
  module API
25
+ public
26
+
27
+ attr_accessor :resource_aliases
28
+
29
+ ResourcePrefix = '::'
30
+
25
31
  module Helpers
26
32
  def api_call?
27
33
  (request.accept || '').to_s.include?('json') ||
@@ -165,10 +171,10 @@ module Sinatra
165
171
  def __api_locate_resource(r, container = nil)
166
172
 
167
173
  resource_id = params[r + '_id'].to_i
168
- rklass = r.capitalize
174
+ rklass = r.camelize
169
175
 
170
176
  collection = case
171
- when container.nil?; eval "#{rklass}"
177
+ when container.nil?; eval "#{ResourcePrefix}#{rklass}"
172
178
  else; container.send("#{r.to_plural}")
173
179
  end
174
180
 
@@ -193,6 +199,11 @@ module Sinatra
193
199
 
194
200
  instance_variable_set('@'+r, resource)
195
201
 
202
+ API.aliases_for(r).each { |resource_alias|
203
+ instance_variable_set('@'+resource_alias, resource)
204
+ puts "API: resource #{rklass} exported to @#{resource_alias}"
205
+ }
206
+
196
207
  resource
197
208
  end
198
209
 
@@ -222,6 +233,8 @@ module Sinatra
222
233
  end
223
234
 
224
235
  def self.registered(app)
236
+ @@api_resource_aliases ||= {}
237
+
225
238
  app.helpers Helpers
226
239
  app.before do
227
240
  @api = { required: {}, optional: {} }
@@ -252,5 +265,18 @@ module Sinatra
252
265
  end
253
266
 
254
267
  end
268
+
269
+ def self.alias_resource(original, resource_alias)
270
+ @@resource_aliases ||= {}
271
+ @@resource_aliases[original.to_sym] ||= []
272
+ @@resource_aliases[original.to_sym] << resource_alias.to_s
273
+
274
+ puts "API resource #{original} is now aliased as #{resource_alias}"
275
+ end
276
+
277
+ def self.aliases_for(resource)
278
+ @@resource_aliases ||= {}
279
+ @@resource_aliases[resource.to_sym] || []
280
+ end
255
281
  end
256
282
  end
@@ -21,6 +21,6 @@
21
21
 
22
22
  module Sinatra
23
23
  module API
24
- VERSION = "1.0.0"
24
+ VERSION = "1.0.1"
25
25
  end
26
26
  end
@@ -23,7 +23,10 @@ $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__)))
23
23
 
24
24
  require 'json'
25
25
  require 'sinatra/base'
26
- require 'sinatra/api/ext/hash'
26
+ require 'active_support/core_ext/hash'
27
+ require 'active_support/core_ext/string'
28
+ # require 'sinatra/api/ext/hash'
29
+ # require 'sinatra/api/ext/string'
27
30
  require 'sinatra/api/version'
28
31
  require 'sinatra/api/helpers'
29
32
 
@@ -17,6 +17,7 @@ Gem::Specification.new do |s|
17
17
 
18
18
  s.add_dependency 'json'
19
19
  s.add_dependency 'sinatra'
20
+ s.add_dependency 'activesupport'
20
21
 
21
22
  s.add_development_dependency 'rspec'
22
23
  s.add_development_dependency 'rack-test'
@@ -120,4 +120,9 @@ describe "Helpers" do
120
120
  last_response.status.should == 404
121
121
  last_response.body.should match /No such resource/
122
122
  end
123
+
124
+ it "should define a resource alias" do
125
+ Sinatra::API.alias_resource :item, :item_alias
126
+ Sinatra::API.aliases_for(:item).should == [ 'item_alias' ]
127
+ end
123
128
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-api-helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-09-19 00:00:00.000000000 Z
12
+ date: 2013-09-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
@@ -43,6 +43,22 @@ dependencies:
43
43
  - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
45
  version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: activesupport
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
46
62
  - !ruby/object:Gem::Dependency
47
63
  name: rspec
48
64
  requirement: !ruby/object:Gem::Requirement
@@ -100,6 +116,7 @@ files:
100
116
  - lib/sinatra-api-helpers.rb
101
117
  - lib/sinatra/api/helpers.rb
102
118
  - lib/sinatra/api/version.rb
119
+ - lib/sinatra/api/ext/string.rb
103
120
  - lib/sinatra/api/ext/hash.rb
104
121
  - spec/unit/helpers_spec.rb
105
122
  - spec/helpers/router.rb