in lib/recipes-data/src/lib/extract-recipes.ts [28:54]
export async function extractAllRecipesFromArticle(
content: Content,
): Promise<RecipeReferenceWithoutChecksum[]> {
if (content.type == ContentType.ARTICLE && content.blocks) {
const sponsorship = content.tags.flatMap((t) => t.activeSponsorships ?? []);
const articleBlocks: Blocks = content.blocks;
const getAllMainBlockRecipesIfPresent = extractRecipeData(
content,
articleBlocks.main as Block,
sponsorship,
);
const bodyBlocks = articleBlocks.body as Block[];
const getAllBodyBlocksRecipesIfPresent = bodyBlocks.flatMap((bodyBlock) =>
extractRecipeData(content, bodyBlock, sponsorship),
);
const recipes = getAllMainBlockRecipesIfPresent.concat(
getAllBodyBlocksRecipesIfPresent,
);
const failureCount = recipes.filter((recp) => !recp).length;
await registerMetric('FailedRecipes', failureCount);
const successfulCount = recipes.length - failureCount;
await registerMetric('SuccessfulRecipes', successfulCount);
return recipes.filter((recp) => !!recp) as RecipeReferenceWithoutChecksum[];
} else {
return Array<RecipeReferenceWithoutChecksum>();
}
}