Skip to content

Commit

Permalink
feat: time-value/ensure
Browse files Browse the repository at this point in the history
  • Loading branch information
medikoo committed Apr 4, 2019
1 parent 27fd109 commit 1f6a8ea
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 0 deletions.
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -386,6 +386,18 @@ coerceToTimeValue(Number.MAX_SAFE_INTEGER); // false
coerceToTimeValue("foo"); // false
```

##### `time-value/ensure`

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

```javascript
const ensureTimeValue = require("type/time-value/ensure");

ensureTimeValue(12.93); // "12"
ensureTimeValue(Number.MAX_SAFE_INTEGER); // Thrown TypeError: null is not a natural number
```

---

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

var assert = require("chai").assert
, ensureTimeValue = require("../../time-value/ensure");

describe("time-value/ensure", function () {
it("Should return coerced value", function () { assert.equal(ensureTimeValue("12.23"), 12); });
it("Should crash on no value", function () {
try {
ensureTimeValue("foo");
throw new Error("Unexpected");
} catch (error) {
assert.equal(error.name, "TypeError");
assert.equal(error.message, "foo is not a time value");
}
});
});
10 changes: 10 additions & 0 deletions time-value/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 time value", arguments[1]);
};

0 comments on commit 1f6a8ea

Please sign in to comment.