National Public Mania

    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.

    Install

    npm i cond

    DownloadsWeekly Downloads

    2

    Version

    0.0.8

    License

    CC0

    Last publish

    Collaborators

    • zkat