88 lines
1.7 KiB
TypeScript
Raw Normal View History

import {ABSTRACT, BaseException, CONST} from 'angular2/src/facade/lang';
2015-04-10 11:15:01 -07:00
/**
* Indicates that the result of a {@link Pipe} transformation has changed even though the reference
*has not changed.
2015-04-10 11:15:01 -07:00
*
* The wrapped value will be unwrapped by change detection, and the unwrapped value will be stored.
2015-04-10 11:15:01 -07:00
*
* @exportedAs angular2/pipes
*/
export class WrappedValue {
constructor(public wrapped: any) {}
static wrap(value: any): WrappedValue {
var w = _wrappedValues[_wrappedIndex++ % 5];
w.wrapped = value;
return w;
}
}
var _wrappedValues = [
new WrappedValue(null),
new WrappedValue(null),
new WrappedValue(null),
new WrappedValue(null),
new WrappedValue(null)
];
var _wrappedIndex = 0;
/**
2015-04-10 11:15:01 -07:00
* An interface for extending the list of pipes known to Angular.
*
* If you are writing a custom {@link Pipe}, you must extend this interface.
2015-04-10 11:15:01 -07:00
*
* #Example
*
* ```
* class DoublePipe implements Pipe {
2015-04-10 11:15:01 -07:00
* supports(obj) {
* return true;
* }
*
* onDestroy() {}
*
2015-04-10 11:15:01 -07:00
* transform(value) {
* return `${value}${value}`;
* }
* }
* ```
*
* @exportedAs angular2/pipes
*/
export interface Pipe {
supports(obj): boolean;
onDestroy(): void;
transform(value: any): any;
2015-04-10 11:15:01 -07:00
}
/**
* Provides default implementation of supports and onDestroy.
*
* #Example
*
* ```
* class DoublePipe extends BasePipe {*
* transform(value) {
* return `${value}${value}`;
* }
* }
* ```
*/
@CONST()
export class BasePipe implements Pipe {
supports(obj): boolean { return true; }
onDestroy(): void {}
transform(value: any): any { return _abstract(); }
}
export interface PipeFactory {
supports(obs): boolean;
create(cdRef): Pipe;
}
function _abstract() {
throw new BaseException('This method is abstract');
}