hashbind

Dual Binding Library For window.location.hash

Usage no npm install needed!

<script type="module">
  import hashbind from 'https://cdn.skypack.dev/hashbind';
</script>

README

Hash Bind

A dual-binding library for window.location.hash

Example

var Hash = require('hashbind');
var Result = require('rezult');

var hash = new Hash(window);

// Simple usage as a key-value store:
var someVal = hash.get('setting');
hash.set('setting', someVal);

// Better still, bind the value:
var bound = hash.bind('setting')
    .addListener(function onSettingChange(val) {
        console.log('the setting is', val);
    })
    ;

// Maybe you wanted an integer setting:
var bound = hash.bind('setting')
    .setParse(Result.lift(parseInt))
    .addListener(function onSettingChange(val) {
        console.log('the setting is', val);
    })
    ;

// Maybe you wanted a default:
var bound = hash.bind('setting')
    .setParse(Result.lift(parseInt))
    .setDefault('42')
    .addListener(function onSettingChange(val) {
        console.log('the setting is', val);
    })
    ;

// You can still set it by name:
hash.set('setting', 99);

// You can also set it through the bound reference:
bound.set(99);

// If you care to handle parse errors when settingy our values (rather than
have them thrown):
bound.set('XXX', function setDone(err, str, val) {
    // err is null or the parse error
    // str is the string that was parsed
    // val is the value returned by the parser
    console.error(err);
});

MIT Licensed