cond

0.0.8 • Public • Published

CondJS

cond is hosted at Github. mona is a public domain work, dedicated using CC0 1.0. Feel free to do whatever you want with it.

Quickstart

Install

$ npm install cond or $ bower install cond

Example

Execute the following in a browser session, with developer tools open, and follow the instructions:

 
var availableFlavors = ["chocolate", "vanilla", "mint chocolate chip"];
function getIceCream(flavor) {
    if (availableFlavors.indexOf(flavor) !== -1) {
        return flavor + " ice cream ゲットー!";
    } else {
        // Just like throw new Error("something"), but we provide a way
        // the user can recover from it.
        return cond.error("Sorry, that flavor is not available", [
            "different-flavor", "Try a different flavor", getIceCream
        ], [
            "add-flavor", "Add this flavor to available ones and retry", function() {
                availableFlavors.push(flavor);
                return getIceCream(flavor);
            }
        ]);
    }
}
 
console.log(getIceCream("coffee"));
console.log("I really like this flavor!");
 
// In the console, do:
 
// > showRecoveries();
// > recover(0, "chocolate");
 
// You can also access recoveries programmatically:
console.log(cond.handlerBind(function() {
    return getIceCream("bubblegum");
}, [Error, function(e) { return cond.recover("add-flavor"); }]));

Introduction

cond is a JavaScript implementation of Common Lisp's condition system, a system for handling errors and other conditions of interest that handles signals at the call site, before the stack is unwound -- allowing you to repair or alter what happens at the callsite, and continuing executing as if nothing had been signaled/thrown.

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 0.0.8
    1
    • latest

Version History

  • Version
    Downloads (Last 7 Days)
    • Published
  • 0.0.8
    1

Package Sidebar

Install

npm i cond

Weekly Downloads

1

Version

0.0.8

License

CC0

Last publish

Collaborators

  • zkat