Skip to content

Commit

Permalink
feat: ensure/number
Browse files Browse the repository at this point in the history
  • Loading branch information
medikoo committed Apr 3, 2019
1 parent 86ccf08 commit 134b5cb
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 7 deletions.
26 changes: 19 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,10 @@ Restricted string coercion. Returns string presentation for every value that fol
For all other values `null` is returned

```javascript
const stringCoerce = require("type/string/coerce");
const coerceToString = require("type/string/coerce");

stringCoerce(12); // "12"
stringCoerce(undefined); // null
coerceToString(12); // "12"
coerceToString(undefined); // null
```

##### `string/ensure`
Expand Down Expand Up @@ -82,11 +82,23 @@ Restricted number coercion. Returns number presentation for every value that fol
For all other values `null` is returned

```javascript
const numberCoerce = require("type/number/coerce");
const coerceToNumber = require("type/number/coerce");

numberCoerce("12"); // 12
numberCoerce({}); // null
numberCoerce(null); // null
coerceToNumber("12"); // 12
coerceToNumber({}); // null
coerceToNumber(null); // null
```

##### `number/ensure`

If given argument is a number coercible value (via [`number/coerce`](#numbercoerce)) returns result number.
Otherwise `TypeError` is thrown.

```javascript
const ensureNumber = require("type/number/ensure");

ensureNumber(12); // "12"
ensureNumber(null); // Thrown TypeError: null is not a number
```

#### Object
Expand Down
10 changes: 10 additions & 0 deletions number/ensure.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
"use strict";

var resolveException = require("../lib/resolve-exception")
, coerce = require("./coerce");

module.exports = function (value/*, options*/) {
var coerced = coerce(value);
if (coerced !== null) return coerced;
return resolveException(value, "%v is not a number", arguments[1]);
};
17 changes: 17 additions & 0 deletions test/number/ensure.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
"use strict";

var assert = require("chai").assert
, ensureNumber = require("../../number/ensure");

describe("number/ensure", function () {
it("Should return coerced value", function () { assert.equal(ensureNumber("12.23"), 12.23); });
it("Should crash on no value", function () {
try {
ensureNumber(null);
throw new Error("Unexpected");
} catch (error) {
assert.equal(error.name, "TypeError");
assert.equal(error.message, "null is not a number");
}
});
});

0 comments on commit 134b5cb

Please sign in to comment.