• bouzuya/fake-history-fns をつくった

    bouzuya/fake-history-fns をつくった。

    fake-history-fns は History interface を備えた fake object である bouzuya/fake-history (2017-04-01) の class を使わない版。特徴というか利点は次のとおり。

    • 関数単位での import ができる
    • JSON.stringify / JSON.parse で serialize / deserialize できる
    • (個人的に) OOP は難しいので FP (?)

    README にある例。

    import * as assert from 'assert';
    import {
      back,
      create,
      current,
      currentState,
      length,
      next,
      nextState,
      previous,
      previousState,
      pushState,
      state
    } from 'fake-history-fns';
    
    const p0 = create();
    const p1 = pushState(p0, 1, '1', '/1');
    const p2 = pushState(p1, 2, '2', '/2');
    const p3 = pushState(p2, 3, '3', '/3');
    const b1 = back(p0);
    
    assert(length(b1) === 3);
    assert(state(b1) === 2);
    
    assert(current(b1) === '/2');
    assert(currentState(b1) === 2);
    assert(next(b1) === '/3');
    assert(nextState(b1) === 3);
    assert(previous(b1) === '/1');
    assert(previousState(b1) === 1);
    

    bouzuya/mr-jums には fake-history でなく fake-history-fns を採用した。実際には関数単位での import なんてしないし、 History を永続化する意味はまったくないので、趣味の問題だ。

bouzuya/fake-history-fns をつくった

bouzuya/fake-history-fns をつくった。

fake-history-fns は History interface を備えた fake object である bouzuya/fake-history (2017-04-01) の class を使わない版。特徴というか利点は次のとおり。

  • 関数単位での import ができる
  • JSON.stringify / JSON.parse で serialize / deserialize できる
  • (個人的に) OOP は難しいので FP (?)

README にある例。

import * as assert from 'assert';
import {
  back,
  create,
  current,
  currentState,
  length,
  next,
  nextState,
  previous,
  previousState,
  pushState,
  state
} from 'fake-history-fns';

const p0 = create();
const p1 = pushState(p0, 1, '1', '/1');
const p2 = pushState(p1, 2, '2', '/2');
const p3 = pushState(p2, 3, '3', '/3');
const b1 = back(p0);

assert(length(b1) === 3);
assert(state(b1) === 2);

assert(current(b1) === '/2');
assert(currentState(b1) === 2);
assert(next(b1) === '/3');
assert(nextState(b1) === 3);
assert(previous(b1) === '/1');
assert(previousState(b1) === 1);

bouzuya/mr-jums には fake-history でなく fake-history-fns を採用した。実際には関数単位での import なんてしないし、 History を永続化する意味はまったくないので、趣味の問題だ。