code: function extractCodeBlocks(filepath) {
    return new Promise(function(fulfill, reject) {
      fs.readFile(filepath, 'utf8', function(err, text) {
        if (err) {
          console.log(err);
          reject(err);
        } else {
          var converter = new showdown.Converter();
          var html = converter.makeHtml(text);
          var $ = cheerio.load(html);
          var codeBlocks = $('pre code').map(function(index, elem) {
            var language = ($(elem).attr('class') || 'none language-none').split(' ')[0];
            return {
              filename: buildFilename(filepath, elem, $),
              content: $(elem).text(),
              language: language
            };
          });
          fulfill(codeBlocks.toArray());
        }
      });
    });
  }
docs: Returns a list of code blocks that look like: [{filename: '...', content: '...', language: '...'}, ...]