// Extra checks during initialization because the data is often loaded
// from untrusted serializations.
// Extra checks during initialization because the data is often loaded
// from untrusted serializations.
-- (id)initWithSerialization:(NSDictionary *)serialization
- mappings:(NSArray *)mappings {
+- (id)initWithName:(NSString *)name {
+ if ((self = [self init])) {
+ if ([name isKindOfClass:NSString.class])
+ self.name = name;
+ }
+ return self;
+}
+
+- (id)initWithSerialization:(NSDictionary *)serialization {
if ((self = [self initWithName:serialization[@"name"]])) {
NSDictionary *entries = serialization[@"entries"];
if ([entries isKindOfClass:NSDictionary.class]) {
for (id key in entries) {
if ([key isKindOfClass:NSString.class]) {
if ((self = [self initWithName:serialization[@"name"]])) {
NSDictionary *entries = serialization[@"entries"];
if ([entries isKindOfClass:NSDictionary.class]) {
for (id key in entries) {
if ([key isKindOfClass:NSString.class]) {
NSInputStream *stream = [NSInputStream inputStreamWithURL:url];
[stream open];
NSDictionary *serialization = stream && !*error
NSInputStream *stream = [NSInputStream inputStreamWithURL:url];
[stream open];
NSDictionary *serialization = stream && !*error
&& [serialization[@"entries"] isKindOfClass:NSDictionary.class])) {
*error = [NSError errorWithDomain:@"Enjoyable"
code:0
&& [serialization[@"entries"] isKindOfClass:NSDictionary.class])) {
*error = [NSError errorWithDomain:@"Enjoyable"
code:0