hana 1.3.1 → 1.3.2

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: ccb71fa0fbe43f9887bd8a7f3a1b5ad9273acbcb
4
- data.tar.gz: 807c25b1c8b8dcc67ce9f109799224f91bff37ad
3
+ metadata.gz: 4fb4c95fd3541788a19d1c4b9d7bd1931242191a
4
+ data.tar.gz: 83e628bf62efb6e476121837a710c0d64bfc7590
5
5
  SHA512:
6
- metadata.gz: 44ebd19bc18f9aac58a3e22d97ef0af22249bd2d559d5b25e876d0054fd12c5d4ed4bc8def868da96c71d1655809006578d6ca3bfe0931c3abf42b00549154b0
7
- data.tar.gz: f8882b84a664e16bb252138a101af07640c3dbcd33c037ed777d33838815a1b7c458c710b3877ca1abd39c484cea61981b4e63ace77c6d495a1ca02a808c4f61
6
+ metadata.gz: 5b60dc61f8c64a99d6595b7b8e8192b2d1f658a47eab4a74bfca692edc4883dc25979b41bc4a68b3f1a5b02f69f832fdfa9ca744aea279ef7480d836b3ba0463
7
+ data.tar.gz: 52c58c0d9d5690a9f37c8e24621ae21dba3fd651566730c723c4603ab41c6b843da2f3b13eca22cf31a7bd0eb12e476b1f0c3f5d50a45d4eac57474b0e896480
data/README.md CHANGED
@@ -17,7 +17,7 @@ process it, then emit as JSON again.
17
17
 
