is-string-and-not-blank

0.0.2 • Public • Published

is-string-and-not-blank

build status code coverage code style styled with prettier made with lass license npm downloads

3x as fast as is-whitespace and whitespace-regex thanks to is-string-blank. This package is a simple function that accepts an argument and returns true if it is a string AND it is not blank. Supports Node and Browser environments.

Table of Contents

Install

Node

npm:

npm install is-string-and-not-blank

yarn:

yarn add is-string-and-not-blank

Browser

See Browser usage below for more information.

Usage

Node

const isSANB = require('is-string-and-not-blank');
 
// returns false because it's a blank string
console.log(isSANB('    ')); // false
 
// returns true because it's a string and is not blank
console.log(isSANB('foo')); // true
 
// returns false because it's not a string
console.log(isSANB([])); // false
 
// returns false because it's not a string
console.log(isSANB([ 'test', 'test', 'test'])); // false
 
// returns true because it's a string and it is not blank
console.log(isSANB(' foo ')); // true

Browser

VanillaJS

The browser-ready bundle is only 566 bytes (minified and gzipped).

<script src="https://unpkg.com/is-string-and-not-blank"></script>
<script type="text/javascript">
  (function() {
    // returns false because it's a blank string
    console.log(isSANB('    ')); // false
 
    // returns true because it's a string and is not blank
    console.log(isSANB('foo')); // true
 
    // returns false because it's not a string
    console.log(isSANB([])); // false
 
    // returns false because it's not a string
    console.log(isSANB([ 'test', 'test', 'test'])); // false
 
    // returns true because it's a string and it is not blank
    console.log(isSANB(' foo ')); // true
  });
</script> 

Bundler

If you're using something like browserify, webpack, or rollup, then install the package as you would with Node above.

Background

I made this after running into a bug with Firefox Klar/Focus, specifically related to underscore.string exposing s as the global, and that WebView overriding the global variable s. See mozilla-mobile/focus-android#4295, epeli/underscore.string#523, and epeli/underscore.string#415.

Also, using underscore.string just for its s.isBlank function is not preferable, and is-whitespace, and all other solutions did not save me the stress of having to type out if (typeof foo === 'string' && !isBlank(foo)).

This is a simple package that returns true if and only if the argument passed is a String and it is not blank, otherwise it returns false. No more false positives for arguments that are Arrays or other types (which for some reason other authors did not consider...?).

Other packages out there solve this problem similarly, however they do not return the same conditional test:

  • is-whitespace - you would need to further supplement this via if (typeof str === 'string' && !isWhitespace(str))
  • is-string-blank - same as is-whitespace above
  • is-blank - same as is-whitespace and is-string-blank above

Benchmark

See the test folder for a benchmark check integrated with the tests.

ℹ whitespace-regex  x 44,939,232 ops/sec ±2.44% (85 runs sampled)
ℹ is-string-and-not-blank x 145,034,505 ops/sec ±2.33% (86 runs sampled)

Contributors

Name Website
Nick Baugh http://niftylettuce.com/

License

MIT © Nick Baugh

Package Sidebar

Install

npm i is-string-and-not-blank

Weekly Downloads

120,735

Version

0.0.2

License

MIT

Unpacked Size

13.5 kB

Total Files

9

Last publish

Collaborators

  • niftylettuce
  • titanism