wsdsl 0.5.0 → 0.5.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.
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ source :rubygems
2
+
3
+ gem 'jeweler'
4
+ gem 'rspec'
5
+ gem 'rack-test'
6
+ gem 'sinatra'
7
+ if RUBY_VERSION =~ /1.8/
8
+ gem 'backports'
9
+ gem 'json'
10
+ end
data/README.md CHANGED
@@ -149,6 +149,35 @@ This library comes with a test suite requiring Ruby 1.9.2
149
149
  The following gems need to be available:
150
150
  Rspec, Rack, Sinatra
151
151
 
152
+ ## RUBY 1.8 warning
153
+
154
+ This library was written for Ruby 1.9 and 1.8 support was added later on
155
+ via the backports libary and some tweaks. However, because unlike in
156
+ ruby 1.9, the hash insert order isn't kept in 1.8 the following syntax
157
+ isn't supported and the alternative version needs to be used:
158
+
159
+ service.response do |response|
160
+ response.element(:name => "player_creation_ratings") do |e|
161
+ e.attribute :id => :integer, :doc => "id doc"
162
+ e.attribute :is_accepted => :boolean, :doc => "is accepted doc"
163
+ e.attribute :name => :string, :doc => "name doc"
164
+ end
165
+ end
166
+
167
+ Instead the following version should be used:
168
+
169
+ service.response do |response|
170
+ response.element(:name => "player_creation_ratings") do |e|
171
+ e.integer :id, :doc => "id doc"
172
+ e.boolean :is_accepted, :doc => "is accepted doc"
173
+ e.string :name, :doc => "name doc"
174
+ end
175
+ end
176
+
177
+ Both code snippets do the exact same thing but the first version is 1.9
178
+ only.
179
+
180
+
152
181
 
153
182
  ## Copyright
154
183
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.0
1
+ 0.5.1
data/lib/response.rb CHANGED
@@ -173,14 +173,13 @@ class WSDSL
173
173
  #
174
174
  # @return [Array<WSDSL::Response::Attribute>]
175
175
  # @api public
176
- def attribute(opts)
177
- raise ArgumentError unless opts.is_a?(Hash)
178
- # extract the documentation part and add it where it belongs
179
- new_attribute = Attribute.new(opts)
176
+ def attribute(opts, extra_opts={})
177
+ raise ArgumentError unless opts.is_a?(Hash) && extra_opts.is_a?(Hash)
178
+ new_attribute = Attribute.new(opts, extra_opts)
180
179
  @attributes << new_attribute
181
180
  # document the attribute if description available
182
181
  # we might want to have a placeholder message when a response attribute isn't defined
183
- if opts.has_key?(:doc)
182
+ if opts.merge!(extra_opts).has_key?(:doc)
184
183
  @doc.attribute(new_attribute.name, opts[:doc])
185
184
  end
186
185
  @attributes
@@ -299,7 +298,7 @@ class WSDSL
299
298
  # @param [Symbol, String] name the name of the attribute.
300
299
  # @param [Hash] opts the attribute options.
301
300
  def string(name=nil, opts={})
302
- attribute({name => :string}.merge(opts))
301
+ attribute({name => :string}, opts)
303
302
  end
304
303
 
305
304
  # Shortcut to create a string attribute
@@ -307,7 +306,7 @@ class WSDSL
307
306
  # @param [Symbol, String] name the name of the attribute.
308
307
  # @param [Hash] opts the attribute options.
309
308
  def integer(name=nil, opts={})
310
- attribute({name => :integer}.merge(opts))
309
+ attribute({name => :integer}, opts)
311
310
  end
312
311
 
313
312
  # Shortcut to create a string attribute
@@ -315,7 +314,7 @@ class WSDSL
315
314
  # @param [Symbol, String] name the name of the attribute.
316
315
  # @param [Hash] opts the attribute options.
317
316
  def float(name=nil, opts={})
318
- attribute({name => :float}.merge(opts))
317
+ attribute({name => :float}, opts)
319
318
  end
320
319
 
321
320
  # Shortcut to create a string attribute
@@ -323,7 +322,7 @@ class WSDSL
323
322
  # @param [Symbol, String] name the name of the attribute.
324
323
  # @param [Hash] opts the attribute options.
325
324
  def boolean(name=nil, opts={})
326
- attribute({name => :boolean}.merge(opts))
325
+ attribute({name => :boolean}, opts)
327
326
  end
328
327
 
329
328
  # Shortcut to create a string attribute
@@ -331,7 +330,7 @@ class WSDSL
331
330
  # @param [Symbol, String] name the name of the attribute.
332
331
  # @param [Hash] opts the attribute options.
333
332
  def datetime(name=nil, opts={})
334
- attribute({name => :datetime}.merge(opts))
333
+ attribute({name => :datetime}, opts)
335
334
  end
336
335
 
337
336
  # Converts an element into a hash representation
@@ -422,14 +421,17 @@ class WSDSL
422
421
  # name, type, doc, type
423
422
  #
424
423
  # @param [Hash, Array] o_params
424
+ # @param [Hash] o_extra_params A hash with extra params passed, needed to support Ruby 1.8 :(
425
425
  #
426
426
  # @api public
427
- def initialize(o_params)
427
+ def initialize(o_params, o_extra_params={})
428
428
  params = o_params.dup
