// workflow step: enrich — auto-generate an excerpt (if missing) and a reading // time, and write them back onto the post. Runs in PARALLEL with `seo`. let b = ctx.request.body; let posts = docs::collection("posts"); let post = posts.get(b.post_id); let d = post.data; let body = if d.body_md == () { "" } else { d.body_md }; let words = if body == "" { 0 } else { body.split(" ").len() }; let reading_time = (words / 200) + 1; let excerpt = d.excerpt; if excerpt == () || excerpt == "" { let parts = body.split(" "); let n = if parts.len() < 24 { parts.len() } else { 24 }; let ex = ""; for i in 0..n { ex += parts[i] + " "; } ex.trim(); excerpt = ex + "…"; d.excerpt = excerpt; } d.reading_time = reading_time; posts.update(b.post_id, d); #{ excerpt: excerpt, reading_time: reading_time }