treet 0.17.1 → 0.18.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0cbacd421d190cd2d749327de0ee03aaf373d524
4
- data.tar.gz: e41405f31af293569faab6ef0ecc8242a01a645f
3
+ metadata.gz: 6d862a70ed8be944197ac40fa3dcc0db5d0ca8e2
4
+ data.tar.gz: f0e34807b7927f12ff73b9b573b13d4f5e65ba44
5
5
  SHA512:
6
- metadata.gz: f049a44fb96e3b38c7c8c977941bf626715f2029e5499381b946c0414d469ee6457979a95171fe7fd80713333dc8fe9e293ec24d37c97c0412b1c6880599b5ea
7
- data.tar.gz: d3a42775c21ee9a641d1b112d94e23056d121957eef76a24889faff5006afac6d98f5b4e216f471e8cebf00ff89b942c3c6fc5895fe0a1a3d68c77f8d3da4289
6
+ metadata.gz: e1a2a25ec6a3c8ca0fe11ea3ca390b77ebdb5405ed55586b1f7f841605c11a78cd3957d24d132c9eb9479117b84563ba9d4ccf7fb02832c848b197d10d94ec3d
7
+ data.tar.gz: 6362ff5a21d7814368e2df7496755e64fb34ae3cb12edcd0bff92efef4162005110834bacdcccf9d4bb94f352588f65c8fe2116553721b7d11cccd21ae0735f7
@@ -97,13 +97,16 @@ class Treet::Repo
97
97
  # remove something
98
98
  if fieldname
99
99
  # this is a key in a subhash
100
- data = JSON.load(File.open(filepath))
101
- data.delete(fieldname)
102
- if data.empty?
103
- # all keys have been removed, clean up the file
104
- File.delete(filename)
105
- else
106
- File.open(filepath, "w") {|f| f << JSON.pretty_generate(data)}
100
+ if File.exists?(filepath)
101
+ # if the subhash is missing, there's nothing to remove, so do nothing (for idempotence)
102
+ data = JSON.load(File.open(filepath))
103
+ data.delete(fieldname)
104
+ if data.empty?
105
+ # all keys have been removed, clean up the file
106
+ File.delete(filename)
107
+ else
108
+ File.open(filepath, "w") {|f| f << JSON.pretty_generate(data)}
109
+ end
107
110
  end
108
111
  elsif dirname == "."
109
112
  # this is a top-level string
@@ -1,3 +1,3 @@
1
1
  module Treet
2
- VERSION = "0.17.1"
2
+ VERSION = "0.18.0"
3
3
  end
@@ -198,4 +198,20 @@ describe "Repo" do
198
198
  newhash.to_hash['datalist'].should be_include('seven')
199
199
  end
200
200
  end
201
+
202
+ it "should not crash on patch that deletes missing subtree elements" do
203
+ hash = Treet::Hash.new("#{File.dirname(__FILE__)}/../json/one.json")
204
+ Dir.mktmpdir do |dir|
205
+ repo = hash.to_repo(dir)
206
+ repo.patch([
207
+ [
208
+ "-",
209
+ "missing.thing",
210
+ "does not exist"
211
+ ]
212
+ ])
213
+ newhash = repo.to_hash
214
+ newhash['missing'].should be_nil
215
+ end
216
+ end
201
217
  end
@@ -7,6 +7,7 @@ Gem::Specification.new do |gem|
7
7
  gem.description = %q{Transform between trees of files and JSON blobs}
8
8
  gem.summary = %q{Transform between trees of files and JSON blobs}
9
9
  gem.homepage = ""
10
+ gem.license = "LGPL-3"
10
11
 
11
12
  gem.files = `git ls-files`.split($\)
12
13
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: treet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.1
4
+ version: 0.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason May
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-24 00:00:00.000000000 Z
11
+ date: 2013-10-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: map
@@ -190,7 +190,8 @@ files:
190
190
  - spec/test_helper.rb
191
191
  - treet.gemspec
192
192
  homepage: ''
193
- licenses: []
193
+ licenses:
194
+ - LGPL-3
194
195
  metadata: {}
195
196
  post_install_message:
196
197
  rdoc_options: []