Module: Xcodeproj::Plist
- Defined in:
- lib/xcodeproj/plist.rb
Overview
Provides support for loading and serializing property list files.
Constant Summary collapse
- KNOWN_IMPLEMENTATIONS =
The known modules that can serialize plists.
[]
Class Attribute Summary collapse
-
.implementation ⇒ Nil
deprecated
Deprecated.
This method will be removed in 2.0
Class Method Summary collapse
-
.autoload_implementation ⇒ Nil
deprecated
Deprecated.
This method will be removed in 2.0
-
.file_in_conflict?(contents) ⇒ Bool
Checks whether there are merge conflicts in the file.
-
.read_from_path(path) ⇒ Hash
Returns the native objects loaded from a property list file.
-
.write_to_path(hash, path) ⇒ Object
Serializes a hash as an XML property list file.
Class Attribute Details
.implementation ⇒ Nil
Deprecated.
This method will be removed in 2.0
68 69 70 |
# File 'lib/xcodeproj/plist.rb', line 68 def implementation @implementation end |
Class Method Details
.autoload_implementation ⇒ Nil
Deprecated.
This method will be removed in 2.0
75 76 |
# File 'lib/xcodeproj/plist.rb', line 75 def self.autoload_implementation end |
.file_in_conflict?(contents) ⇒ Bool
Returns Checks whether there are merge conflicts in the file.
83 84 85 86 87 88 89 90 91 92 |
# File 'lib/xcodeproj/plist.rb', line 83 def self.file_in_conflict?(contents) conflict_regex = / ^<{7}(?!<) # Exactly 7 left arrows at the beginning of the line [\w\W]* # Anything ^={7}(?!=) # Exactly 7 equality symbols at the beginning of the line [\w\W]* # Anything ^>{7}(?!>) # Exactly 7 right arrows at the beginning of the line /xm contents.match(conflict_regex) end |
.read_from_path(path) ⇒ Hash
Returns the native objects loaded from a property list file.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/xcodeproj/plist.rb', line 14 def self.read_from_path(path) path = path.to_s unless File.exist?(path) raise Informative, "The plist file at path `#{path}` doesn't exist." end contents = File.read(path) if file_in_conflict?(contents) raise Informative, "The file `#{path}` is in a merge conflict." end case Nanaimo::Reader.plist_type(contents) when :xml, :binary CFPropertyList.native_types(CFPropertyList::List.new(:data => contents).value) else Nanaimo::Reader.new(contents).parse!.as_ruby end end |
.write_to_path(hash, path) ⇒ Object
Serializes a hash as an XML property list file.
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/xcodeproj/plist.rb', line 39 def self.write_to_path(hash, path) if hash.respond_to?(:to_hash) hash = hash.to_hash else raise TypeError, "The given `#{hash.inspect}` must respond " \ "to #to_hash'." end unless path.is_a?(String) || path.is_a?(Pathname) raise TypeError, "The given `#{path}` must be a string or 'pathname'." end path = path.to_s raise IOError, 'Empty path.' if path.empty? File.open(path, 'w') do |f| plist = Nanaimo::Plist.new(hash, :xml) Nanaimo::Writer::XMLWriter.new(plist, :pretty => true, :output => f, :strict => false).write end end |