/* eslint-disable */
const REGEXP = getRegExp('{|}|"', 'g');

function keys(obj) {
  return JSON.stringify(obj)
    .replace(REGEXP, '')
    .split(',')
    .map(function (item) {
      return item.split(':')[0];
    });
}

function isArray(array) {
  return array && array.constructor === 'Array';
}

function kebabCase(word) {
  const newWord = word
    .replace(getRegExp('[A-Z]', 'g'), function (i) {
      return '-' + i;
    })
    .toLowerCase();

  return newWord;
}

function style(styles) {
  if (isArray(styles)) {
    return styles
      .filter(function (item) {
        return item != null && item !== '';
      })
      .map(function (item) {
        return style(item);
      })
      .join(';');
  }

  if ('Object' === styles.constructor) {
    return keys(styles)
      .filter(function (key) {
        return styles[key] != null && styles[key] !== '';
      })
      .map(function (key) {
        return [kebabCase(key), [styles[key]]].join(':');
      })
      .join(';');
  }

  return styles;
}

export default {
  style,
  keys,
  isArray
};