429
+ extra_params = o_extra_params.dup
429
430
  if params.is_a?(Hash)
430
431
  @name, @type = params.shift
431
432
  @doc = params.delete(:doc) if params.has_key?(:doc)
432
- @opts = params
433
+ @doc ||= extra_params.delete(:doc) if extra_params.has_key?(:doc)
434
+ @opts = params.merge!(extra_params)
433
435
  elsif params.is_a?(Array)
434
436
  @name = params.shift
435
437
  @type = params.shift
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,9 @@
1
+ if RUBY_VERSION =~ /1.8/
2
+ require 'rubygems'
3
+ require 'backports'
4
+ require 'json'
5
+ end
6
+
1
7
  require 'rspec'
2
8
  require 'rack/test'
3
9
  require 'sinatra'
@@ -26,6 +26,8 @@ describe_service "services/test.xml" do |service|
26
26
 
27
27
  # the response contains a list of player creation ratings each object in the list
28
28
 
29
+ =begin
30
+ #Format not supported by Ruby 1.8 due to hash insertion order not being maintained.
29
31
  service.response do |response|
30
32
  response.element(:name => "player_creation_ratings") do |e|
31
33
  e.attribute :id => :integer, :doc => "id doc"
@@ -40,6 +42,23 @@ describe_service "services/test.xml" do |service|
40
42
  end
41
43
  end
42
44
  end
45
+ =end
46
+
47
+ service.response do |response|
48
+ response.element(:name => "player_creation_ratings") do |e|
49
+ e.integer :id, :doc => "id doc"
50
+ e.boolean :is_accepted, :doc => "is accepted doc"
51
+ e.string :name, :doc => "name doc"
52
+
53
+ e.array :player_creation_rating, 'PlayerCreationRating' do |a|
54
+ a.string :comments, :doc => "comments doc"
55
+ a.integer :player_id, :doc => "player_id doc"
56
+ a.integer :rating, :doc => "rating doc"
57
+ a.string :username, :doc => "username doc"
58
+ end
59
+ end
60
+ end
61
+
43
62
 
44
63
  service.documentation do |doc|
45
64
  # doc.overall <markdown description text>
data/spec/wsdsl_spec.rb CHANGED
@@ -287,6 +287,7 @@ The most common way to use this service looks like that:
287
287
  end
288
288
 
289
289
  it "should have documentation for a response element attribute" do
290
+ p @service.response.elements.first.doc.inspect
290
291
  @service.response.elements.first.doc.attributes.should_not be_empty
291
292
  @service.response.elements.first.doc.attributes[:id].should == "id doc"
292
293
  end
data/wsdsl.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "wsdsl"
8
- s.version = "0.5.0"
8
+ s.version = "0.5.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Matt Aimonetti"]
12
- s.date = "2012-01-10"
12
+ s.date = "2012-01-12"
13
13
  s.description = "A Ruby DSL describing Web Services without implementation details."
14
14
  s.email = "mattaimonetti@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -17,6 +17,7 @@ Gem::Specification.new do |s|
17
17
  "README.md"
18
18
  ]
19
19
  s.files = [
20
+ "Gemfile",
20
21
  "LICENSE",
21
22
  "README.md",
22
23
  "Rakefile",
@@ -53,9 +54,21 @@ Gem::Specification.new do |s|
53
54
  s.specification_version = 3
54
55
 
55
56
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
57
+ s.add_runtime_dependency(%q<jeweler>, [">= 0"])
58
+ s.add_runtime_dependency(%q<rspec>, [">= 0"])
59
+ s.add_runtime_dependency(%q<rack-test>, [">= 0"])
60
+ s.add_runtime_dependency(%q<sinatra>, [">= 0"])
56
61
  else
62
+ s.add_dependency(%q<jeweler>, [">= 0"])
63
+ s.add_dependency(%q<rspec>, [">= 0"])
64
+ s.add_dependency(%q<rack-test>, [">= 0"])
65
+ s.add_dependency(%q<sinatra>, [">= 0"])
57
66
  end
58
67
  else
68
+ s.add_dependency(%q<jeweler>, [">= 0"])
69
+ s.add_dependency(%q<rspec>, [">= 0"])
70
+ s.add_dependency(%q<rack-test>, [">= 0"])
71
+ s.add_dependency(%q<sinatra>, [">= 0"])
59
72
  end
60
73
  end
61
74
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wsdsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,52 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-10 00:00:00.000000000 Z
13
- dependencies: []
12
+ date: 2012-01-12 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: jeweler
16
+ requirement: &70320885201320 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70320885201320
25
+ - !ruby/object:Gem::Dependency
26
+ name: rspec
27
+ requirement: &70320885200840 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70320885200840
36
+ - !ruby/object:Gem::Dependency
37
+ name: rack-test
38
+ requirement: &70320885200360 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70320885200360
47
+ - !ruby/object:Gem::Dependency
48
+ name: sinatra
49
+ requirement: &70320885199880 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *70320885199880
14
58
  description: A Ruby DSL describing Web Services without implementation details.
15
59
  email: mattaimonetti@gmail.com
16
60
  executables: []
@@ -19,6 +63,7 @@ extra_rdoc_files:
19
63
  - LICENSE
20
64
  - README.md
21
65
  files:
66
+ - Gemfile
22
67
  - LICENSE
23
68
  - README.md
24
69
  - Rakefile