jonschlinkert/gray-matter

Add support for async excerpt functions?

pdehaan opened this issue · 2 comments

I was working on a project that needed to call an async method when creating excerpts but I couldn't get the excerpt function to work w/ async functions. Not sure if I'm doing something wrong or if promises just aren't supported and this is a feature request.

Why should gray-matter be responsible for this? This is indeed not supported and would be a breaking change as it will forcethe main matter parse function to become async.
Can't you do sth like below?

async function fetchExcerptForFile(file) { /* do async stuff & return promise with excerpt */ }

// assuming files is an arr of { content: '...', filepath: '...' } or such
const parsedFiles = await Promise.all(files.map(async file => {
  const excerpt = await fetchExcerptForFile(file)
  return matter(file.content, { excerpt: () => excerpt })
}))

@webketje Yeah, sorry. We are using Eleventy which uses gray-matter for front-matter parsing and I think we were trying to generate excerpts and wanting to re-parse them using LiquidJS or something and an async parser for excerpt() would have helped out. But we found an alternate approach using shortcodes and filters.