code: function objectGet (object, expression) {
    if (!(object && expression)) throw new Error('both object and expression args are required')
    return expression.trim().split('.').reduce(function (prev, curr) {
      var arr = curr.match(/(.*?)\[(.*?)\]/)
      if (arr) {
        return prev && prev[arr[1]][arr[2]]
      } else {
        return prev && prev[curr]
      }
    }, object)
  }
docs: Returns the value at the given property.
  
  @param {object} - the input object
  @param {string} - the property accessor expression.
  @returns {*}
  @alias module:object-get
  @example
  > objectGet({ animal: 'cow' }, 'animal')
  'cow'
  
  > objectGet({ animal: { mood: 'lazy' } }, 'animal')
  { mood: 'lazy' }
  
  > objectGet({ animal: { mood: 'lazy' } }, 'animal.mood')
  'lazy'
  
  > objectGet({ animal: { mood: 'lazy' } }, 'animal.email')
  undefined