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

    Install

    npm i is-string-and-not-blank

    DownloadsWeekly Downloads

    39,789

    Version

    0.0.2

    License

    MIT

    Unpacked Size

    13.5 kB

    Total Files

    9

    Last publish

    Collaborators

    • niftylettuce