plist4r 1.1.1 → 1.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/plist4r/mixin/array_dict.rb +4 -0
- data/lib/plist4r/mixin/data_methods.rb +1 -0
- data/lib/plist4r/mixin/ruby_stdlib.rb +14 -0
- data/lib/plist4r/plist.rb +4 -4
- data/lib/plist4r/plist_type.rb +3 -3
- data/lib/plist4r/plist_type/launchd.rb +14 -13
- data/plist4r.gemspec +2 -2
- data/spec/plist4r/mixin/array_dict_spec.rb +1 -1
- data/spec/plist4r/plist_spec.rb +7 -7
- data/spec/plist4r/plist_type_spec.rb +3 -3
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.1.
|
1
|
+
1.1.2
|
@@ -181,6 +181,20 @@ class String
|
|
181
181
|
@blob
|
182
182
|
end
|
183
183
|
|
184
|
+
# Remove the leading spaces of the first line, and same to all lines of a multiline string.
|
185
|
+
# This effectively shifts all the lines across to the left, until the first line hits the
|
186
|
+
# left margin.
|
187
|
+
# @example
|
188
|
+
# def usage; <<-EOS.undent
|
189
|
+
# # leading indent
|
190
|
+
# # subsequent indent
|
191
|
+
# # subsequent indent + ' '
|
192
|
+
# EOS
|
193
|
+
# end
|
194
|
+
def undent
|
195
|
+
gsub /^.{#{slice(/^ +/).length}}/, ''
|
196
|
+
end
|
197
|
+
|
184
198
|
# A Camel-ized string. The reverse of {#snake_case}
|
185
199
|
# @example
|
186
200
|
# "my_plist_key".camelcase => "MyPlistKey"
|
data/lib/plist4r/plist.rb
CHANGED
@@ -323,7 +323,7 @@ module Plist4r
|
|
323
323
|
# p_f_release_version(new_ver)
|
324
324
|
# end
|
325
325
|
def edit *args, &blk
|
326
|
-
@plist_type.
|
326
|
+
@plist_type.to_hash @hash
|
327
327
|
instance_eval *args, &blk
|
328
328
|
detect_plist_type if plist_type == :plist
|
329
329
|
end
|
@@ -335,7 +335,7 @@ module Plist4r
|
|
335
335
|
# @see Plist4r::DataMethods#method_missing
|
336
336
|
# @see #plist_type
|
337
337
|
def method_missing method_sym, *args, &blk
|
338
|
-
@plist_type
|
338
|
+
eval "@plist_type.#{method_sym} *args, &blk"
|
339
339
|
end
|
340
340
|
|
341
341
|
# Backend method to set or return all new plist data resulting from a backend API. Used in load operations.
|
@@ -467,7 +467,7 @@ module Plist4r
|
|
467
467
|
def delete_if *keys, &blk
|
468
468
|
delete *keys
|
469
469
|
@hash.delete_if &blk
|
470
|
-
@plist_type.
|
470
|
+
@plist_type.to_hash @hash
|
471
471
|
end
|
472
472
|
|
473
473
|
# Clears all plist keys and their contents
|
@@ -485,7 +485,7 @@ module Plist4r
|
|
485
485
|
def merge! other_plist
|
486
486
|
if plist_type == other_plist.plist_type
|
487
487
|
@hash.merge! other_plist.to_hash
|
488
|
-
@plist_type.
|
488
|
+
@plist_type.to_hash @hash
|
489
489
|
else
|
490
490
|
raise "plist_type differs, one is #{plist_type.inspect}, and the other is #{plist.plist_type.inspect}"
|
491
491
|
end
|
data/lib/plist4r/plist_type.rb
CHANGED
@@ -17,7 +17,7 @@ module Plist4r
|
|
17
17
|
# Set or return the plist's raw data object
|
18
18
|
# @param [Plist4r::OrderedHash] hash Set the hash if not nil
|
19
19
|
# @return [Plist4r::OrderedHash] @hash
|
20
|
-
def
|
20
|
+
def to_hash hash=nil
|
21
21
|
case hash
|
22
22
|
when ::Plist4r::OrderedHash
|
23
23
|
@hash = @orig = hash
|
@@ -65,8 +65,8 @@ module Plist4r
|
|
65
65
|
def array_dict method_sym, *args
|
66
66
|
a = ArrayDict.new @hash
|
67
67
|
result = eval "a.#{method_sym} *args"
|
68
|
-
@hash = @orig = a.
|
69
|
-
@plist.import_hash a.
|
68
|
+
@hash = @orig = a.to_hash
|
69
|
+
@plist.import_hash a.to_hash
|
70
70
|
end
|
71
71
|
end
|
72
72
|
end
|
@@ -61,7 +61,7 @@ module Plist4r
|
|
61
61
|
ValidKeys =
|
62
62
|
{
|
63
63
|
:bool => %w[SuccessfulExit NetworkState],
|
64
|
-
:
|
64
|
+
:bool_or_hash_of_bools => %w[PathState OtherJobEnabled]
|
65
65
|
}
|
66
66
|
end
|
67
67
|
|
@@ -115,12 +115,13 @@ module Plist4r
|
|
115
115
|
key = "KeepAlive"
|
116
116
|
|
117
117
|
case value
|
118
|
-
when
|
118
|
+
when TrueClass, FalseClass
|
119
119
|
@hash[key] = value
|
120
120
|
when nil
|
121
|
-
if
|
122
|
-
@hash[key]
|
123
|
-
@hash[key] = ::
|
121
|
+
if block_given?
|
122
|
+
puts KeepAlive.new(@hash[key],&blk).to_hash
|
123
|
+
@hash[key] = ::Plist4r::OrderedHash.new
|
124
|
+
@hash[key] = KeepAlive.new(@hash[key],&blk).to_hash
|
124
125
|
else
|
125
126
|
@hash[key]
|
126
127
|
end
|
@@ -221,7 +222,7 @@ module Plist4r
|
|
221
222
|
end
|
222
223
|
if blk
|
223
224
|
@hash[key] ||= []
|
224
|
-
h =
|
225
|
+
h = StartCalendarInterval.new(@hash[key],index,&blk).to_hash
|
225
226
|
if index
|
226
227
|
@hash[key][index] = h
|
227
228
|
else
|
@@ -296,7 +297,7 @@ module Plist4r
|
|
296
297
|
key = "SoftResourceLimits"
|
297
298
|
if blk
|
298
299
|
@hash[key] ||= ::Plist4r::OrderedHash.new
|
299
|
-
@hash[key] =
|
300
|
+
@hash[key] = ResourceLimits.new(@hash[key],&blk).to_hash
|
300
301
|
else
|
301
302
|
@hash[key]
|
302
303
|
end
|
@@ -361,7 +362,7 @@ module Plist4r
|
|
361
362
|
key = "HardResourceLimits"
|
362
363
|
if blk
|
363
364
|
@hash[key] ||= ::Plist4r::OrderedHash.new
|
364
|
-
@hash[key] =
|
365
|
+
@hash[key] = ResourceLimits.new(@hash[key],&blk).to_hash
|
365
366
|
else
|
366
367
|
@hash[key]
|
367
368
|
end
|
@@ -378,7 +379,7 @@ module Plist4r
|
|
378
379
|
set_or_return_of_type :bool, service, value
|
379
380
|
elsif blk
|
380
381
|
@hash[service] = ::Plist4r::OrderedHash.new
|
381
|
-
@hash[service] =
|
382
|
+
@hash[service] = MachServices::MachService.new(@hash[service],&blk).to_hash
|
382
383
|
else
|
383
384
|
@orig
|
384
385
|
end
|
@@ -428,7 +429,7 @@ module Plist4r
|
|
428
429
|
key = "MachServices"
|
429
430
|
if blk
|
430
431
|
@hash[key] ||= ::Plist4r::OrderedHash.new
|
431
|
-
@hash[key] =
|
432
|
+
@hash[key] = MachServices.new(@hash[key],&blk).to_hash
|
432
433
|
else
|
433
434
|
@hash[key]
|
434
435
|
end
|
@@ -450,13 +451,13 @@ module Plist4r
|
|
450
451
|
end
|
451
452
|
|
452
453
|
def add_socket_to_dictionary key, &blk
|
453
|
-
@hash[key] =
|
454
|
+
@hash[key] = Sockets::Socket.new(@hash[key],&blk).to_hash
|
454
455
|
end
|
455
456
|
|
456
457
|
def add_socket_to_array key, index, &blk
|
457
458
|
@orig[key] = [] unless @orig[key].class == Array
|
458
459
|
@hash[key] ||= []
|
459
|
-
@hash[key][index] =
|
460
|
+
@hash[key][index] = Sockets::Socket.new(@orig[key],index,&blk).to_hash
|
460
461
|
end
|
461
462
|
|
462
463
|
def add_socket plicity, key, index=nil, &blk
|
@@ -661,7 +662,7 @@ module Plist4r
|
|
661
662
|
key = "Sockets"
|
662
663
|
if blk
|
663
664
|
@hash[key] ||= ::Plist4r::OrderedHash.new
|
664
|
-
sockets =
|
665
|
+
sockets = Sockets.new(@hash[key]).to_hash
|
665
666
|
|
666
667
|
case index_or_key
|
667
668
|
when nil
|
data/plist4r.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{plist4r}
|
8
|
-
s.version = "1.1.
|
8
|
+
s.version = "1.1.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["dreamcat4"]
|
12
|
-
s.date = %q{2010-08-
|
12
|
+
s.date = %q{2010-08-18}
|
13
13
|
s.default_executable = %q{plist4r}
|
14
14
|
s.description = %q{Plist4r is for editing Plist files in an easy-to-use, fast, and reliabile way. A comprehensive and fully featured Ruby library. Xml and Binary file formats are supported, with backends for Linux and Mac.}
|
15
15
|
s.email = %q{dreamcat4@gmail.com}
|
data/spec/plist4r/plist_spec.rb
CHANGED
@@ -389,10 +389,10 @@ describe Plist4r::Plist, "#method_missing" do
|
|
389
389
|
@plist = Plist4r::Plist.new
|
390
390
|
end
|
391
391
|
|
392
|
-
it "should call @plist_type
|
393
|
-
method_missing_args = [:
|
394
|
-
@plist_type.should_receive(:
|
395
|
-
@plist.method_missing(method_missing_args)
|
392
|
+
it "should call eval with @plist_type.#{:method_sym} and the supplied arguments" do
|
393
|
+
method_missing_args = [:arg1, :arg2, :etc]
|
394
|
+
@plist_type.should_receive(:method_sym).with(*method_missing_args)
|
395
|
+
@plist.method_missing(:method_sym,*method_missing_args)
|
396
396
|
end
|
397
397
|
end
|
398
398
|
|
@@ -627,8 +627,8 @@ describe Plist4r::Plist, "#delete_if" do
|
|
627
627
|
@plist.delete_if :arg1, :arg2
|
628
628
|
end
|
629
629
|
|
630
|
-
it "should call @plist_type.
|
631
|
-
@plist_type.should_receive(:
|
630
|
+
it "should call @plist_type.to_hash with @hash" do
|
631
|
+
@plist_type.should_receive(:to_hash).with(@hash)
|
632
632
|
@plist.delete_if :arg1, :arg2
|
633
633
|
end
|
634
634
|
end
|
@@ -675,7 +675,7 @@ describe Plist4r::Plist, "#merge!" do
|
|
675
675
|
@plist.stub!(:plist_type).and_return(:plist_type)
|
676
676
|
@other_plist.stub!(:plist_type).and_return(:plist_type)
|
677
677
|
@hash.should_receive(:merge!).with(@other_hash)
|
678
|
-
@plist_type.should_receive(:
|
678
|
+
@plist_type.should_receive(:to_hash).with(@hash)
|
679
679
|
|
680
680
|
@plist.merge! @other_plist
|
681
681
|
end
|
@@ -26,18 +26,18 @@ describe Plist4r::PlistType, "#hash" do
|
|
26
26
|
|
27
27
|
it "should set @hash and @orig if the supplied hash is a Plist4r::OrderedHash" do
|
28
28
|
hash = Plist4r::OrderedHash.new
|
29
|
-
@plist_type.
|
29
|
+
@plist_type.to_hash(hash)
|
30
30
|
@plist_type.instance_eval { @hash }.should == hash
|
31
31
|
@plist_type.instance_eval { @orig }.should == hash
|
32
32
|
end
|
33
33
|
|
34
34
|
it "should return @hash if there are no supplied arguments" do
|
35
|
-
@plist_type.
|
35
|
+
@plist_type.to_hash.should == "hash"
|
36
36
|
end
|
37
37
|
|
38
38
|
it "should raise an error when the supplied argument is not a Plist4r::OrderedHash, or nil" do
|
39
39
|
not_a_plist4r_ordered_hash_or_nil = false
|
40
|
-
lambda { @plist_type.
|
40
|
+
lambda { @plist_type.to_hash(not_a_plist4r_ordered_hash_or_nil) }.should raise_error(Exception)
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 1
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 1.1.
|
8
|
+
- 2
|
9
|
+
version: 1.1.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- dreamcat4
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-08-
|
17
|
+
date: 2010-08-18 00:00:00 +01:00
|
18
18
|
default_executable: plist4r
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|