Miss any of our Open RFC calls?Watch the recordings here! »

cueing

0.3.1 • Public • Published

cueing ►►|

Cue, seek, or cycle items in JavaScript in node or the browser

npm

npm install cueing --save

Basic usage

var cueing = require('cueing')
var letters = cueing(['a', 'b', 'c'])
 
// cue the last index and then read from there
letters.cue(-1) // => letters
letters.seek(0) // => 'c'
letters.seek(1) // => 'a'
 
// manually move the needle
letters.needle(0)
 
// seek backwards
letters.seek(-1) // => 'c'
 
// seeking (or cueing) will loop around
letters.seek(-4) // => 'b'

API

cueing(pool=[])

  • Get a new cueing instance
  • pool: number|{length:number} length or array(-like) of values
  • cueing instance

cueing() instances are array-like and inherit array methods

var tracks = cueing(['1.mp3', '2.mp3', '3.mp3'])
tracks.join() // '1.mp3,2.mp3,3.mp3'
tracks instanceof cueing // true
tracks instanceof Array // true
Array.isArray(tracks) // false
 
cueing(3).every(function(v, i, range) {
  // Cueing objects are made dense for use with array iterators
  return undefined === v && i in range && range instanceof cueing
}) // true

cueing() objects coerce to their needle position

var cueing = require('cueing')
var list = cueing(['a', 'b', 'c'])
+list // 0
isFinite(list) // true
list.needle(2) // move the needle to a new index
2 == list // true
+list // 2
String(list) // '2'
list[list] // 'c'

cueing() methods

.needle(index?)

  • Manually move the needle to index
  • index: number|cueing destination index
  • this

.cue(offset=0)

  • Move the needle by offset
  • offset: number|cueing +/- integer to move the needle by
  • this

.seek(offset=0)

  • .cue the offset and get the value there
  • offset: number|cueing +/- integer to move the needle by
  • *

.store()

  • Store the current needle position for recalling later
  • this

.recall(index?)

  • Recall stored cue point(s)
  • index: number|cueing +/- index to read. 0 reads the oldest point. -1 reads the newest.
  • cueing instance at recalled state

.clear()

  • Clear stored cue points
  • this

.clone()

  • Clone (copy) a cueing instance at its current state to a new instance
  • cueing clone

Static methods

cueing.cue(pool, start=0, offset=0)

  • Get the pool index that is offset away from start
  • number
cueing.cue(['a', 'b', 'c'], -1) // => 2
cueing.cue(['a', 'b', 'c'], 1, -2) // => 2

cueing.seek(pool, start=0, offset=0)

  • Get the pool value that is offset away from start
  • *
cueing.seek(['a', 'b', 'c'], 1, -1) // => 'a'
cueing.seek(['a', 'b', 'c'], 0, 5) // => 'b'

cueing.store(array, point)

  • Push point onto array if different from last point
  • array reference
cueing.store([1, 5], 3) // => [1, 5, 3]
cueing.store([1, 5], 5) // => [1, 5]
cueing.store([1, 5], 1) // => [1, 5, 1]

Playground

Try cueing in the browser

Install

npm i cueing

DownloadsWeekly Downloads

1

Version

0.3.1

License

MIT

Last publish

Collaborators

  • avatar