Oh sure. It takes the file and uses the tokenat expression to look at it a line at a time.
One event sees if the line starts with #recipe, if it does it uses the rest of that line as the name of a new recipe.
The other event handles either blank lines or lines that have a number followed by an ingredient name.
Left() gets the left side of some text
Mid() gets the middle
Trim() removes any leading and trailing spaces in the text.
Finally it keeps track of the uid of the last recipe created. That is just so we can pick it again when adding ingredients to it.