mirror of
https://github.com/FullScreenShenanigans/TimeHandlr.git
synced 2026-08-12 02:18:18 -07:00
Update README.md
This commit is contained in:
@@ -1,218 +1 @@
|
|||||||
<!-- Top -->
|
# This package has moved into https://github.com/FullScreenShenanigans/EightBittr. Bye! 👋
|
||||||
# TimeHandlr
|
|
||||||
[](https://greenkeeper.io/)
|
|
||||||
[](https://travis-ci.org/FullScreenShenanigans/TimeHandlr)
|
|
||||||
[](http://badge.fury.io/js/timehandlr)
|
|
||||||
|
|
||||||
Scheduling for dynamically repeating or synchronized events.
|
|
||||||
<!-- /Top -->
|
|
||||||
|
|
||||||
Like [Lolex](https://github.com/sinonjs/lolex), but for one-time and repeating events in production code.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
### Constructor
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
import { TimeHandlr } from "timehandlr";
|
|
||||||
|
|
||||||
const timeHandler = new TimeHandlr();
|
|
||||||
```
|
|
||||||
|
|
||||||
### `addEvent`
|
|
||||||
|
|
||||||
Parameters:
|
|
||||||
|
|
||||||
* `callback: Function`: Callback to run for the event.
|
|
||||||
* `timeDelay: number | Function` _(optional)_: How long from now to run the callback (by default, 1).
|
|
||||||
* `...args: any[]`: Any additional arguments to pass to the callback.
|
|
||||||
|
|
||||||
Returns: An event with the given callback and time information.
|
|
||||||
|
|
||||||
Adds an event to be called once.
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
const timeHandler = new TimeHandlr();
|
|
||||||
|
|
||||||
timeHandler.addEvent(
|
|
||||||
() => console.log("Hello world!"),
|
|
||||||
3);
|
|
||||||
|
|
||||||
timeHandler.advance();
|
|
||||||
timeHandler.advance();
|
|
||||||
|
|
||||||
// Hello world!
|
|
||||||
timeHandler.advance();
|
|
||||||
```
|
|
||||||
|
|
||||||
If `args` are provided, they're passed to the callback.
|
|
||||||
This is similar to `Function.call`.
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
const timeHandler = new TimeHandlr();
|
|
||||||
|
|
||||||
timeHandler.addEvent(
|
|
||||||
console.log.bind(console),
|
|
||||||
3,
|
|
||||||
"Hello world!");
|
|
||||||
|
|
||||||
timeHandler.advance();
|
|
||||||
timeHandler.advance();
|
|
||||||
|
|
||||||
// Hello world!
|
|
||||||
timeHandler.advance();
|
|
||||||
```
|
|
||||||
|
|
||||||
### `addEventInterval`
|
|
||||||
|
|
||||||
Parameters:
|
|
||||||
|
|
||||||
* `callback: Function`: Callback to run for the event.
|
|
||||||
* `timeDelay: number | Function` _(optional)_: How long from now to run the callback (by default, 1).
|
|
||||||
* `numRepeats: number | Function` _(optional)_: How many times to run the event (by default, 1).
|
|
||||||
* `...args: any[]`: Any additional arguments to pass to the callback.
|
|
||||||
|
|
||||||
Adds an event to be called multiple times.
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
const timeHandler = new TimeHandlr();
|
|
||||||
|
|
||||||
timeHandler.addEventInterval(
|
|
||||||
() => console.log("Hello world!"),
|
|
||||||
3,
|
|
||||||
2);
|
|
||||||
|
|
||||||
timeHandler.advance();
|
|
||||||
timeHandler.advance();
|
|
||||||
|
|
||||||
// Hello world!
|
|
||||||
timeHandler.advance();
|
|
||||||
|
|
||||||
timeHandler.advance();
|
|
||||||
timeHandler.advance();
|
|
||||||
|
|
||||||
// Hello world!
|
|
||||||
timeHandler.advance();
|
|
||||||
```
|
|
||||||
|
|
||||||
If `args` are provided, they're passed to the callback.
|
|
||||||
This is similar to `Function.call`.
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
const timeHandler = new TimeHandlr();
|
|
||||||
|
|
||||||
timeHandler.addEventInterval(
|
|
||||||
console.log.bind(console),
|
|
||||||
3,
|
|
||||||
"Hello world!");
|
|
||||||
|
|
||||||
timeHandler.advance();
|
|
||||||
timeHandler.advance();
|
|
||||||
|
|
||||||
// Hello world!
|
|
||||||
timeHandler.advance();
|
|
||||||
|
|
||||||
timeHandler.advance();
|
|
||||||
timeHandler.advance();
|
|
||||||
|
|
||||||
// Hello world!
|
|
||||||
timeHandler.advance();
|
|
||||||
```
|
|
||||||
|
|
||||||
### `addEventIntervalSynched`
|
|
||||||
|
|
||||||
Parameters:
|
|
||||||
|
|
||||||
* `callback: Function`: Callback to run for the event.
|
|
||||||
* `timeDelay: number | Function` _(optional)_: How long from now to run the callback (by default, 1).
|
|
||||||
* `numRepeats: number | Function` _(optional)_: How many times to run the event (by default, 1).
|
|
||||||
* `...args: any[]`: Any additional arguments to pass to the callback.
|
|
||||||
|
|
||||||
Adds an event interval, waiting to start until it's in sync with the time delay.
|
|
||||||
|
|
||||||
This is useful for starting animations of objects intended to be animated in sync,
|
|
||||||
like Goombas in Mario or flower scenery in Pokemon.
|
|
||||||
Otherwise identical to `addEventInterval`.
|
|
||||||
|
|
||||||
### `cancelEvent`
|
|
||||||
|
|
||||||
Parameters:
|
|
||||||
|
|
||||||
* `event: Object`: Event to cancel.
|
|
||||||
|
|
||||||
Cancels an event created by one of the `addEvent*` methods.
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
const timeHandler = new TimeHandlr();
|
|
||||||
|
|
||||||
const event = timeHandler.addEvent(
|
|
||||||
() => console.log("Hello world!"),
|
|
||||||
3);
|
|
||||||
|
|
||||||
timeHandler.advance();
|
|
||||||
timeHandler.advance();
|
|
||||||
|
|
||||||
timeHandler.cancelEvent(event);
|
|
||||||
|
|
||||||
timeHandler.advance();
|
|
||||||
```
|
|
||||||
|
|
||||||
### `cancelAllEvents`
|
|
||||||
|
|
||||||
Cancels all events.
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
const timeHandler = new TimeHandlr();
|
|
||||||
|
|
||||||
timeHandler.addEvent(
|
|
||||||
() => console.log("Hello world!"),
|
|
||||||
3);
|
|
||||||
|
|
||||||
timeHandler.advance();
|
|
||||||
timeHandler.advance();
|
|
||||||
|
|
||||||
timeHandler.cancelAllEvents();
|
|
||||||
|
|
||||||
timeHandler.advance();
|
|
||||||
```
|
|
||||||
|
|
||||||
<!-- Development -->
|
|
||||||
## Development
|
|
||||||
|
|
||||||
After [forking the repo from GitHub](https://help.github.com/articles/fork-a-repo/):
|
|
||||||
|
|
||||||
```
|
|
||||||
git clone https://github.com/<your-name-here>/TimeHandlr
|
|
||||||
cd TimeHandlr
|
|
||||||
npm install
|
|
||||||
npm run setup
|
|
||||||
npm run verify
|
|
||||||
```
|
|
||||||
|
|
||||||
* `npm run setup` creates a few auto-generated setup files locally.
|
|
||||||
* `npm run verify` builds, lints, and runs tests.
|
|
||||||
|
|
||||||
### Building
|
|
||||||
|
|
||||||
```shell
|
|
||||||
npm run watch
|
|
||||||
```
|
|
||||||
|
|
||||||
Source files are written under `src/` in TypeScript and compile in-place to JavaScript files.
|
|
||||||
`npm run watch` will directly run the TypeScript compiler on source files in watch mode.
|
|
||||||
Use it in the background while developing to keep the compiled files up-to-date.
|
|
||||||
|
|
||||||
#### Running Tests
|
|
||||||
|
|
||||||
```shell
|
|
||||||
npm run test
|
|
||||||
```
|
|
||||||
|
|
||||||
Tests are written in [Mocha](https://github.com/mochajs/mocha) and [Chai](https://github.com/chaijs/chai).
|
|
||||||
Their files are written using alongside source files under `src/` and named `*.test.ts?`.
|
|
||||||
Whenever you add, remove, or rename a `*.test.t*` file under `src/`, `watch` will re-run `npm run test:setup` to regenerate the list of static test files in `test/index.html`.
|
|
||||||
You can open that file in a browser to debug through the tests.
|
|
||||||
|
|
||||||
<!-- Maps -->
|
|
||||||
<!-- /Maps -->
|
|
||||||
<!-- /Development -->
|
|
||||||
|
|||||||
Reference in New Issue
Block a user