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.
1. `plutil` can parse it.
```sh
$ echo 'foo = bar;' | plutil -p -
{
"foo" => "bar"
}
```
2. `pl` can parse it.
```sh
$ echo 'foo = bar;' | pl
{
foo = bar;
}
```
3. Foundation classes can parse it.
```swift
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.
1. `plutil` can parse it.
```sh
$ printf 'foo\n' | plutil -p -
"foo"
```
2. `pl` can parse it.
```sh
$ printf 'foo\n' | pl
foo
```
3. Foundation classes can parse it.
```swift
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::List
raises 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.
Whitespaces at the end
I think it is also valid because of the following reasons.