Module: Plist4r::Backend::OsxPlist

Defined in:
lib/plist4r/backend/osx_plist.rb

Class Methods

Overview

Source: github.com/kballard/osx-plist

This backend only works on MacOSX. It supports everything using a compiled CoreFoundation helper in ext directory, and uses native Cocoa CoreFoundation API calls. This backend invokes CFPropertyListWriteToStream.

Should work for any 10.5 (Leopard), 10.6 (Snow Leopard) Mac OSX distribution. It will do nothing on non-mac platforms (eg Linux etc).

Author:

Class Method Details

+ (Object) from_binary(plist)



50
51
52
# File 'lib/plist4r/backend/osx_plist.rb', line 50

def from_binary plist
  from_string plist
end

+ (Object) from_gnustep(plist)



54
55
56
# File 'lib/plist4r/backend/osx_plist.rb', line 54

def from_gnustep plist
  from_string plist
end

+ (Object) from_string(plist)



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/plist4r/backend/osx_plist.rb', line 24

def from_string plist
  require_c_ext
  ruby_object = Plist4r::Backend::OsxPlist.load(plist.from_string, nil)

  hash_obj = nil
  if ruby_object.is_a? Hash
    hash_obj = ruby_object

  elsif ruby_object
    hash_obj = { ruby_object.class.to_s => ruby_object }

  else
    raise "Conversion tp plist object failed"
  end

  hash = ::Plist4r::OrderedHash.new
  hash.replace hash_obj
  plist.import_hash hash

  return plist
end

+ (Object) from_xml(plist)



46
47
48
# File 'lib/plist4r/backend/osx_plist.rb', line 46

def from_xml plist
  from_string plist
end

+ (Object) require_c_ext



16
17
18
19
20
21
22
# File 'lib/plist4r/backend/osx_plist.rb', line 16

def require_c_ext
  core_foundation_framework = "/System/Library/Frameworks/CoreFoundation.framework"
  unless File.exists? core_foundation_framework
    raise "CoreFoundation Framework not found. Searched in: #{core_foundation_framework}"
  end
  require "#{File.dirname(__FILE__)}/osx_plist/ext/osx_plist"
end

+ (Object) to_binary(plist)



70
71
72
# File 'lib/plist4r/backend/osx_plist.rb', line 70

def to_binary plist
  to_fmt plist, :binary1
end

+ (Object) to_fmt(plist, fmt)



58
59
60
61
62
63
64
# File 'lib/plist4r/backend/osx_plist.rb', line 58

def to_fmt plist, fmt
  require_c_ext
  string = ""
  sio = StringIO.new(string, "w")
  Plist4r::Backend::OsxPlist.dump(sio, plist.to_hash, fmt)
  return string
end

+ (Object) to_xml(plist)



66
67
68
# File 'lib/plist4r/backend/osx_plist.rb', line 66

def to_xml plist
  to_fmt plist, :xml1
end