Skip to content

Commit

Permalink
Create new DurationPipe
Browse files Browse the repository at this point in the history
  • Loading branch information
MattVonVielen committed Apr 8, 2016
1 parent 00a5396 commit 43718e4
Show file tree
Hide file tree
Showing 7 changed files with 59 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ DateFormatPipe.d.ts
FromUnixPipe.js
FromUnixPipe.js.map
FromUnixPipe.d.ts
DurationPipe.js
DurationPipe.js.map
DurationPipe.d.ts
index.js
index.js.map
index.d.ts
Expand Down
21 changes: 21 additions & 0 deletions DurationPipe.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import {DurationPipe} from './DurationPipe';

describe('DurationPipe', () => {
var pipe: DurationPipe;

beforeEach(() => pipe = new DurationPipe());

describe('#transform', () => {
it('should throw when provided no arguments', () => {
expect(() => pipe.transform(128)).toThrow(new Error('DurationPipe: missing required time unit argument'));
});

it('should convert a duration to a human-readable string', () => {
expect(pipe.transform(24, ['hours'])).toEqual('a day');
expect(pipe.transform(27, ['days'])).toEqual('a month');
expect(pipe.transform(365, ['seconds'])).toEqual('6 minutes');
expect(pipe.transform(365, ['days'])).toEqual('a year');
expect(pipe.transform(86400, ['seconds'])).toEqual('a day');
});
});
});
12 changes: 12 additions & 0 deletions DurationPipe.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import {Pipe, PipeTransform} from 'angular2/core';
import * as moment from 'moment';

@Pipe({ name: 'amDuration' })
export class DurationPipe implements PipeTransform {
transform(value: any, args?: string[]): string {
if (typeof args === 'undefined' || args.length !== 1) {
throw new Error('DurationPipe: missing required time unit argument');
}
return moment.duration(value, args[0]).humanize();
}
}
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,22 @@ import {DateFormatPipe, FromUnixPipe} from 'angular2-moment';

Prints `Last updated: 01:46PM`

## amDuration pipe

``` typescript
import {DurationPipe} from 'angular2-moment';

@Component({
selector: 'app',
pipes: [DurationPipe],
template: `
Uptime: <time>{{ 365 | amDuration:'seconds' }}</time>
`
})
```

Prints `Uptime: 6 minutes`

Complete Example
----------------

Expand Down
1 change: 1 addition & 0 deletions index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ export * from './TimeAgoPipe';
export * from './CalendarPipe';
export * from './DateFormatPipe';
export * from './FromUnixPipe';
export * from './DurationPipe';
4 changes: 4 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@
"DateFormatPipe.js.map",
"DateFormatPipe.d.ts",
"DateFormatPipe.ts",
"DurationPipe.js",
"DurationPipe.js.map",
"DurationPipe.d.ts",
"DurationPipe.ts",
"TimeAgoPipe.js",
"TimeAgoPipe.js.map",
"TimeAgoPipe.d.ts",
Expand Down
2 changes: 2 additions & 0 deletions tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
"DateFormatPipe.spec.ts",
"FromUnixPipe.ts",
"FromUnixPipe.spec.ts",
"DurationPipe.ts",
"DurationPipe.spec.ts",
"TimeAgoPipe.ts",
"TimeAgoPipe.spec.ts",
"index.ts"
Expand Down

0 comments on commit 43718e4

Please sign in to comment.