plist4r 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,59 +1,60 @@
1
1
 
2
2
  require 'plist4r/mixin/data_methods'
3
3
 
4
- class Plist4r::PlistType
5
- include ::Plist4r::DataMethods
4
+ module Plist4r
5
+ class PlistType
6
+ include ::Plist4r::DataMethods
6
7
 
7
- def initialize opts, *args, &blk
8
- raise unless opts[:hash]
9
- @hash = @orig = opts[:hash]
8
+ def initialize opts, *args, &blk
9
+ raise unless opts[:hash]
10
+ @hash = @orig = opts[:hash]
11
+ end
10
12
  end
11
- end
12
13
 
13
- class Plist4r::ArrayDict
14
- include DataMethods
15
-
16
- def initialize orig, index=nil, &blk
17
- @orig = orig
18
- if index
19
- @enclosing_block = self.class.to_s.snake_case + "[#{index}]"
20
- @orig = @orig[index]
21
- else
22
- @enclosing_block = self.class.to_s.snake_case
14
+ class ArrayDict
15
+ include ::Plist4r::DataMethods
16
+
17
+ def initialize orig, index=nil, &blk
18
+ @orig = orig
19
+ if index
20
+ @enclosing_block = self.class.to_s.snake_case + "[#{index}]"
21
+ @orig = @orig[index]
22
+ else
23
+ @enclosing_block = self.class.to_s.snake_case
24
+ end
25
+ # puts "@orig = #{@orig.inspect}"
26
+ # puts "@enclosing_block = #{@enclosing_block}"
27
+
28
+ @block = blk
29
+ @hash = ::ActiveSupport::OrderedHash.new
30
+ # puts "@hash = #{@hash}"
31
+
32
+ instance_eval(&@block) if @block
33
+ # puts "@hash = #{@hash}"
23
34
  end
24
- puts "@orig = #{@orig.inspect}"
25
- puts "@enclosing_block = #{@enclosing_block}"
26
-
27
- @block = blk
28
- @hash = ::ActiveSupport::OrderedHash.new
29
- puts "@hash = #{@hash}"
30
35
 
31
- instance_eval(&@block) if @block
32
- puts "@hash = #{@hash}"
33
- end
34
-
35
- def hash
36
- @hash
37
- end
36
+ def hash
37
+ @hash
38
+ end
38
39
 
39
- def select *keys
40
- keys.each do |k|
41
- @hash[k] = @orig[k]
40
+ def select *keys
41
+ keys.each do |k|
42
+ @hash[k] = @orig[k]
43
+ end
42
44
  end
43
- end
44
45
 
45
- def unselect *keys
46
- keys.each do |k|
47
- @hash.delete k
46
+ def unselect *keys
47
+ keys.each do |k|
48
+ @hash.delete k
49
+ end
48
50
  end
49
- end
50
51
 
51
- def unselect_all
52
- @hash = ::ActiveSupport::OrderedHash.new
53
- end
52
+ def unselect_all
53
+ @hash = ::ActiveSupport::OrderedHash.new
54
+ end
54
55
 
55
- def select_all
56
- @hash = @orig
56
+ def select_all
57
+ @hash = @orig
58
+ end
57
59
  end
58
60
  end
59
-
@@ -0,0 +1,7 @@
1
+
2
+ require 'plist4r/plist_type'
3
+
4
+ module Plist4r
5
+ class PlistType::Info < PlistType
6
+ end
7
+ end
@@ -1,6 +1,4 @@
1
1
 
2
-
3
-
4
2
  require 'plist4r/plist_type'
5
3
 
6
4
  module Plist4r
@@ -0,0 +1,7 @@
1
+
2
+ require 'plist4r/plist_type'
3
+
4
+ module Plist4r
5
+ class PlistType::Plist < PlistType
6
+ end
7
+ end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{plist4r}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
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-03-15}
12
+ s.date = %q{2010-03-17}
13
13
  s.description = %q{In development. Plist4R is a gem which is striving for 3 things: ease of use, speed, and reliability handling of plists. To help achieve these goals, we may plug-in or re-write this gem with one or several backends. Notably, we try to distinguish this gem by providing easy-to use DSL interface for users. For common plist type(s), such as convenience methods for Launchd Plist}
