blob: 1b9f32f0251596ce2dfe0f3461e46c330156bf18 [file] [log] [blame]
// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
part of initialize;
/// Implement this class to create your own initializer.
///
/// Hello world example:
///
/// class Print implements Initializer<Type> {
/// final String message;
/// const Print(this.message);
///
/// @override
/// initialize(Type t) => print('$t says `$message`');
/// }
///
/// @Print('hello world!')
/// class Foo {}
///
/// Call [run] from your main and this will print 'Foo says `hello world!`'
///
abstract class Initializer<T> {
dynamic initialize(T target);
}
/// Typedef for a custom filter function.
typedef bool InitializerFilter(Initializer initializer);
/// When annotating libraries, this is passed to the initializer.
class LibraryIdentifier {
// The qualified name of the library.
final Symbol name;
// The package this library lives in. May be null if its the same as the root
// package.
final String package;
// The path to the library.
final String path;
const LibraryIdentifier(this.name, this.package, this.path);
bool operator ==(dynamic other) =>
other is LibraryIdentifier &&
name == other.name &&
package == other.package &&
path == other.path;
String toString() => '$name: $package:$path';
}