plist4r 0.1.0 → 0.1.1

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.
@@ -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
+