14
14
  s.email = %q{dreamcat4@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -33,6 +33,7 @@ Gem::Specification.new do |s|
33
33
  "lib/plist4r/backend/libxml4r.rb",
34
34
  "lib/plist4r/backend/plutil.rb",
35
35
  "lib/plist4r/backend/ruby_cocoa.rb",
36
+ "lib/plist4r/backend_base.rb",
36
37
  "lib/plist4r/config.rb",
37
38
  "lib/plist4r/mixin.rb",
38
39
  "lib/plist4r/mixin/class_attributes.rb",
@@ -48,10 +49,17 @@ Gem::Specification.new do |s|
48
49
  "lib/plist4r/plist_type/launchd.rb",
49
50
  "lib/plist4r/plist_type/plist.rb",
50
51
  "plist4r.gemspec",
52
+ "plists/Picture of Today.plist",
53
+ "plists/com.adobe.PDFAdminSettings.plist",
54
+ "plists/com.apple.SoftwareUpdate.plist",
55
+ "plists/foofoo.xml",
56
+ "plists/test.plist",
51
57
  "spec/examples.rb",
58
+ "spec/plist4r/plist_spec.rb",
52
59
  "spec/plist4r_spec.rb",
53
60
  "spec/spec.opts",
54
- "spec/spec_helper.rb"
61
+ "spec/spec_helper.rb",
62
+ "test.rb"
55
63
  ]
