From b3903e8ec516f6e7c857f9768f3a817c2672ff4f Mon Sep 17 00:00:00 2001 From: Melvin Philips Date: Tue, 3 Oct 2017 13:25:58 -0700 Subject: [PATCH] Add is.domElement() --- index.js | 2 ++ package.json | 1 + readme.md | 4 ++++ test.js | 15 +++++++++++++++ 4 files changed, 22 insertions(+) diff --git a/index.js b/index.js index 045577f..ada04dd 100644 --- a/index.js +++ b/index.js @@ -161,4 +161,6 @@ is.inRange = (x, range) => { throw new TypeError(`Invalid range: ${util.inspect(range)}`); }; +is.domElement = x => is.object(x) && x.nodeType === 1; + module.exports = is; diff --git a/package.json b/package.json index 9174f2e..fbf5a55 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,7 @@ ], "devDependencies": { "ava": "*", + "jsdom": "^11.3.0", "xo": "*" } } diff --git a/readme.md b/readme.md index be284c4..dfd2f83 100644 --- a/readme.md +++ b/readme.md @@ -145,6 +145,10 @@ Check if `value` (number) is in the range of `0` to `upperBound`. is.inRange(3, 10); ``` +##### .domElement(value) + +Returns `true` if `value` is a domElement. + ## FAQ diff --git a/test.js b/test.js index b4b50e6..82238a8 100644 --- a/test.js +++ b/test.js @@ -1,5 +1,6 @@ import util from 'util'; import test from 'ava'; +import {JSDOM} from 'jsdom'; import m from '.'; const isNode8orHigher = Number(process.versions.node.split('.')[0]) >= 8; @@ -358,3 +359,17 @@ test('is.inRange', t => { m.inRange(0, [1, 2, 3]); }); }); + +test('is.domElement', t => { + const {document} = (new JSDOM(`...`)).window; + t.true(m.domElement(document.createElement('div'))); + t.false(m.domElement('hello world')); + t.false(m.domElement([])); + t.false(m.domElement(new Map())); + t.false(m.domElement(null)); + t.false(m.domElement(undefined)); + t.false(m.domElement(0)); + t.false(m.domElement(NaN)); + t.false(m.domElement(Infinity)); + t.false(m.domElement({})); +});