# src/string.js | tablefilter v0.4.16 API Document

# src/string.js

    import {remove as removeDiacritics} from 'diacritics';

    /**
     * String utilities
     */

    /**
     * Removes whitespace from both sides of passed string
     * @param  {String} text
     * @return {String}
     */
    export const trim = (text) => {
        if (text.trim) {
            return text.trim();
        }
        return text.replace(/^\s*|\s*$/g, '');
    }

    /**
     * Checks if passed string is empty
     * @param {String} text
     * @return {Boolean}
     */
    export const isEmpty = (text) => trim(text) === '';

    /**
     * Makes regex safe string by escaping special characters from passed string
     * @param {String} text
     * @return {String} escaped string
     */
    export const rgxEsc = (text) => {
        let chars = /[-\/\\^$*+?.()|[\]{}]/g;
        let escMatch = '\\$&';
        return String(text).replace(chars, escMatch);
    }

    /**
     * Returns passed string as lowercase if caseSensitive flag set false. By
     * default it returns the string with no casing changes.
     * @param {String} text
     * @return {String} string
     */
    export const matchCase = (text, caseSensitive = false) => {
        if (!caseSensitive) {
            return text.toLowerCase();
        }
        return text;
    }

    /**
     * Checks if passed data contains the searched term
     * @param  {String} term                Searched term
     * @param  {String} data                Data string
     * @param  {Boolean} exactMatch         Exact match
     * @param  {Boolean} caseSensitive      Case sensitive
     * @param  {Boolean} ignoreDiacritics   Ignore diacritics
     * @return {Boolean}
     */
    export const contains = (term, data, exactMatch = false, caseSensitive = false,
        ignoreDiacritics = false) => {
        // Improved by Cedric Wartel (cwl) automatic exact match for selects and
        // special characters are now filtered
        let regexp;
        let modifier = caseSensitive ? 'g' : 'gi';
        if (ignoreDiacritics) {
            term = removeDiacritics(term);
            data = removeDiacritics(data);
        }
        if (exactMatch) {
            regexp = new RegExp('(^\\s*)' + rgxEsc(term) + '(\\s*$)',
                modifier);
        } else {
            regexp = new RegExp(rgxEsc(term), modifier);
        }
        return regexp.test(data);
    }