56
64
  s.homepage = %q{http://github.com/dreamcat4/plist4r}
57
65
  s.rdoc_options = ["--charset=UTF-8"]
@@ -60,6 +68,7 @@ Gem::Specification.new do |s|
60
68
  s.summary = %q{Dreamcat4's plist4r gem. For reading/writing plists in ruby}
61
69
  s.test_files = [
62
70
  "spec/examples.rb",
71
+ "spec/plist4r/plist_spec.rb",
63
72
  "spec/plist4r_spec.rb",
64
73
  "spec/spec_helper.rb"
65
74
  ]
@@ -0,0 +1,75 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>autoPoll</key>
6
+ <true/>
7
+ <key>cMax</key>
8
+ <integer>129600</integer>
9
+ <key>debug</key>
10
+ <true/>
11
+ <key>debugInXcode</key>
12
+ <false/>
13
+ <key>desktopPrefs</key>
14
+ <dict>
15
+ <key>BackgroundColor</key>
16
+ <array>
17
+ <real>0.254902</real>
18
+ <real>0.4117647</real>
19
+ <real>0.6666667</real>
20
+ </array>
21
+ <key>Change</key>
22
+ <string>Never</string>
23
+ <key>ChangePath</key>
24
+ <string>/Library/Desktop Pictures/Nature</string>
25
+ <key>ChangeTime</key>
26
+ <real>1800</real>
27
+ <key>DrawBackgroundColor</key>
28
+ <true/>
29
+ <key>ImageFileAlias</key>
30
+ <data>AAAAAAC4AAMAAAAAxY+tngAASCsAAAAAAEh7KwBIe0wAAMaUOpUAAAAACSD//gAAAAAAAAAA/////wABAAwASHsrAEh61QBGMgwADgAUAAkARQBhAHIAdABoAC4AagBwAGcADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgApTGlicmFyeS9EZXNrdG9wIFBpY3R1cmVzL05hdHVyZS9FYXJ0aC5qcGcAABMAAS8A//8AAA==</data>
31
+ <key>ImageFilePath</key>
32
+ <string>/Library/Desktop Pictures/Nature/Earth.jpg</string>
33
+ <key>NewChangePath</key>
34
+ <string>/Library/Desktop Pictures/Nature</string>
35
+ <key>NewImageFilePath</key>
36
+ <string>/Library/Desktop Pictures/Nature/Earth.jpg</string>
37
+ <key>Placement</key>
38
+ <string>Crop</string>
39
+ <key>Random</key>
40
+ <false/>
41
+ </dict>
42
+ <key>error</key>
43
+ <data>YnBsaXN0MDDUAQIDBAUIT1BUJHRvcFgkb2JqZWN0c1gkdmVyc2lvblkkYXJjaGl2ZXLRBgdUcm9vdIABrxAUCQoTFCIjJCUmJy00NTo7RUZHSEtVJG51bGzUCwwNDg8QERJWJGNsYXNzVk5TQ29kZVpOU1VzZXJJbmZvWE5TRG9tYWlugBMT/////////BeAA4ACXxAQTlNVUkxFcnJvckRvbWFpbtMVFgsXHCFaTlMub2JqZWN0c1dOUy5rZXlzpBgZGhuACIAJgAuADKQdHh8ggASABYAGgAeAEl8QGk5TRXJyb3JGYWlsaW5nVVJMU3RyaW5nS2V5XxAUTlNFcnJvckZhaWxpbmdVUkxLZXlfEBZOU0xvY2FsaXplZERlc2NyaXB0aW9uXxARTlNVbmRlcmx5aW5nRXJyb3JfEJFodHRwOi8vcGhvdG9ncmFwaHkubmF0aW9uYWxnZW9ncmFwaGljLmNvbS9zdGF0aWNmaWxlcy9OR1MvU2hhcmVkL1N0YXRpY0ZpbGVzL1Bob3RvZ3JhcGh5L0ltYWdlcy9QT0QvYS9hdG9tLWJvbWItYmlraW5pLWF0b2xsLTYzMzE3OC0xMDA1MDkteGwuanBn0ygpCyoYLFdOUy5iYXNlW05TLnJlbGF0aXZlgACACIAK0i4vMDNYJGNsYXNzZXNaJGNsYXNzbmFtZaIxMlVOU1VSTFhOU09iamVjdFVOU1VSTF8QFlRoZSByZXF1ZXN0IHRpbWVkIG91dC7UCwwNDg83ODmAExP////////8F4AOgA1fEBdrQ0ZFcnJvckRvbWFpbkNGTmV0d29ya9MVFgs8QCGjGRgagAmACIALo0FCQ4APgBCAEYASXxAUTlNFcnJvckZhaWxpbmdVUkxLZXlfEBpOU0Vycm9yRmFpbGluZ1VSTFN0cmluZ0tleV8QFk5TTG9jYWxpemVkRGVzY3JpcHRpb27SLi9JSqJKMlxOU0RpY3Rpb25hcnnSLi9MTqJNMldOU0Vycm9yV05TRXJyb3ISAAGGoF8QD05TS2V5ZWRBcmNoaXZlcgAIABEAFgAfACgAMgA1ADoAPABTAFkAYgBpAHAAewCEAIYAjwCRAJMApgCtALgAwADFAMcAyQDLAM0A0gDUANYA2ADaANwA+QEQASkBPQHRAdgB4AHsAe4B8AHyAfcCAAILAg4CFAIdAiMCPAJFAkcCUAJSAlQCbgJ1AnkCewJ9An8CgwKFAocCiQKLAqICvwLYAt0C4ALtAvIC9QL9AwUDCgAAAAAAAAIBAAAAAAAAAFEAAAAAAAAAAAAAAAAAAAMc</data>
44
+ <key>filename</key>
45
+ <string></string>
46
+ <key>frequency</key>
47
+ <string>daily</string>
48
+ <key>hMin</key>
49
+ <integer>240</integer>
50
+ <key>ignoreLostConnectivity</key>
51
+ <false/>
52
+ <key>imageSource</key>
53
+ <data>YnBsaXN0MDDUAQIDBAUI2ttUJHRvcFgkb2JqZWN0c1gkdmVyc2lvblkkYXJjaGl2ZXLRBgdUcm9vdIABrxAwCQofICElLC0uNjlBSktMVFlhYmVocHR5eoKGi4ycnZ6foKGnqKyytbm/wMTIzNDVVSRudWxs2gsMDQ4PEBESExQVFhcYGRoYHB0cWGRhdGFGaWxlU3VpZFV0aXRsZVdkYXRhVXJsW2Rlc2NyaXB0aW9uXxAPX29iakluaXRpYWxpemVkWGltYWdlVXJsVXF1ZXJ5ViRjbGFzc1VlcnJvcoADgASAB4ACgAiABoACgACAL4AAXxCRaHR0cDovL3Bob3RvZ3JhcGh5Lm5hdGlvbmFsZ2VvZ3JhcGhpYy5jb20vc3RhdGljZmlsZXMvTkdTL1NoYXJlZC9TdGF0aWNGaWxlcy9QaG90b2dyYXBoeS9JbWFnZXMvUE9EL2EvYXRvbS1ib21iLWJpa2luaS1hdG9sbC02MzMxNzgtMTAwNTA5LXhsLmpwZ18QaC9Vc2Vycy9pZC9QaWN0dXJlIG9mIFRvZGF5L3Rlc3QvcGljdHVyZXMvTmF0aW9uYWwgR2VvZ3JhcGhpYy9hdG9tLWJvbWItYmlraW5pLWF0b2xsLTYzMzE3OC0xMDA1MDkteGwuanBn0iITIyRZTlMuc3RyaW5nXxAoYWJlODJhYmFmY2I2NTM1NzQwNzIxODFlYzMxYzQwMDRjZDBiZjc4YYAF0iYnKClYJGNsYXNzZXNaJGNsYXNzbmFtZaMpKitfEA9OU011dGFibGVTdHJpbmdYTlNTdHJpbmdYTlNPYmplY3QJbxBVAEEAdABvAG0AaQBjACAAQgBvAG0AYgAgAFQAZQBzAHQAIABQAGgAbwB0AG8ALAAgAEIAaQBrAGkAbgBpACAAQQB0AG8AbABsACAAVwBhAGwAbABwAGEAcABlAHIAICATACAATgBhAHQAaQBvAG4AYQBsACAARwBlAG8AZwByAGEAcABoAGkAYwAgAFAAaABvAHQAbwAgAG8AZgAgAHQAaABlACAARABhAHnULzATMTIzNDVfEA9OU0F0dHJpYnV0ZUluZm9cTlNBdHRyaWJ1dGVzWE5TU3RyaW5ngCyACoAugAnSIhM3JF8RAURBdG9tIEJvbWIgVGVzdCwgQmlraW5pIEF0b2xsClBob3RvZ3JhcGggYnkgVS5TLiBOYXZ5ClRoaXMgbW9udGggaW4gUGhvdG8gb2YgdGhlIERheTogSW1hZ2VzIEZyb20gdGhlIE5hdGlvbmFsIEdlb2dyYXBoaWMgQXJjaGl2ZQpUaGUgc2Vjb25kIGF0b21pYyBib21iIHRlc3RlZCBpbiBPcGVyYXRpb24gQ3Jvc3Nyb2FkcwoKRnJvbSB0aGUgdXBjb21pbmcgTmF0aW9uYWwgR2VvZ3JhcGhpYyBib29rIFRoZSBJbWFnZSBDb2xsZWN0aW9uLCBkdWUgZmFsbCAyMDA5LiBTaG9wIGZvciBvdGhlciBwaG90b2dyYXBoeSBib29rcyBmcm9tIE5hdGlvbmFsIEdlb2dyYXBoaWMuCgqABdI6EztAWk5TLm9iamVjdHOkPD0+P4ALgBSAGIAcgCvTOkITQ0ZJV05TLmtleXOiREWADoAQokdIgAyADYATXxAQTlNQYXJhZ3JhcGhTdHlsZVZOU0ZvbnTUTU5PE1AcUlNfEBJOU1BhcmFncmFwaFNwYWNpbmdaTlNUYWJTdG9wc1tOU0FsaWdubWVudCNAGAAAAAAAAIAAEASAD9ImJ1VYo1ZXK18QF05TTXV0YWJsZVBhcmFncmFwaFN0eWxlXxAQTlNQYXJhZ3JhcGhTdHlsZV8QF05TTXV0YWJsZVBhcmFncmFwaFN0eWxl1FpbE1xdXl9gVk5TU2l6ZVZOU05hbWVYTlNmRmxhZ3MjQDYAAAAAAACAEYASEBBfEBFMdWNpZGFHcmFuZGUtQm9sZNImJ2NkomQrVk5TRm9udNImJ2ZnomcrXE5TRGljdGlvbmFyedM6QhNpbEmiamuAFYAWokdIgAyADYAT1E1OTxNxHFJTI0AYAAAAAAAAgACAD9RaWxNcdXZfeCNAJgAAAAAAAIAXgBIQEFxMdWNpZGFHcmFuZGXTOkITe35Jonx9gBmAGqJHSIAMgA2AE9RNTk8TgxxSUyNAGAAAAAAAAIAAgA/UWlsTXIeIX4ojQCYAAAAAAACAG4ASEBBfEBFIZWx2ZXRpY2EtT2JsaXF1ZdM6QhONlEmmjo9rkZKTgCGAIoAWgCWAJ4AoppWWSJhHmoAdgB6ADYAfgAyAIIATW05TVW5kZXJsaW5lVk5TTGlua1dOU0NvbG9yWE5TQ3Vyc29yEAHToqMTHKWmV05TLmJhc2VbTlMucmVsYXRpdmWAAIAjgCRfEG9odHRwOi8vc2hvcC5uYXRpb25hbGdlb2dyYXBoaWMuY29tL2NvdXBvbi5qc3A/Y29kZT1NUjIwMjEyJlVSTD0lMkZqdW1wLmpzcCUzRml0ZW1JRCUzRDQ0NDUlMjZpdGVtVHlwZSUzRFBST0RVQ1TSJiepq6KqK1VOU1VSTFVOU1VSTNOtrhOvsLFVTlNSR0JcTlNDb2xvclNwYWNlTxARMCAwIDAuOTMzMzMzMzM3MwAQAoAm0iYns7SitCtXTlNDb2xvctRNTk8TthxSUyNAGAAAAAAAAIAAgA/TursTvL2+WU5TSG90U3BvdFxOU0N1cnNvclR5cGWAKRAMgCpXezgsIC04fdImJ8HDosIrWE5TQ3Vyc29yWE5TQ3Vyc29y0iYnxcajxscrXk5TTXV0YWJsZUFycmF5V05TQXJyYXnSyRPKy1dOUy5kYXRhTxAQHQAYAUsCYwEUAiABEQMcAYAt0iYnzc6jzs8rXU5TTXV0YWJsZURhdGFWTlNEYXRh0iYn0dSj0tMrXxAZTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZ18QEk5TQXR0cmlidXRlZFN0cmluZ18QGU5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmfSJifW2aPX2CtdUFRJbWFnZVNvdXJjZVtMT1dlYlNvdXJjZV1QVEltYWdlU291cmNlEgABhqBfEA9OU0tleWVkQXJjaGl2ZXIACAARABYAHwAoADIANQA6ADwAbwB1AIoAkwCXAJ0ApQCxAMMAzADSANkA3wDhAOMA5QDnAOkA6wDtAO8A8QDzAYcB8gH3AgECLAIuAjMCPAJHAksCXQJmAm8CcAMdAyYDOANFA04DUANSA1QDVgNbBKMEpQSqBLUEugS8BL4EwATCBMQEywTTBNYE2ATaBN0E3wThBOME9gT9BQYFGwUmBTIFOwU9BT8FQQVGBUoFZAV3BZEFmgWhBagFsQW6BbwFvgXABdQF2QXcBeMF6AXrBfgF/wYCBgQGBgYJBgsGDQYPBhgGIQYjBiUGLgY3BjkGOwY9BkoGUQZUBlYGWAZbBl0GXwZhBmoGcwZ1BncGgAaJBosGjQaPBqMGqgaxBrMGtQa3BrkGuwa9BsQGxgbIBsoGzAbOBtAG0gbeBuUG7Qb2BvgG/wcHBxMHFQcXBxkHiweQB5MHmQefB6YHrAe5B80HzwfRB9YH2QfhB+oH8wf1B/cH/ggICBUIFwgZCBsIIwgoCCsINAg9CEIIRghVCF0IYghqCH0IfwiECIgIlgidCKIIpgjCCNcI8wj4CPwJCgkWCSQJKQAAAAAAAAIBAAAAAAAAANwAAAAAAAAAAAAAAAAAAAk7</data>
54
+ <key>lastUpdate</key>
55
+ <date>2009-10-05T16:37:47Z</date>
56
+ <key>maxPictures</key>
57
+ <integer>1</integer>
58
+ <key>nextDueDate</key>
59
+ <date>2009-10-05T22:45:00Z</date>
60
+ <key>pollingInterval</key>
61
+ <integer>28799</integer>
62
+ <key>previousPolls</key>
63
+ <integer>2</integer>
64
+ <key>ptEnabled</key>
65
+ <false/>
66
+ <key>savePath</key>
67
+ <string>~/Picture of Today/test/pictures/National Geographic</string>
68
+ <key>selectedSource</key>
69
+ <integer>4</integer>
70
+ <key>updateInterval</key>
71
+ <integer>86400</integer>
72
+ <key>updateTime</key>
73
+ <date>2000-01-01T23:45:00Z</date>
74
+ </dict>
75
+ </plist>
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>WebIconDatabaseDirectoryDefaultsKey</key>
6
+ <string>~/Library/Icons</string>
7
+ <key>WebKitDefaultFontSize</key>
8
+ <integer>11</integer>
9
+ <key>WebKitStandardFont</key>
10
+ <string>Lucida Grande</string>
11
+ </dict>
12
+ </plist>
@@ -0,0 +1,53 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>EnableTransactions</key>
6
+ <true/>
7
+ <key>ExitTimeOut</key>
8
+ <integer>60</integer>
9
+ <key>KeepAlive</key>
10
+ <dict>
11
+ <key>PathState</key>
12
+ <dict>
13
+ <key>/private/var/spool/cups/cache/org.cups.cupsd</key>
14
+ <true/>
15
+ </dict>
16
+ </dict>
17
+ <key>Label</key>
18
+ <string>org.cups.cupsd</string>
19
+ <key>ProgramArguments</key>
20
+ <array>
21
+ <string>/usr/sbin/cupsd</string>
22
+ <string>-l</string>
23
+ </array>
24
+ <key>SHAuthorizationRight</key>
25
+ <string>system.preferences</string>
26
+ <key>ServiceIPC</key>
27
+ <true/>
28
+ <key>Sockets</key>
29
+ <dict>
30
+ <key>Listeners</key>
31
+ <array>
32
+ <dict>
33
+ <key>SockNodeName</key>
34
+ <string>::1</string>
35
+ <key>SockServiceName</key>
36
+ <string>ipp</string>
37
+ </dict>
38
+ <dict>
39
+ <key>SockNodeName</key>
40
+ <string>127.0.0.1</string>
41
+ <key>SockServiceName</key>
42
+ <string>ipp</string>
43
+ </dict>
44
+ <dict>
45
+ <key>SockPathMode</key>
46
+ <integer>49663</integer>
47
+ <key>SockPathName</key>
48
+ <string>/private/var/run/cupsd</string>
49
+ </dict>
50
+ </array>
51
+ </dict>
52
+ </dict>
53
+ </plist>
Binary file
@@ -0,0 +1,42 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), "..", "spec_helper"))
2
+
3
+ module PlistSpecHelper
4
+ def test_xml_plist
5
+ @test_xml_plist ||= <<-'EOC'
6
+ <?xml version="1.0" encoding="UTF-8"?>
7
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
8
+ <plist version="1.0"><dict></dict></plist>
9
+ EOC
10
+ end
11
+
12
+ def valid_plist_attributes
13
+ {
14
+ :from_string => test_xml_plist,
15
+ :filename => "test_xml.plist"
16
+ :plist_type => "test_type"
17
+ :backends => ["test"]
18
+ }
19
+ end
20
+ end
21
+
22
+
23
+ describe Plist4r::Plist, "initialize" do
24
+ before do
25
+ # set expected plist object
26
+ # mock and stub the method call
27
+ end
28
+
29
+ describe "when the first argument is not a Hash, String, or Symbol"
30
+ before do
31
+ end
32
+
33
+ it "should raise an error" do
34
+ end
35
+ end
36
+
37
+ it "should return the new Plist object" do
38
+ # .should_be an_instance_of(::Plist4r::Plist)
39
+ end
40
+ end
41
+
42
+
@@ -1,7 +1,60 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
- describe "Plist4r" do
4
- it "fails" do
5
- fail "hey buddy, you should probably rename this file and start specing for real"
3
+ describe Plist4r, "new" do
4
+ before do
5
+ # set expected plist object
6
+ # mock and stub the method call
7
+ end
8
+
9
+ it "should run Plist.new with the supplied arguments" do
10
+ end
11
+
12
+ it "should return the new Plist object" do
13
+ # .should_be an_instance_of(::Plist4r::Plist)
14
+ end
15
+ end
16
+
17
+ describe Plist4r, "open" do
18
+ before do
19
+ # set expected plist object
20
+ # mock and stub the method call
21
+ end
22
+
23
+ it "should raise an error when no filename is given" do
24
+ end
25
+
26
+ it "should run Plist.new with the supplied filename, and any other supplied arguments" do
27
+ end
28
+ end
29
+
30
+ describe Plist4r, "string_detect_format" do
31
+ before do
32
+ end
33
+ it "should detect the plist format of the string given" do
6
34
  end
7
35
  end
36
+
37
+ describe Plist4r, "file_detect_format" do
38
+ before do
39
+ end
40
+ it "should detect the plist format of the file given" do
41
+ end
42
+ end
43
+
44
+
45
+ describe String, "to_plist" do
46
+ before do
47
+ # set expected plist object
48
+ # mock and stub the method call
49
+ end
50
+
51
+ it "should run ::Plist4r.new with the supplied string (self)" do
52
+ end
53
+
54
+ it "should return the new Plist object" do
55
+ end
56
+ end
57
+
58
+
59
+
60
+
@@ -1 +1,3 @@
1
1
  --color
2
+ --loadby
3
+ mtime
data/test.rb ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'lib/plist4r'
4
+
5
+
6
+ # Plist4r.new
7
+
8
+ p = Plist4r.open "plists/foofoo.xml"
9
+
10
+ # puts p.inspect
11
+ # puts p.to_hash.inspect
12
+
13
+ puts p.to_xml
14
+