0.0.2 • Published 9 years ago
data.result v0.0.2
data.result
ResultValue, 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);