lib/utils.js

Summary

Maintainability
A
25 mins
Test Coverage
"use strict";

var util = require('util');

exports.is = {
  fun: util.isFunction,
  arr: util.isArray,
  obj: util.isObject,
  str: util.isString,
  bool: util.isBoolean,
  und: util.isUndefined,

  num: function(n) {
    return util.isNumber(n) && !isNaN(n);
  },

  date: function(d) {
    return util.isDate(d) && !isNaN(d);
  },

  yamb: function(o) {
    if (!util.isObject(o) || !o.constructor) {
      return false;
    }

    return o.constructor.name && o.constructor.name === 'Yamb';
  }
};

exports.clone = require('clone');

var stringify = exports.stringify = function(string) {
  return ('' + string).trim();
};

var whitespace = exports.whitespace = function(string) {
  var regex = /^[\s]*$/;
  return regex.test(stringify(string));
};

var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi;
var comments = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;

exports.striptags = function(string) {
  if (!string) {
    return '';
  }

  return string.replace(comments, '').replace(tags, '');
};

exports.empty = function(value) {
  if (!value) {
    return true;
  }

  if (util.isString(value) && whitespace(value)) {
    return true;
  }

  if (util.isObject(value)) {
    value = Object.keys(value);
  }

  return value.length === 0;
};

exports.compare = function(a1, a2) {
  if (!util.isArray(a1) || !util.isArray(a2)) {
    return false;
  }

  if (a1.length !== a2.length) {
    return false;
  }

  for (var i=0, length=a1.length; i<length; i++) {
    if (a1[i] !== a2[i]) {
      return false;
    }
  }

  return true;
};

exports.pad = function(num) {
  if (num < 10) {
    return '0' + num;
  } else {
    return num;
  }
};