-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmodule.dart
41 lines (33 loc) · 1.12 KB
/
module.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import 'dart:collection';
import 'definition.dart';
import 'definitions.dart';
import 'qualifier.dart';
import 'scope_definition.dart';
import 'scope_dsl.dart';
typedef ModuleDeclaration = Function(Module);
Module module(ModuleDeclaration moduleDeclaration) {
Module module = Module();
moduleDeclaration(module);
return module;
}
class Module {
final Qualifier rootScope = ScopeDefinition.ROOT_SCOPE_QUALIFIER;
Set<BeanDefinition> definitions = HashSet<BeanDefinition>();
List<Qualifier> scopes = <Qualifier>[];
void single<T>(Definition<T> definition, {Qualifier? qualifier}) {
final BeanDefinition<T> def =
Definitions.createSingle(rootScope, qualifier, definition);
definitions.add(def);
}
void factory<T>(Definition<T> definition, {Qualifier? qualifier}) {
final BeanDefinition<T> def =
Definitions.createFactory(rootScope, qualifier, definition);
definitions.add(def);
}
void scope<T>(Function(ScopeDSL) scopeSet) {
Qualifier qualifier = TypeQualifier(T);
ScopeDSL scopeDSL = ScopeDSL(qualifier, definitions);
scopeSet(scopeDSL);
scopes.add(qualifier);
}
}