CFPropertyList::List raises an error when the following types of Property List.
1. Dictionary without surrounding { }
require 'cfpropertylist'
data = 'foo = bar;'
CFPropertyList::List.new(data: data)
/path/to/CFPropertyList-3.0.7/lib/cfpropertylist/rbPlainCFPropertyList.rb:25:in `load': content after root object (CFFormatError)
from /path/to/CFPropertyList-3.0.7/lib/cfpropertylist/rbCFPropertyList.rb:321:in `load_str'
from /path/to/CFPropertyList-3.0.7/lib/cfpropertylist/rbCFPropertyList.rb:239:in `initialize'
from /var/folders/tm/wy8sj46s6yq4rlfgsxyvd1l80000gn/T/vdeL7YX/205:5:in `new'
from /var/folders/tm/wy8sj46s6yq4rlfgsxyvd1l80000gn/T/vdeL7YX/205:5:in `<main>'
I cannot find the specification but I think it is a valid format because of some reasons.
Details
plutil can parse it.
$ echo 'foo = bar;' | plutil -p -
{
"foo" => "bar"
}
pl can parse it.
$ echo 'foo = bar;' | pl
{
foo = bar;
}
- Foundation classes can parse it.
import Foundation
try! "foo = bar;".write(toFile: "foobar.plist", atomically: false, encoding: .utf8)
print(NSDictionary(contentsOfFile: "foobar.plist")!)
// prints
// {
// foo = bar;
// }
And also, .strings format, which is often used as iOS localized string file, is encoded as this kind of Property List.
Whitespaces at the end
require 'cfpropertylist'
data = "foo\n"
CFPropertyList::List.new(data: data)
/path/to/CFPropertyList-3.0.7/lib/cfpropertylist/rbPlainCFPropertyList.rb:25:in `load': content after root object (CFFormatError)
from /path/to/CFPropertyList-3.0.7/lib/cfpropertylist/rbCFPropertyList.rb:321:in `load_str'
from /path/to/CFPropertyList-3.0.7/lib/cfpropertylist/rbCFPropertyList.rb:239:in `initialize'
from /var/folders/tm/wy8sj46s6yq4rlfgsxyvd1l80000gn/T/vdeL7YX/188:5:in `new'
from /var/folders/tm/wy8sj46s6yq4rlfgsxyvd1l80000gn/T/vdeL7YX/188:5:in `<main>'
I think it is also valid because of the following reasons.
Details
plutil can parse it.
$ printf 'foo\n' | plutil -p -
"foo"
pl can parse it.
$ printf 'foo\n' | pl
foo
- Foundation classes can parse it.
import Foundation
try! "foo\n".write(toFile: "foobar.plist", atomically: false, encoding: .utf8)
print(try! NSString(contentsOfFile: "foobar.plist", encoding: String.Encoding.utf8.rawValue))
// prints foo
CFPropertyList::Listraises an error when the following types of Property List.1. Dictionary without surrounding
{}I cannot find the specification but I think it is a valid format because of some reasons.
Details
plutilcan parse it.plcan parse it.And also,
.stringsformat, which is often used as iOS localized string file, is encoded as this kind of Property List.Whitespaces at the end
I think it is also valid because of the following reasons.
Details
plutilcan parse it.plcan parse it.