data.result

0.0.2 • Public • Published

data.result

Build Status NPM package Bower package License

Result[Value, Error] values are either successful or failed.

Description

javascript Result Type like antitypical/Result.

Usage

var Result = require('data.result');
 
function toInt(s) {
    var r = parseInt(s, 10);
    if (Number.isNaN(r)) {
        return Result.Failure('parsed error: ' + s);
    } else {
        return Result.Success(r);
    }
}
 
var resultS = toInt('1'); // Success(1)
var resultS2 = toInt('2'); // Success(2)
var resultF = toInt('abc'); // Failure(Error('parsed error: abc'))

Predicates

resultS.isSuccess // true
resultS.isFailure // false

Eq

resultS.isEqual(resultS2) // false
resultS.isEqual(Result.Success(1)) // true

Show

resultS.toString() // Result.Success(1)
resultF.toString() // Result.Faliure(Error: parsed error: abc)

Fuctor

resultS.map(function(n) { return n + 2; }) // Success(3)
resultF.map(function(n) { return n + 2; }) // Failure(Error('parsed error: abc'))

Chain

resultS.flatMap(function(n1) {
    return resultS2.map(function(n2) {
        return n1 + n2;
    })
}) // Success(3)
 
resultS.flatMap(function(n1) {
    return resultF.map(function(n2) {
        return n1 + n2;
    })
}) // Failure(Error('parsed error: abc'))

Extracting

// get()
resultS.get() // 1
resultF.get() // !!!TypeError: Can't extract the value of a Failure(a).!!!
 
// getOrElse(a)
resultS.getOrElse(-1) // 1
resultF.getOrElse(-1) // -1
 
// orElse(fn(a))
resultS.orElse(function(n) { return -1 } // Success(1)
resultF.orElse(function(error) { return -1 } // -1

Folds

// fold(fn(a), fn(Error))
resultS.fold(
    function(s) { return 'success' },
    function(e) { return 'error' }
) // 'success'
 
resultF.fold(
    function(s) { return 'success' },
    function(e) { return 'error' }
) // 'error'
 
// swap()
resultS.swap() // Failure(Error: 1))
resultF.swap() // Success('parsed error: abc')

Installation

npm

Install

$ npm install --save data.result

Use

var Result = require('data.result');

bower

Install

$ bower install --save data.result

Load (data.result function is exported)

<script type="text/javascript" src="./path/to/bower_components/data.result/build/result.js"></script>

Use

var success = Result.Success(123);

Author

to4iki

Licence

MIT

Readme

Keywords

Package Sidebar

Install

npm i data.result

Weekly Downloads

2

Version

0.0.2

License

MIT

Last publish

Collaborators

  • to4iki