data.result
v0.0.2
Published
values are either successful or failed
Readme
data.result
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 // falseEq
resultS.isEqual(resultS2) // false
resultS.isEqual(Result.Success(1)) // trueShow
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 } // -1Folds
// 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.resultUse
var Result = require('data.result');bower
Install
$ bower install --save data.resultLoad (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);