code: function setPath (obj, itemPath, value) {
    if (!isObj(obj) || typeof (itemPath) !== 'string') {
      return
    }
  
    const pathArr = itemPath.split('.')
  
    function noop (obj, i) {
      const item = pathArr[i]
  
      /**
       * Finally set the value when array is done
       */
      if (i + 1 === pathArr.length) {
        obj[item] = value
        return
      }
  
      if (!isNaN(parseInt(pathArr[i + 1])) && !Array.isArray(obj[item])) {
        obj[item] = []
      } else if (!isObj(obj[item])) {
        obj[item] = {}
      }
  
      /**
       * Carry on recursively.
       */
      return noop(obj[item], i + 1)
    }
  
    /**
     * Start recursion
     */
    return noop(obj, 0)
  }
docs: Set nested values on a object, using `path` as
  the (dot) seperated string.
  
  @method setPath
  
  @param  {Object} obj
  @param  {String} itemPath
  @param  {Mixed}  value
  
  @return {void}