blockhead 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4e2f6018fc079c37204364a6c67616e98ddfbed2
4
- data.tar.gz: 4661877ffcd4484944ce3c4f5c5caeb5a01482bb
3
+ metadata.gz: 88d989362f1384c7e3f8474a58073eec6007415e
4
+ data.tar.gz: bb4eed08458054d201b7582f0a48b13c7c71dc02
5
5
  SHA512:
6
- metadata.gz: 93c2aa2bc903bd8b3e7d078f19e480354497bf1e7a216d1ca80ce9fd263f9c39417e2a821d6ec1015f551bd89ab6e9497b29b4f28dc1316b5655ae1cd7221aad
7
- data.tar.gz: 3a9b5e507c747bd739fd1bea248b07c4fcd0f6ae960ff98b0744552ae3da047c71ba1bd5ef6606edb10b04031d9544bb16f86b72870a3d1e4cb12d3a8fccf600
6
+ metadata.gz: 83fd44e578527ebcdeec6045e7a1ae6e65cf4ad31ec0c91f471b98ce0b5a777ba4e470853beb1f7ed168365fd902adddd6c2241d8fa24853dda034a90dc1c8ca
7
+ data.tar.gz: 1485bc561d5584f5e6bec5a98fa12540dbd11a528cd6a82fed2882d4169133bf19383b7d7e523081afcc04f4bceb5e0897bb4110b97769a258fddc940270e786
@@ -12,17 +12,18 @@ module Blockhead
12
12
  end
13
13
 
14
14
  def method_missing(name, *args, &block)
15
- key = OptionKey.new(name, args.first).key
15
+ @arg = args.first
16
+ key = OptionKey.new(name, @arg).key
16
17
  attributes[key] = ValueExtractor.new(_call(name), *args, &block).extract
17
18
  end
18
19
 
19
20
  private
20
21
 
21
22
  def _call(name)
22
- if object.respond_to?(name)
23
+ if @arg == :wrap
24
+ object
25
+ elsif object.respond_to?(name)
23
26
  object.send name
24
- else
25
- nil
26
27
  end
27
28
  end
28
29
  end
@@ -1,3 +1,3 @@
1
1
  module Blockhead
2
- VERSION = '0.0.5'
2
+ VERSION = '0.0.6'
3
3
  end
@@ -25,7 +25,6 @@ describe Blockhead::Schema, '::define' do
25
25
  end
26
26
  end
27
27
 
28
-
29
28
  it 'returns a hash' do
30
29
  schema = schema_with { title }
31
30
 
@@ -51,6 +50,61 @@ describe Blockhead::Schema, '::define' do
51
50
  expect(schema.marshal).to eq response
52
51
  end
53
52
 
53
+ it 'handles wrappers' do
54
+ schema = schema_with do
55
+ surprise :wrap do
56
+ title
57
+ description
58
+ end
59
+ end
60
+
61
+ response = { surprise: { title: 'Title', description: 'Description' } }
62
+ expect(schema.marshal).to eq response
63
+ end
64
+
65
+ it 'handles nested wrappers' do
66
+ schema = schema_with do
67
+ a :wrap do
68
+ b :wrap do
69
+ title
70
+ description
71
+ end
72
+ end
73
+ end
74
+
75
+ response = { a: { b: { title: 'Title', description: 'Description' } } }
76
+ expect(schema.marshal).to eq response
77
+ end
78
+
79
+ it 'handles wrappers around nested objects' do
80
+ schema = schema_with do
81
+ a :wrap do
82
+ title
83
+ end
84
+ nested_obj do
85
+ item :wrap do
86
+ sku
87
+ end
88
+ end
89
+ end
90
+
91
+ response = { a: { title: 'Title'}, nested_obj: { item: { sku: '4321' } } }
92
+ expect(schema.marshal).to eq response
93
+ end
94
+
95
+
96
+ it 'handles nested nils' do
97
+ schema = schema_with do
98
+ nope do
99
+ more_nope do
100
+ still_nope
101
+ end
102
+ end
103
+ end
104
+
105
+ expect(schema.marshal).to eq nope: { more_nope: { still_nope: nil } }
106
+ end
107
+
54
108
  it 'accepts hash aliases' do
55
109
  schema = schema_with do
56
110
  title as: 'header'
metadata CHANGED
@@ -1,69 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blockhead
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vincent Franco
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-08 00:00:00.000000000 Z
11
+ date: 2014-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.6'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.6'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: debugger
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '1.6'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.6'
69
69
  description: A simple DSL for marshaling objects into a schema
@@ -73,9 +73,9 @@ executables: []
73
73
  extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
- - .gitignore
77
- - .rspec
78
- - .travis.yml
76
+ - ".gitignore"
77
+ - ".rspec"
78
+ - ".travis.yml"
79
79
  - Gemfile
80
80
  - LICENSE.txt
81
81
  - README.md
@@ -109,17 +109,17 @@ require_paths:
109
109
  - lib
110
110
  required_ruby_version: !ruby/object:Gem::Requirement
111
111
  requirements:
112
- - - '>='
112
+ - - ">="
113
113
  - !ruby/object:Gem::Version
114
114
  version: '0'
115
115
  required_rubygems_version: !ruby/object:Gem::Requirement
116
116
  requirements:
117
- - - '>='
117
+ - - ">="
118
118
  - !ruby/object:Gem::Version
119
119
  version: '0'
120
120
  requirements: []
121
121
  rubyforge_project:
122
- rubygems_version: 2.2.2
122
+ rubygems_version: 2.2.0
123
123
  signing_key:
124
124
  specification_version: 4
125
125
  summary: A simple DSL for marshaling objects into a schema