18
18
  ```ruby
19
19
  patch = Hana::Patch.new [
20
- { 'add' => '/baz', 'value' => 'qux' }
20
+ { 'op' => 'add', 'path' => '/baz', 'value' => 'qux' }
21
21
  ]
22
22
 
23
23
  patch.apply('foo' => 'bar') # => {'baz' => 'qux', 'foo' => 'bar'}
@@ -35,7 +35,7 @@ patch.apply('foo' => 'bar') # => {'baz' => 'qux', 'foo' => 'bar'}
35
35
 
36
36
  (The MIT License)
37
37
 
38
- Copyright (c) 2012-2013 Aaron Patterson
38
+ Copyright (c) 2012-2016 Aaron Patterson
39
39
 
40
40
  Permission is hereby granted, free of charge, to any person obtaining
41
41
  a copy of this software and associated documentation files (the
data/Rakefile CHANGED
@@ -10,6 +10,7 @@ Hoe.plugin :git # `gem install hoe-git`
10
10
 
11
11
  Hoe.spec 'hana' do
12
12
  developer('Aaron Patterson', 'aaron@tenderlovemaking.com')
13
+ license 'MIT'
13
14
  self.readme_file = 'README.md'
14
15
  self.history_file = 'CHANGELOG.rdoc'
15
16
  self.extra_rdoc_files = FileList['*.rdoc']
@@ -1,5 +1,5 @@
1
1
  module Hana
2
- VERSION = '1.3.1'
2
+ VERSION = '1.3.2'
3
3
 
4
4
  class Pointer
5
5
  include Enumerable
@@ -31,9 +31,12 @@ module Hana
31
31
  def self.parse path
32
32
  return [''] if path == '/'
33
33
 
34
- path.sub(/^\//, '').split(/(?<!\^)\//).each { |part|
34
+ parts = path.sub(/^\//, '').split(/(?<!\^)\//).each { |part|
35
35
  part.gsub!(/\^[\/^]|~[01]/) { |m| ESC[m] }
36
36
  }
37
+
38
+ parts.push("") if path[-1] == '/'
39
+ parts
37
40
  end
38
41
  end
39
42
 
@@ -21,7 +21,7 @@ module Hana
21
21
  patch = Hana::Patch.new patch
22
22
 
23
23
  if test['error']
24
- assert_raises(*ex(test['error'])) do
24
+ assert_raises(*ex(test['error']), test['error']) do
25
25
  patch.apply doc
26
26
  end
27
27
  else
@@ -43,6 +43,7 @@ module Hana
43
43
  def ex msg
44
44
  case msg
45
45
  when /Out of bounds/i then [Hana::Patch::OutOfBoundsException]
46
+ when /index is greater than/i then [Hana::Patch::OutOfBoundsException]
46
47
  when /Object operation on array/ then
47
48
  [Hana::Patch::ObjectOperationOnArrayException]
48
49
  when /test op shouldn't get array element/ then
@@ -60,6 +60,11 @@
60
60
  "patch": [ {"op": "add", "path": "/", "value":1 } ],
61
61
  "expected": {"":1} },
62
62
 
63
+ { "comment": "Add, /foo/ deep target (trailing slash)",
64
+ "doc": {"foo": {}},
65
+ "patch": [ {"op": "add", "path": "/foo/", "value":1 } ],
66
+ "expected": {"foo":{"": 1}} },
67
+
63
68
  { "comment": "Add composite value at top level",
64
69
  "doc": {"foo": 1},
65
70
  "patch": [{"op": "add", "path": "/bar", "value": [1, 2]}],
@@ -107,10 +112,16 @@
107
112
  "patch": [{"op": "add", "path": "/0", "value": "bar"}],
108
113
  "expected": ["bar", "foo", "sil"] },
109
114
 
110
- { "doc": ["foo", "sil"],
115
+ { "comment": "push item to array via last index + 1",
116
+ "doc": ["foo", "sil"],
111
117
  "patch": [{"op":"add", "path": "/2", "value": "bar"}],
112
118
  "expected": ["foo", "sil", "bar"] },
113
119
 
120
+ { "comment": "add item to array at index > length should fail",
121
+ "doc": ["foo", "sil"],
122
+ "patch": [{"op":"add", "path": "/3", "value": "bar"}],
123
+ "error": "index is greater than number of items in array" },
124
+
114
125
  { "comment": "test against implementation-specific numeric parsing",
115
126
  "doc": {"1e0": "foo"},
116
127
  "patch": [{"op": "test", "path": "/1e0", "value": "foo"}],
@@ -183,7 +194,32 @@
183
194
 
184
195
  { "doc": {"foo": null},
185
196
  "patch": [{"op": "test", "path": "/foo", "value": null}],
186
- "comment": "null value should still be valid obj property" },
197
+ "comment": "null value should be valid obj property" },
198
+
199
+ { "doc": {"foo": null},
200
+ "patch": [{"op": "replace", "path": "/foo", "value": "truthy"}],
201
+ "expected": {"foo": "truthy"},
202
+ "comment": "null value should be valid obj property to be replaced with something truthy" },
203
+
204
+ { "doc": {"foo": null},
205
+ "patch": [{"op": "move", "from": "/foo", "path": "/bar"}],
206
+ "expected": {"bar": null},
207
+ "comment": "null value should be valid obj property to be moved" },
208
+
209
+ { "doc": {"foo": null},
210
+ "patch": [{"op": "copy", "from": "/foo", "path": "/bar"}],
211
+ "expected": {"foo": null, "bar": null},
212
+ "comment": "null value should be valid obj property to be copied" },
213
+
214
+ { "doc": {"foo": null},
215
+ "patch": [{"op": "remove", "path": "/foo"}],
216
+ "expected": {},
217
+ "comment": "null value should be valid obj property to be removed" },
218
+
219
+ { "doc": {"foo": "bar"},
220
+ "patch": [{"op": "replace", "path": "/foo", "value": null}],
221
+ "expected": {"foo": null},
222
+ "comment": "null value should still be valid obj property replace other value" },
187
223
 
188
224
  { "doc": {"foo": {"foo": 1, "bar": 2}},
189
225
  "patch": [{"op": "test", "path": "/foo", "value": {"bar": 2, "foo": 1}}],
@@ -23,6 +23,11 @@ class TestHana < Hana::TestCase
23
23
  assert_equal %w{ foo bar baz }, pointer.to_a
24
24
  end
25
25
 
26
+ def test_split_with_trailing
27
+ pointer = Hana::Pointer.new '/foo/'
28
+ assert_equal ["foo", ""], pointer.to_a
29
+ end
30
+
26
31
  def test_root
27
32
  pointer = Hana::Pointer.new '/'
28
33
  assert_equal [''], pointer.to_a
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hana
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Patterson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-05 00:00:00.000000000 Z
11
+ date: 2016-05-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '5.5'
19
+ version: '5.9'
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
- version: '5.5'
26
+ version: '5.9'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rdoc
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.13'
47
+ version: '3.15'
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
- version: '3.13'
54
+ version: '3.15'
55
55
  description: Implementation of [JSON Patch][1] and [JSON Pointer][2] RFC.
56
56
  email:
57
57
  - aaron@tenderlovemaking.com
@@ -63,7 +63,6 @@ extra_rdoc_files:
63
63
  - README.md
64
64
  files:
65
65
  - ".autotest"
66
- - ".gemtest"
67
66
  - CHANGELOG.rdoc
68
67
  - Manifest.txt
69
68
  - README.md
@@ -98,10 +97,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
98
97
  version: '0'
99
98
  requirements: []
100
99
  rubyforge_project:
101
- rubygems_version: 2.4.5
100
+ rubygems_version: 2.6.4
102
101
  signing_key:
103
102
  specification_version: 4
104
103
  summary: Implementation of [JSON Patch][1] and [JSON Pointer][2] RFC.
105
- test_files:
106
- - test/test_hana.rb
107
- - test/test_ietf.rb
104
+ test_files: []
data/.gemtest DELETED
File without changes