Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

breakable

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

breakable

Break out of functions, recursive or not, in a more composable way than by using exceptions explicitly. Non-local return.

  • 1.0.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
225K
increased by4.58%
Maintainers
1
Weekly downloads
 
Created
Source

breakable.js

Break out of functions, recursive or not, in a more composable way than by using exceptions explicitly. Non-local return.

Usage

You can use breakable to break out of simple loops like this example but note that it is often simpler to just use .some instead. Anyways, here's a minimal example.

var breakable = require("breakable");

breakable(function(brk) {
    arr.forEach(function(v) {
        if (...) {
           brk();
        }
    });
});

Pass a value to brk and it becomes the return-value of breakable.

breakable is useful when you want to break out of a deep recursion, passing a value, without riddling your code with exception ceremony.

Instead of:

var esprima = require("esprima").parse;
var traverse = require("ast-traverse");
var ast = esprima("f(!x, y)");

var val;
try {
    traverse(ast, {pre: function(node) {
        if (node.type === "UnaryExpression" && node.operator === "!") {
            val = node.argument;
            throw 0;
        }
    }});
} catch(e) {
    if (val === undefined) {
        throw e; // re-throw if it wasn't our exception
    }
}

console.dir(val); // { type: 'Identifier', name: 'x' }

you use breakable and do:

var breakable = require("breakable");
var esprima = require("esprima").parse;
var traverse = require("ast-traverse");
var ast = esprima("f(!x, y)");

var val = breakable(function(brk) {
    traverse(ast, {pre: function(node) {
        if (node.type === "UnaryExpression" && node.operator === "!") {
            brk(node.argument);
        }
    }});
});

console.dir(val); // { type: 'Identifier', name: 'x' }

Installation

Node

Install using npm

npm install breakable
var breakable = require("breakable");

Browser

Clone the repo and include it in a script tag

git clone https://github.com/olov/breakable.git
<script src="breakable/breakable.js"></script>

Keywords

FAQs

Package last updated on 06 May 2014

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc