fson 0.0.11 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/README.md +36 -6
- data/lib/fson/builder.rb +29 -8
- data/lib/fson/version.rb +1 -1
- data/spec/fson/response/as_json_spec.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: 15d93512d2c5ad431642446ccb1a97a58c826a6e
|
4
|
+
data.tar.gz: 668890d610dd29e9198abf1a08ad4029c8f4ede9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e0d1921160f240aabeb0de4384012872bc2d13c413988307723a76d63367f5a59e23870ea9d62b3621497f9c5e18c54cf5eb835b43f2783264fb0eec83dd77bf
|
7
|
+
data.tar.gz: de5a76ed2782982be1d7b3795ff0acf8bbebc32c9c5db83a6c4d0481c202358496a198aa5bb6aac02daa0e1678424fdc70e4897b8b894f1650c2c8b3464835a6
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
fson (0.0
|
4
|
+
fson (1.0.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -11,7 +11,7 @@ GEM
|
|
11
11
|
diff-lcs (1.2.5)
|
12
12
|
docile (1.1.5)
|
13
13
|
json (1.8.3)
|
14
|
-
oj (2.12.
|
14
|
+
oj (2.12.11)
|
15
15
|
rake (10.4.2)
|
16
16
|
rspec (3.3.0)
|
17
17
|
rspec-core (~> 3.3.0)
|
data/README.md
CHANGED
@@ -39,10 +39,22 @@ Fson::Response.error # {"status": "error"}
|
|
39
39
|
Fson::Response.fail # {"status": "fail"}
|
40
40
|
```
|
41
41
|
|
42
|
-
then add some data
|
42
|
+
then add some data explicitly
|
43
43
|
|
44
44
|
```ruby
|
45
|
-
.
|
45
|
+
.data_array([{:id => 12}])
|
46
|
+
```
|
47
|
+
|
48
|
+
```json
|
49
|
+
{
|
50
|
+
"data": [{
|
51
|
+
"id": 12
|
52
|
+
}]
|
53
|
+
}
|
54
|
+
```
|
55
|
+
|
56
|
+
```ruby
|
57
|
+
.data_hash({:id => 12})
|
46
58
|
```
|
47
59
|
|
48
60
|
```json
|
@@ -52,15 +64,30 @@ then add some data by passing hash
|
|
52
64
|
}
|
53
65
|
}
|
54
66
|
```
|
67
|
+
|
55
68
|
|
56
|
-
or defining block
|
69
|
+
or by defining block
|
57
70
|
|
58
71
|
```ruby
|
59
|
-
.
|
72
|
+
.data_array { |data|
|
60
73
|
data << {:id => 12}
|
61
74
|
}
|
62
75
|
```
|
63
76
|
|
77
|
+
```json
|
78
|
+
{
|
79
|
+
"data": [{
|
80
|
+
"id": 12
|
81
|
+
}]
|
82
|
+
}
|
83
|
+
```
|
84
|
+
|
85
|
+
```ruby
|
86
|
+
.data_hash { |data|
|
87
|
+
data[:id] => 12
|
88
|
+
}
|
89
|
+
```
|
90
|
+
|
64
91
|
```json
|
65
92
|
{
|
66
93
|
"data": {
|
@@ -102,7 +129,7 @@ and finally get JSON with
|
|
102
129
|
Builder chain
|
103
130
|
|
104
131
|
```ruby
|
105
|
-
Fson::Response.fail.
|
132
|
+
Fson::Response.fail.data_array {|data| data << {:id => 12}}.add_error('not authorized').as_json
|
106
133
|
```
|
107
134
|
|
108
135
|
will return
|
@@ -142,6 +169,7 @@ _response # returns response hash
|
|
142
169
|
_errors # returns errors hash
|
143
170
|
_data # returns data hash
|
144
171
|
_initialized_data_array # returns existing data array or initializes it with empty array
|
172
|
+
_initialized_data_hash # returns existing data hash or initializes it with empty hash
|
145
173
|
```
|
146
174
|
|
147
175
|
For example you can add builder
|
@@ -163,7 +191,9 @@ by registering it in initializer
|
|
163
191
|
```ruby
|
164
192
|
require 'fson/loader'
|
165
193
|
|
166
|
-
::
|
194
|
+
ActionDispatch::Callbacks.to_prepare do
|
195
|
+
::Fson::Loader::configure([MyCustomBuilder])
|
196
|
+
end
|
167
197
|
```
|
168
198
|
|
169
199
|
## Contributing
|
data/lib/fson/builder.rb
CHANGED
@@ -5,15 +5,12 @@ module Fson
|
|
5
5
|
# Builder Methods
|
6
6
|
##
|
7
7
|
|
8
|
-
def
|
9
|
-
|
10
|
-
|
11
|
-
if data and data.is_a?(Array)
|
12
|
-
@_data = data
|
13
|
-
end
|
8
|
+
def data_hash(data = nil, &block)
|
9
|
+
data(data, Hash, &block)
|
10
|
+
end
|
14
11
|
|
15
|
-
|
16
|
-
|
12
|
+
def data_array(data = nil, &block)
|
13
|
+
data(data, Array, &block)
|
17
14
|
end
|
18
15
|
|
19
16
|
def status(status)
|
@@ -52,6 +49,18 @@ module Fson
|
|
52
49
|
|
53
50
|
private
|
54
51
|
|
52
|
+
def data(data = nil, type = nil, &block)
|
53
|
+
self.send("_initialized_data_#{type.to_s.downcase}")
|
54
|
+
|
55
|
+
if data
|
56
|
+
raise 'Invalid Argument Error' unless data.is_a?(type)
|
57
|
+
@_data = data
|
58
|
+
end
|
59
|
+
|
60
|
+
yield(@_data) if block_given?
|
61
|
+
self
|
62
|
+
end
|
63
|
+
|
55
64
|
def _data
|
56
65
|
@_data
|
57
66
|
end
|
@@ -65,7 +74,19 @@ module Fson
|
|
65
74
|
end
|
66
75
|
|
67
76
|
def _initialized_data_array
|
77
|
+
if @_data.is_a?(Hash)
|
78
|
+
raise 'Invalid State Error: response data already initialized as a Hash'
|
79
|
+
end
|
80
|
+
|
68
81
|
@_data ||= []
|
69
82
|
end
|
83
|
+
|
84
|
+
def _initialized_data_hash
|
85
|
+
if @_data.is_a?(Array)
|
86
|
+
raise 'Invalid State Error: response data already initialized as an Array'
|
87
|
+
end
|
88
|
+
|
89
|
+
@_data ||= {}
|
90
|
+
end
|
70
91
|
end
|
71
92
|
end
|
data/lib/fson/version.rb
CHANGED
@@ -8,7 +8,7 @@ describe ::Fson::Response do
|
|
8
8
|
# given
|
9
9
|
response = ::Fson::Response.error
|
10
10
|
.add_error('invalid') { |e| e[:id] = 'text-set-1'}
|
11
|
-
.
|
11
|
+
.data_array { |data| data << {:author => 'Mateusz Kluczny'} }
|
12
12
|
|
13
13
|
# when/then
|
14
14
|
expect(response.as_json).to eq("{\"status\":\"error\",\"data\":[{\"author\":\"Mateusz Kluczny\"}],\"errors\":[{\"message\":\"invalid\",\"id\":\"text-set-1\"}]}")
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fson
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mateusz Kluczny
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-08-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|