UNPKG

grunt-yabs

Version:

Collection of tools for grunt release workflows.

67 lines (59 loc) 1.53 kB
/* * applause * * Copyright (c) 2015 outaTiME * Licensed under the MIT license. * https://github.com/outaTiME/applause/blob/master/LICENSE-MIT */ // dependencies var _ = require('lodash'); // private var flatten = function (json, delimiter) { var result = []; var recurse = function (cur, prop) { for (var key in cur) { if (cur.hasOwnProperty(key)) { var item = cur[key]; var match = prop ? prop + delimiter + key : key; result.push({ match: match, replacement: item, expression: false }); // deep scan if (typeof item === 'object') { recurse(item, prop ? prop + delimiter + key : key); } } } }; recurse(json); return result; }; // expose module.exports = { name: 'json', priority: 20, match: function (pattern, opts) { var json = pattern.json; var match = typeof json !== 'undefined'; return match; }, transform: function (pattern, opts, done) { var delimiter = opts.delimiter; var json = pattern.json; // function support if (_.isFunction(json)) { json.call(this, function (result) { // override json function with value json = result; }); } if (_.isPlainObject(json)) { // replace json with flatten data done(flatten(json, delimiter)); } else { done(new Error('Unsupported type for json (plain object expected).')); } } };