code: function matter(input, options) {
    if (input === '') {
      return { data: {}, content: input, excerpt: '', orig: input };
    }
  
    let file = toFile(input);
    const cached = matter.cache[file.content];
  
    if (!options) {
      if (cached) {
        file = Object.assign({}, cached);
        file.orig = cached.orig;
        return file;
      }
  
      // only cache if there are no options passed. if we cache when options
      // are passed, we would need to also cache options values, which would
      // negate any performance benefits of caching
      matter.cache[file.content] = file;
    }
  
    return parseMatter(file, options);
  }
docs: Takes a string or object with `content` property, extracts
  and parses front-matter from the string, then returns an object
  with `data`, `content` and other [useful properties](#returned-object).
  
  ```js
  const matter = require('gray-matter');
  console.log(matter('---\ntitle: Home\n---\nOther stuff'));
  //=> { data: { title: 'Home'}, content: 'Other stuff' }
  ```
  @param {Object|String} `input` String, or object with `content` string
  @param {Object} `options`
  @return {Object}
  @api public