Acme-Chef
view release on metacpan or search on metacpan
lib/Acme/Chef.pm view on Meta::CPAN
Recipes will be metric, but may use traditional cooking measures such as
cups and tablespoons.
=back
=head1 LANGUAGE CONCEPTS
=head2 Ingredients
All recipes have ingredients! The ingredients hold individual data values.
All ingredients are numerical, though they can be interpreted as Unicode
for I/O purposes. Liquid ingredients will be output as Unicode characters,
while dry or unspecified ingredients will be output as numbers.
=head2 Mixing Bowls and Baking Dishes
Chef has access to an unlimited supply of mixing bowls and baking dishes.
These can contain ingredient values. The ingredients in a mixing bowl or
baking dish are ordered, like a stack of pancakes. New ingredients are
placed on top, and if values are removed they are removed from the top.
Note that if the value of an ingredient changes, the value in the mixing
bowl or baking dish does not. The values in the mixing bowls and baking
dishes also retain their dry or liquid designations.
Multiple mixing bowls and baking dishes are referred to by an ordinal
identifier - "the 2nd mixing bowl". If no identifier is used, the recipe
only has one of the relevant utensil. Ordinal identifiers must be digits
followed by "st", "nd", "rd" or "th", not words.
=head1 SYNTAX ELEMENTS
The following items appear in a Chef recipe. Some are optional. Items
must appear in the order shown below, with a blank line (two newlines)
between each item.
=head2 Recipe Title
The recipe title describes in a few words what the program does. For
example: "Hello World Souffle", or "Fibonacci Numbers with Caramel Sauce".
The recipe title is always the first line of a Chef recipe, and is
followed by a full stop.
recipe-title.
=head2 Comments
Comments are placed in a free-form paragraph after the recipe title.
Comments are optional.
=head2 Ingredient List
The next item in a Chef recipe is the ingredient list. This lists the
ingredients to be used by the program. The syntax is
Ingredients.
[initial-value] [[measure-type] measure] ingredient-name
[further ingredients]
Ingredients are listed one per line. The intial-value is a number.
I<New specification: The initial-value is now optional. Attempting to
use an ingredient without a defined value is a run-time error.>
The optional measure can be any of the following:
=over 2
=item *
C<g> | C<kg> | C<pinch[es]> : These always indicate dry measures.
=item *
C<ml> | C<l> | C<dash[es]> : These always indicate liquid measures.
=item *
C<cup[s]> | C<teaspoon[s]> | C<tablespoon[s]> : These indicate measures
which may be either dry or liquid.
=back
The optional measure-type may be any of the following:
=over 2
=item *
C<heaped> | C<level> : These indicate that the measure is dry.
=back
The ingredient-name may be anything reasonable, and may include space
characters. The ingredient list is optional. If present, it declares
ingredients with the given initial values and measures.
=head2 Cooking Time
Cooking time: time (hour[s] | minute[s]).
The cooking time statement is optional. The time is a number.
=head2 Oven Temperature
Pre-heat oven to temperature degrees Celcius [(gas mark mark)].
Some recipes require baking. If so, there will be an oven
temperature statement. This is optional. The temperature and mark are
numbers.
=head2 Method
Method.
method statements
The method contains the actual recipe instructions. These are written
in sentences. Line breaks are ignored in the method of a recipe. Valid
method instructions are:
=over 2
=item *
( run in 0.966 second using v1.01-cache-2.11-cpan-39bf76dae61 )