Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 Initialize | 1 Initialize |
| 2 ========== | 2 ========== |
| 3 | 3 |
| 4 This package provides a common interface for initialization annotations on top | 4 This package provides a common interface for initialization annotations on top |
| 5 level methods, classes, and libraries. The interface looks like this: | 5 level methods, classes, and libraries. The interface looks like this: |
| 6 | 6 |
| 7 abstract class Initializer<T> { | 7 abstract class Initializer<T> { |
| 8 dynamic initialize(T target); | 8 dynamic initialize(T target); |
| 9 } | 9 } |
| 10 | 10 |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 84 | 84 |
| 85 For classes which are stateless, you can usually just have a single const | 85 For classes which are stateless, you can usually just have a single const |
| 86 instance, and that is how the actual InitMethod implementation works. Simply add | 86 instance, and that is how the actual InitMethod implementation works. Simply add |
| 87 something like the following: | 87 something like the following: |
| 88 | 88 |
| 89 const initMethod = const InitMethod(); | 89 const initMethod = const InitMethod(); |
| 90 | 90 |
| 91 Now when people use the annotation, it just looks like `@initMethod` without any | 91 Now when people use the annotation, it just looks like `@initMethod` without any |
| 92 parenthesis, and its a bit more efficient since there is a single instance. You | 92 parenthesis, and its a bit more efficient since there is a single instance. You |
| 93 can also make your class private to force users into using the static instance. | 93 can also make your class private to force users into using the static instance. |
| 94 | |
| 95 ## Creating custom transformer plugins | |
| 96 | |
| 97 It is possible to create a custom plugin for the initialize transformer which | |
| 98 allows you to have full control over what happens to your annotations at compile | |
| 99 time. Implement `InitializePlugin` class and pass that in to the | |
| 100 `InitializeTransformer` to make it take effect. | |
| 101 | |
| 102 You will need to be familiar with the `analyzer` package in order to write these | |
| 103 plugins, but they can be extremely powerful. See the `DefaultInitializerPlugin` | |
| 104 in `lib/build/initializer_plugin.dart` as a reference. Chances are you may want | |
| 105 to extend that class in order to get a lot of the default functionality. | |
| 106 | |
| 107 TODO: Add some examples here. | |
|
Siggi Cherem (dart-lang)
2015/02/13 00:50:36
I think the pointer above is good, not sure if we
jakemac
2015/02/13 20:16:05
Done.
| |
| OLD | NEW |