UNPKG

parse-js

Version:

Utility library for object structure conversion.

45 lines (35 loc) 1.44 kB
'use strict'; var isArray = require('lodash/isArray'); var parseJSON = require('../lib/json').parse; var MODE_ANY = 'ANY'; var MODE_JSON = 'JSON'; var MODE_SEPARATOR = 'SEPARATOR'; function ArrayTransformer() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; if (!(this instanceof ArrayTransformer)) { return this.transform(new ArrayTransformer(options)); } this._mode = options.mode || MODE_ANY; this._separator = options.separator || ','; } ArrayTransformer.ANY = MODE_ANY; ArrayTransformer.JSON = MODE_JSON; ArrayTransformer.SEPARATOR = MODE_SEPARATOR; ArrayTransformer.prototype.parse = function (value) { if (!value && typeof value !== 'number') return []; if (isArray(value)) return value; var result = value; if (typeof value !== 'string') value = value + ''; if (this._mode === MODE_JSON || this._mode === MODE_ANY) result = parseJSON(value); if (!isArray(result)) result = null; if (this._mode === MODE_SEPARATOR || this._mode === MODE_ANY && !result) result = value.split(this._separator); if (!isArray(result)) result = []; return result; }; ArrayTransformer.prototype.reverse = function (value) { if (!isArray(value)) return value; if (this._mode === MODE_JSON || this._mode === MODE_ANY) return JSON.stringify(value); if (this._mode === MODE_SEPARATOR) return value.join(this._separator); return value; }; module.exports = ArrayTransformer;