#import typedef enum { GBHubStatusNotReady, GBHubStatusInProgress, GBHubStatusReady, GBHubStatusError, } GBHubStatus; static inline NSString *GBSearchCanonicalString(NSString *string) { return [[string.lowercaseString stringByApplyingTransform:NSStringTransformStripDiacritics reverse:false] stringByApplyingTransform:NSStringTransformStripCombiningMarks reverse:false]; } @interface GBHubGame : NSObject @property (readonly) NSString *title; @property (readonly) NSString *developer; @property (readonly) NSString *type; @property (readonly) NSString *license; @property (readonly) NSDate *publicationDate; @property (readonly) NSArray *tags; @property (readonly) NSURL *repository; @property (readonly) NSURL *website; @property (readonly) NSArray *screenshots; @property (readonly) NSURL *file; @property (readonly) NSString *slug; @property (readonly) NSString *entryDescription; @property (readonly) NSString *keywords; @end extern NSString *const GBHubStatusChangedNotificationName; @interface GBHub : NSObject + (instancetype)sharedHub; - (void)refresh; - (unsigned)countForTag:(NSString *)tag; @property (readonly) GBHubStatus status; @property (readonly) NSDictionary *allGames; @property (readonly) NSArray *sortedTags; @property (readonly) NSArray *showcaseGames; @end