Skip to content

Commit d61a30b

Browse files
author
jblues
committed
Add convenience methods to assembly
1 parent fd71d88 commit d61a30b

File tree

3 files changed

+43
-3
lines changed

3 files changed

+43
-3
lines changed

.idea/Typhoon.iml

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Source/Factory/Assembly/TyphoonAssembly.h

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ AnalyticsService* service = [assembly analyticsService];
4141
* - Allows the use of IDE features like refactoring and code completion.
4242
*
4343
*/
44-
@interface TyphoonAssembly : NSObject<TyphoonComponentFactory>
44+
@interface TyphoonAssembly : NSObject <TyphoonComponentFactory>
4545

4646
+ (instancetype)assembly;
4747

@@ -60,13 +60,33 @@ AnalyticsService* service = [assembly analyticsService];
6060
*/
6161
- (instancetype)activate;
6262

63+
64+
/**
65+
* Activates the assembly, attaching the specified config resource name from the application bundle.
66+
*
67+
* This method is a convenience for:
68+
@code
69+
70+
TyphoonConfigPostProcessor *processor = [TyphoonConfigPostProcessor processor];
71+
[processor useResourceWithName:@"Config_production.plist"];
72+
[self attachPostProcessor:processor];
73+
[self activate];
74+
75+
@endcode
76+
*
77+
*/
78+
- (instancetype)activateWithConfigResourceName:(NSString *)resourceName;
79+
80+
6381
/**
6482
* Activates the assembly, explicitly setting the types for collaborating assemblies.
6583
*
6684
* @param assemblies The explicit types to be used for collaborating assemblies. For example if this assembly
6785
* references another assembly of type NetworkProvider, specifying a subclass TestNetworkProvider will override
6886
* the base type. If collaborating assemblies are backed by a protocol, they must be specified explicitly.
6987
*/
70-
- (instancetype)activateWithCollaboratingAssemblies:(NSArray*)assemblies;
88+
- (instancetype)activateWithCollaboratingAssemblies:(NSArray *)assemblies;
89+
90+
- (instancetype)activateWithCollaboratingAssemblies:(NSArray *)assemblies postProcessors:(NSArray *)postProcessors;
7191

7292
@end

Source/Factory/Assembly/TyphoonAssembly.m

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#import "OCLogTemplate.h"
2626
#import "TyphoonBlockComponentFactory.h"
2727
#import "TyphoonCollaboratingAssembliesCollector.h"
28+
#import "TyphoonConfigPostProcessor.h"
2829

2930
static NSMutableSet *reservedSelectorsAsStrings;
3031

@@ -243,7 +244,19 @@ - (instancetype)activate {
243244
return [self activateWithCollaboratingAssemblies:nil];
244245
}
245246

247+
- (instancetype)activateWithConfigResourceName:(NSString *)resourceName {
248+
TyphoonConfigPostProcessor *processor = [TyphoonConfigPostProcessor processor];
249+
[processor useResourceWithName:resourceName];
250+
return [self activateWithCollaboratingAssemblies:nil postProcessors:@[processor]];
251+
}
252+
246253
- (instancetype)activateWithCollaboratingAssemblies:(NSArray *)assemblies {
254+
return [self activateWithCollaboratingAssemblies:assemblies postProcessors:nil];
255+
}
256+
257+
- (instancetype)activateWithCollaboratingAssemblies:(NSArray *)assemblies postProcessors:(NSArray *)postProcessors {
258+
[self attachProcessors:postProcessors];
259+
247260
NSMutableSet *reconciledAssemblies = [NSMutableSet setWithArray:[@[self] arrayByAddingObjectsFromArray:assemblies]];
248261
NSMutableSet *assembliesToRemove = [[NSMutableSet alloc] init];
249262

@@ -278,11 +291,16 @@ - (instancetype)activateWithCollaboratingAssemblies:(NSArray *)assemblies {
278291
}
279292

280293

281-
282294
//-------------------------------------------------------------------------------------------
283295
#pragma mark - Private Methods
284296
//-------------------------------------------------------------------------------------------
285297

298+
- (void)attachProcessors:(NSArray *)postProcessors {
299+
for (id<TyphoonDefinitionPostProcessor> processor in postProcessors) {
300+
[self attachDefinitionPostProcessor:processor];
301+
}
302+
}
303+
286304
- (void)proxyCollaboratingAssembliesPriorToActivation {
287305
TyphoonCollaboratingAssemblyPropertyEnumerator *enumerator = [[TyphoonCollaboratingAssemblyPropertyEnumerator alloc]
288306
initWithAssembly:self];

0 commit comments

Comments
 (0)