Ejemplo n.º 1
0
const repeat = fp.curry((b, a) => fp.repeat(a, b));

const wrapStr = (str, wrap) => wrap + str + wrap;

const isDefined = fp.negate(fp.isUndefined)
  , getOpeningBrace = () => braceColor('{')
  , getClosingBrace = () => braceColor('}')
  , getEmptyObject = () => braceColor('{}')
  , getOpeningBracket = () => bracketColor('[')
  , getClosingBracket = () => bracketColor(']')
  , getEmptyArray = () => bracketColor('[]')
  , getIndent = repeat(indent)
  , isLadenArray = fp.allPass(fp.isArray, fp.size)
  , isLadenPlainObject = fp.allPass(fp.isPlainObject, fp.size)
  , reduceWithKey = capIteratee(3, fp.reduce.convert({ cap: false }))
  , keyToStr = key => {
    if (!stripKeyQuotes) key = wrapStr(key, '"');
    return isDefined(key)
      ? key + ': '
      : '';
  }
  , valToStr = (val, level, extra) => {
    val = wrapText('' + val, (level * indent.length) + extra + 1);
    if (fp.isString(val)) {
      val = wrapStr(val, '"');
      extra += 1;
    }
    // if (fp.includes('\n', val)) val = val.replace(new RegExp(nl, 'g'), nl + getIndent(level) + fp.repeat(extra, ' '));
    return valColor(val);
  };
Ejemplo n.º 2
0
import {
  isEmpty, isUndefined, map, reduce, reject, set, trim,
} from 'lodash/fp'

const transform = reduce.convert({ cap: false })

// Build up a new so fresh, so clean object.
export const reducer = clean => (result, value, key) => {
  const cleanValue = clean(value, clean)
  return isUndefined(cleanValue) ? result : set([key], cleanValue, result)
}

// Assume we have a fairly normal data object here?
export function cleanObject(obj, clean) {
  const item = transform(reducer(clean), undefined, obj)
  return isEmpty(item) ? undefined : item
}

export function cleanString(string) {
  return trim(string) || undefined
}
export function cleanArray(items, clean) {
  const cleanItems = map(item => clean(item, clean), items)
  const remainingItems = reject(isUndefined, cleanItems)
  return isEmpty(remainingItems) ? undefined : remainingItems
}

/**
 * [isWorthless description]
 * @param {any} value
 * @return {bool} Tells you if value is empty.