http://www.perlmonks.org?node_id=862340

Text menus are, I guess, the stone that I'm doomed to roll uphill for the rest of my life. It seems like I've done them again and again over the years, in a variety of languages - because users, when faced with a CLI, seem to find comfort in menus rather than facing the terror of *actually typing stuff*. :) Or maybe I'm just being a touch cynical. Whatever. In any case, I did this one up in Perl - a friend wanted an easy way to organize her recipes - and it was much more pleasant and much easier than any one of my previous attempts. In fact, I was able to plug in a few nice features: e.g., you can specify a search term right from the command line, and the only categories and subcategories in the menu will be ones containing that term. The output is also nicely framed and adjusts itself to the terminal width.

In addition, it seems that the structure is flexible enough that I'll be able to use it for... well, pretty much any hierarchical menu from now on; all you have to do is build an HOH for a two-level menu, HOHOH for three, and so on. Thanks, Perl! :)

As always, I'd be grateful for comments and suggestions. The program itself is well under a hundred lines long, but I've also included a good chunk of her recipe file so you can see the layout.

#!/usr/bin/perl -w # Created by Ben Okopnik on Sun Sep 26 20:12:04 EDT 2010 use strict; die "Syntax: ", $0 =~ /([^\/]+)$/, " [search_string]\n" if @ARGV && $ARGV[0] =~ /^(:?-h|--help)$/; # Test search string, if any, for validity and compile - or set to def +ault my $re = @ARGV ? qr/$ARGV[0]/oi : "."; # Get max display width; either get it via 'resize' for xterms or defa +ult to 80. my ($max_width) = qx#/usr/bin/resize# =~ /(\d+)/; $max_width ||= 80; # Get the 'clear screen' control code for the current terminal my $clear = qx{/usr/bin/clear}; ############################# Collect the data ####################### +####### my ($category, $subcat, %all); while (<DATA>){ ${$1 eq '=' ? \$category : \$subcat} = $2 and next if /^([=-])([^- +].*)/; next unless defined $category && defined $subcat; $all{$category}{$subcat} .= $_ if $category =~ /$re/ || $subcat =~ + /$re/; } die "No matching categories or subcategories found.\n" unless %all; ############################### Main block ########################### +####### my ($cat, $scat); { # Display all categories $cat = display(\%all); redo if $cat eq 'redo'; # Display all subcategories in the chosen category $scat = display($all{$cat}); redo if $scat eq 'redo'; # Display chosen item, paging it if necessary print $clear; open Less, "|/bin/less -FX" or die "less: $!\n"; print Less "$cat - $scat\n$all{$cat}{$scat}\n"; close Less; print "-" x $max_width, "\nPress 'Enter' to continue"; redo if <STDIN>; } ############################## Workhorse sub ######################### +####### sub display { my ($ref, $count, %list) = @_; # reverse-sort the lengths of all the item names, count them... my $num_items = my @lengths = sort {$b<=>$a} map {length($_)} keys + %$ref; # ...and grab the first number in the list to get the display widt +h. my $max_len = $lengths[0]; die "Your display is too narrow for these items.\n" if $max_len + 7 > $max_width; # How many digits will we need for the index? my $count_width = $num_items =~ tr/0-9//; # '5' covers the formatting bits (separator, parens, three spaces) my $span_width = $max_len + $count_width + 5; # Max number of items that will fit in the display width *or* # the total number of items if it's less than that. my $items_per_line = int($max_width/$span_width) < $num_items ? int($max_width/$span_width) : $num_items; # Figure out total width for printing; '-1' adjusts for box corner +s my $width = $items_per_line * ($span_width) - 1; # 'redo' trigger $list{0} = 'redo'; print $clear . "." . "-" x $width . ".\n"; for my $item (sort keys %$ref){ # Create a number-to-entry lookup table $list{++$count} = $item; # Print formatted box body printf "| %${count_width}s) %-${max_len}s ", $count, $item; print "|\n" unless $count % $items_per_line; } # If we don't have enough items to fill the last line, pad with em +pty cells if ($count % $items_per_line){ my $pad = "|" . " " x ($span_width - 1); print $pad x ($items_per_line - $count % $items_per_line); print "|\n"; } print "'" . "-" x $width . "'\n"; # Get the answer and validate it { print "Item number (1-$count, 0 to restart, 'q' to quit)? "; chomp(my $answer = <STDIN>); exit if $answer =~ /^q/i; redo unless $answer =~ /^\d+$/ && $answer >= 0 && $answer <= $ +count; return $list{$answer}; } } __END__ =Breakfast -Tofu Scramble No, it doesn't actually taste like eggs! 1 pound firm tofu, mashed 1/4 tsp tumeric 1 tsp onion powder 1/2 tsp salt 1 1/2 cup chopped mixed veggies (I've had success with garlic, mushrooms, spinach and carrots) Place tofu in a lightly oiled pan and cook over medium heat for 3 minu +tes. Add the remaining ingredients, stir, and cook for 5 to 8 minutes, until th +e vegetables are cooked and the tofu is heated through. -Eggs Benedict This is a most delicious brunch! If you have as hard of a time finding + vegan english muffins as I did, I'll give you a tip: Wonder Bread english mu +ffins are, in fact, vegan. :-) 1 lb firm tofu 1/4 cup apple cider vinegar 1/4 tsp salt 1/4 cup olive oil 2 english muffins 4 slices of veggie bacon sliced tomato Sauce: 1/2 cup nutritional yeast 2 tbsp flour 1/2 tsp salt 1 cup water 1 tbsp oil 1 tsp Braggs or soy sauce 1 tsp dijon mustard Preheat oven to 450. Drain tofu and cut into 8 slices. In a small bowl +, whisk together the vinegar, oil and salt. Arrange the tofu in a 6 X 9 baking + dish and pour the oil and vinegar mixture over top. Marinate for 15-30 minutes. + Make sure to turn the tofu over occasionally so each side gets marinated. Bake f +or 20 minutes or until crispy brown... you might want to dump out the excess + liquid for the last few minutes of baking if it's not getting very brown for +you. To prepare the sauce, whisk together the yeast, flour, and salt. Add the +water, oil and Braggs and stir over medium heat until the sauce thickens. Stir in + the mustard and simmer over low heat until ready to serve. Toast the muffi +ns. On each slice of muffin, place 1 piece of bacon, 2 tofu pieces, tomato sl +ice and cover with the benny sauce. -Banana Pancakes These damn things come out perfect every time! 1 cup flour 2 tsp baking powder 1 banana, mashed 1 1/4 cups soy milk 1 tbsp sugar sliced banana for garnish Mix the flour and baking powder together in a large bowl. IN a small b +owl, mash the banana with a fork and add 1/4 cup of the soy milk. Mix until ther +e are no lumps.Stir the banana mixture into the flour mixture. Portion out abou +t 3/4 cup of batter onto a hot, non-stick pan or oiled frying pan and cover with + a lid. Let it sit on medium heat until the center starts to bubble and become + sturdy. Flip pancake and cook until golden brown. Serve topped with sliced banana and maple syrup or brown rice syrup. -French Toast I'd never made french toast before... what on earth was I waiting for? +?? Loaf of Italian or French bread (a baguette), preferably stale 1/2 cup soy creamer 1/2 rice or soy milk 2 tbsp cornstarch 1/4 cup chickpea flour vegetable or canola oil French toast fixins: sliced bananas, strawberries, maple syrup, etc. Slice the bread into 1 inch rounds. Mix together the creamer, milk and cornstarch in a wide shallow bowl. Stir until the starch dissolves. Ad +d the flour and mix until mostly absorbed, but some lumps are ok. Heat a nonstick skillet over medium high heat, and add a tbsp or 2 of +oil to coat the bottom. Soak the bread slices and add to the skillet. Cook on each side for 2 +or 3 minutes, until golden brown with dark brown flecks. =Sandwiches -Sloppy Janes Takes you back to those pre-adolescent days! 1/2 pound tempeh 1 chopped onion 1 chopped green pepper 2 cloves garlic 2 cups Marinara Madness or other tomato sauce 1 or 2 tsp chili powder 1/2 tsp salt buns Steam the tempeh for 20 minutes and cut into 1/4 inch cubes Simmer the + onion, green pepper and garlic in 1/4 cup water until the vegetables are soft +. Stir in the tempeh, sauce, chili powder, and salt and simmer until heated thro +ugh. -Mushroom Sandwiches The special sauce is sooooooooo good!!! 2 tsp balsamic vinegar 1 large clove of garlic (or if you LOVE it like me, use *4* cloves) salt and pepper, to taste 4 tbls olive oil 2 large portabello mushrooms Random veggies that you like (like an onion or tomato) optional loaf of very nice bread Put vinegar, garlic, salt, pepper and olive oil in a small jar and sha +ke well. Set aside Slice the mushrooms and veggies and brush with oil. Bake at +350 for 15 minutes (or until they are done), flipping them once while baking. Spr +ead the special sauce on the very nice bread and enjoy! -Corn Dogs Never again pick up the box of Morningstar Farms corndogs, and get sad + when you realize that they aren't vegan! 6 Smart Dogs 6 skewers 1/2 cup yellow corn meal 1/2 cup flour 1 tsp dry mustard 1/2 tsp salt egg replacer = 1 egg 1 tbsp sugar 1 tsp baking powder 1/2 cup soy milk 1 tbsp melted shortening Combine the cornmeal, flour, sugar, mustard, baking powder and salt. M +ix well. Add the soy milk, egg replacer, and shortening and mix until very smoo +th. Pour the misture into a tall glass. Put the Smart Dogs on the sticks and d +ip them in the cornmeal batter to coat them evenly. Deep fry in oil heated to 35 +0 degrees until golden brown, about 2 miinutes. Drain on paper towels. -Chicken and Sun-Dried Tomato Sandwiches with Basil Olive Pesto Oooooh, this makes such a good sandwich for a special lunch! Sandwiches: 3 ounces dried tomatoes (about 3/4 cup), not packed in oil a long loaf (about 20 inches) French or Italian bread OR individual lo +aves of panini about 1/2 cup basil olive pesto 6 to 8 ounces veggie chicken or turkey slices 1/2 bunch arugula, trimmed, washed well, and spun dry (about 1 cup) Basil olive pesto: 1 large garlic clove 1 cup packed fresh basil leaves, washed well and spun dry 1 cup packed fresh parsley leaves (preferably flat-leaf), washed well +and spun dry 1/3 cup pine nuts 1/4 cup olive oil 1/4 cup Kalamata or other brine-cured black olives, pitted and chopped + fine Make sandwiches: In a heatproof bowl pour enough boiling water over to +matoes to cover and let stand 20 to 30 minutes, or until soft. Drain tomatoes an +d pat dry. Cut loaf diagonally into 4 pieces and halve each piece horizontally. S +pread pesto on cut sides of bread and make 4 sandwiches with chicken, tomato +es, and arugula. Make Basil Olive Pesto: To a food processor with motor running add gar +lic and blend until minced. Add basil, parsley, and nuts and blend well. Add o +il and blend until smooth. Transfer pesto to a bowl and stir in olives. Pesto + may be made 5 days ahead and chilled, surface covered tightly with plastic wr +ap. Bring pesto to room temperature before using. Makes about 3/4 cup. If you want to go OVER THE TOP and make, literally, the Best Sandwich +In The World, bake a loaf of Annie's Rosemary Garlic Bread and make this sand +wich on it while the bread is still hot from the oven. It is sinful and decadent. =Salads -Radish and Tomato Salad with Yoghurt Dressing Just made this, and really, really enjoyed it. Diet food doesn't have +to mean "tasteless"! Serves 2. 6 large radishes 2 tomatoes 3 tbsp plain yoghurt, chilled 1 clove garlic, chopped fine 1 tbsp sesame oil Salt, pepper, cumin to taste Slice radishes and tomatoes (optionally, chop them fine for a complete +ly different texture experience.) Add all the other ingredients and mix t +horoughly. Makes a lovely, cooling summer salad. -Baby Greens, Pear, Almond and Feta Salad Good God, this is tasty! 3 tbsp lemon juice 1 tbsp dijon mustard 1 1/2 tsp fresh thyme 1/2 cup olive oil 1 bag mixed baby greens 2 ripe pears, halved, cored, thinly sliced lengthwise 1 cup crumbled fake feta 1cup almonds, toasted, coarsely chopped Whisk first 4 ingredients in a bowl to blend. Season dressing to taste + with salt and pepper. Toss greens with enough dressing to coat. Divide among 2 or 3 plates. +Top each serving with pear slices. Sprinkle with feta and almonds. Drizzle the +top lightly with the remaining dressing. -Tuna Salad Tastes so much like real tuna fish, it's scary! 1 pound frozen firm tofu, thawed 1 rib celery, chopped 2 tbls grated carrot 2 tble soy sauce 1/2 cup Tofu Mayonaise or other egg-free mayo 1 tbls lemon juice 1/2 tsp kelp or kombu powder (optional, but this is what makes it fish +y) Squeeze the excess moisture out of the thawed tofu, and crumble it int +o small pieces. Combine with the bell pepper and carrot. Stir in the rest of +the ingredients and mix well. If you want to make an extra special tuna salad, mix in these things a +s well..... 1/2 cup roasted red peppers and kalamata olives cut into str +ips. Yum! -Chicken Salad This makes quite a nice sandwich! 2 cups vegan chicken tenders 1/2 cup diced celery 15 - 20 thinly sliced grapes 1/4 cup slivered almonds pinch of baby dill salt and pepper to taste 4 heaping tablespoons of Veganaise Fry up the chicken tenders in a bit of oil. Let them thaw and brown un +til they are golden (about 10 minutes). Toast the slivered almonds in the oven +for a few minutes (5 to 7 min.) Remove both chicken and almonds from heat and le +t cool for a few minutes. Cut up the tenders so they are a bit smaller. Add 2 tab +lespoons of veganaise. Chop up the celery, grapes, and dill. Add to the chicke +n and veganaise and stir. Add the other two tablespoons of veganaise and alm +onds to the mixture. Add a bit of salt and pepper to taste. -Mixed Lettuces with Reduced Balsamic Vinaigrette Who knew cooking balsamic vinegar made it turn so extra sweet! 1/2 cup balsamic vinegar 1/2 cup walnut oil salt and freshly ground black pepper Bag of mixed baby greens Croutons Place vinegar in a small saucepan. Bring to a boil and cook for 5 minu +tes, until reduced by half. measure to make sure you have 1/4 cup. Pour into a bo +wl and whick in the oil. Sprinkle with salt and pepper. Toss with greens and +croutons. -Mixed Green Salad with Strawberry Dressing This is a perfect summer salad... the results are downright magical! 1 1-pound basket strawberries, hulled, halved 1 5-ounce package mixed baby greens chopped up fake feta cheese or spy mozzerella (about 1 1/3 cups) 1/2 cup walnuts, toasted 1/2 cup olive oil 3 tablespoons balsamic vinegar 1 tablespoon sugar Mash enough strawberries to measure 1/3 cup. Place remaining strawberr +ies in large bowl. Add greens, cheese, and nuts. Whisk oil, vinegar, and suga +r in small bowl to blend. Whisk in mashed strawberries. Season dressing with salt + and pepper. Add to salad; toss to coat. -Quinoa Salad with Pistachios and Dried Pineapple This is a very tasty high protein treat! 1 1/2 cups water 3/4 cup uncooked quinoa 1/4 cup shelled, chopped pistachios (about 1 ounce) 1 package of Tofurkey slices, chopped 1/3 cup chopped green onions 1/3 cup chopped dried pineapple 1 tablespoon toasted sesame oil 1 1/2 grated fresh ginger 1/2 teaspoon ground cumin 1/2 teaspoon salt 1/4 teaspoon crushed red pepper Boil water in a small saucepan. Add quinoa. Cover, reduce heat, and si +mmer 12 minutes. Heat a small skillet over medium-high heat. Add chopped pistachios, an +d cook 2 minutes or until lightly toasted, stirring frequently. Transfer pistac +hios to a large bowl; add cooked quinoa and remaining ingredients to bowl. Toss +gently to coat. -Chipotle Chicken Taco Salad This is very flavorful and wonderful! If you want to add more to the m +eal, this simple fruit salad goes with it and will knock your socks off: Combine + 2 cups cubed watermelon, 1 cup cubed mango.... whisk together 1 1/2 tbsp lime + juice, 2 tsp honey or agave and 1/8 tsp salt and pour it over the fruit... it i +s heavenly! You can also serve this with tortilla chips. Dressing: 1/3 cup chopped fresh cilantro 2/3 cup soy sour cream 1 tablespoon minced chipotle chile, canned in adobo sauce 1 teaspoon ground cumin 1 teaspoon chili powder 4 teaspoons fresh lime juice 1/4 teaspoon salt Salad: 4 cups shredded romaine lettuce 2 cups chopped fake chicken or chicken style seitan, lightly sauteed 1 cup cherry tomatoes, halved 1/2 cup diced peeled avocado 1/3 cup thinly vertically sliced red onion 1 (15-ounce) can black, pinto or kidney beans, rinsed and drained 1 (8 3/4-ounce) can corn, rinsed and drained To prepare dressing, combine first 7 ingredients, stirring well. To prepare salad, combine lettuce and remaining ingredients in a large + bowl. Drizzle dressing over salad; toss gently to coat. Serve immediately. =Meals -Rosemary Chicken This has been called "The best seitan ever" 1 lb package "chicken-style" seitan, drained 6 tbsp margarine 2 tbsp olive oil 2 tsp dried rosemary leaves, crushed 1 tsp dried thyme 1/2 tsp dried sage 3 cloves garlic, finely chopped Grease a 9 X 13 pan with 1 tbsp olive oil. Preheat oven to 350. Arrang +e the seitan pieces in the bottom of the dish. In a small saucepan, heat re +maining olive oil and add margarine to melt. Once melted, add the garlic, rose +mary, sage and thyme. Allow to simmer for a few minutes. Pour the melted magarin +e mixture over the seitan pieces and bake for 20 minutes, turning once. -Tofu Cacciatore Serve this with some nice pasta and you will have a lovely meal! 1 lb firm tofu OR use 2 1-lb packages of "chicken-style" seitan, drain +ed 1 tsp olive oil 1 onion, diced 3 cloves garlic, minced 3 tbls tomato paste 3/4 cup vegetable broth 1 cup canned tomatoes 1/2 cup sliced mushrooms 1/2 cup dry white wine 1 tsp dried parsley 1 bay leaf 1/2 tsp salt 1/2 tsp ground allspice 1/4 tsp dried rosemary 1/4 tsp dried basil 1/4 tsp black pepper Drain tofu and pat dry. Cut into 1/2 inch squares. Heat oil in a larg +e skillet over medium heat. Saute the onion and garlic for 2 minutes. Add tomato + paste, broth, tomatoes, mushrooms, wine, herbs, salt and spices and stir unti +l blended. Bring saice to a boil, reduce heat, and simmer, covered, for 20 minute +s, stirring often. Add the tofu and simmer until tofu is heated through. -Fettucine Alfredo This is so rich and creamy, no one would ever know it wasn't the real +thing! 1 package silken tofu 1 tbsp soymarg 1/4 cup "sour cream" 2 tbsp "cream cheese" 1/4 cup vegan parmesan 1 tsp garlic powder salt and pepper soymilk Put all into a blender with 1/2 cup soymilk. Blend to a creamy sauce, +adding soymilk to achieve desired consistency. Heat gently until hot, but do +not boil. Serve over fettucine. -Shepherd's Pie This makes a most delicious meal!! Filling: 1 small onion, chopped 3 small carrots, chopped 1/2 cup spinach, chopped 1 stalk celery, chopped 1 large tomato, chopped 2 tbsp olive oil 15 oz can of lentils, mashed 1/2 tsp dried basil 1/2 tsp salt 1 tbsp Braggs or soy sauce Topping: 3 medium potatoes, roughly chopped 1/4 cup soy milk 1 tbsp margarine salt to taste Preheat over to 350 F. Boil or steam the chopped potatoes until they c +an be pierced easily. In a medium saucepan, saute the onions, carrots, spina +ch, celery and tomatoes in the oil. Once carrots are tender, add the mashed lenti +ls, basil, salt, and Braggs. Stir and simmer without a lid until the liqui +d cooks off. In a large bowl, mash together the potatoes, soy milk, margarine + and salt with a potato masher or fork. Set aside. Pour the vegetable mixture in +to a lightly oiled 9 X 9 baking dish. Layer the mashed potatoes over the to +p. Bake for 15 - 20 minutes. -Soba Noodles with Spicy Tofu Peanut Sauce This sauce is very smooth and full of peanut butter goodness! soba noodles (either 1 or 2 pounds, depending on how many people are e +ating) 6 tbsp minced cilantro 2 large cucumbers, peeled, seeded and sliced into matchsticks 5 tbsp chopped scallions 10 oz firm tofu 2 cloves garlic 1 inch piece fresh ginger, minced 1/2 tbsp cayenne pepper 1/4 cup soy sauce 2 tbsp honey (or agave nector, if you don't use honey) 1 cup soy milk 1 cup natural smooth peanut butter Cook pasta, drain and let them cool down a bit. Trasfer noodles to a +large bowl. Add cilantro, cucumbers and scallions and toss gently. In a foo +d processor or blender, whip the tofu until smooth. Add the garlic, ging +er and soy sauce and blend until combined In a medium saucepan over moderate heat +, combine the honey, soy milk and peanut butter and stir constantly until mixed +Remove from heat and add the tofu mixture, and beat with a wire whip. If it s +eems too thick, add more soy milk. Serve with the sauce spooned over the noodle +s. -Broccoli and Rice Casserole This is a good thing to eat if you are craving something cheesy! 1 bunch of broccoli, cut into florets 2 cups white rice 1 stick of vegan margarine 1/2 cup all-purpose flour 3 1/2 cups boiling water 2 tsp salt 1 tbsp soy sauce or tamari 1 1/2 tsp garlic powder 1 tsp onion powder pinch of tumeric 1 cup nutritional yeast flakes salt and pepper to taste pinch of paprika Steam the broccoli, about 6 minutes. Prepare the rice according to pac +kage directions. Spread the cooked rice evenly over the bottom of a 9 X 13 + bakiing dish. Sprinkle the broccoli over the rice and set aside. Preheat oven + to 350 degrees Melt the margarine in a medium frying pan over low heat. Beat +in the flour with a whisk over medium heat until the mixture is smooth and bu +bbly, the whisk in the boiling water, salt, soy sauce, garlic and onion powders, + and tumeric. Cook the sauce until it thickens and bubbles, then whip in th +e yeast. Add salt and pepper to taste. Pour the sauce over the broccoli and ri +ce, sprinkle the top with paprika, and bake for 15 minutes. -Bean and Cheese Casserole I'm a big fan of the bean/potato combo. 5-6 small potatoes, sliced 1 tbsp dijon mustard 1 can of baked beans 2 tsp pepper 2 cups grated soy cheese Preheat oven to 400. Boil or steam the potatoes until they can be easi +ly pierced with a fork. In a small bowl, mix together the beans, mustard and pepp +er. Place half of the cooked potatoes in a lightly oiled casserole dish. Now, yo +u'll put this together like a lasagna, with a layer of beans and a layer of che +ese. Then, repeat with another layer of the remaining potatoes, the rest of the b +eans and the rest of the cheese. Cover and bake for 35 - 40 minutes. -Tia's Mac N Cheese Tia sent me this all the way from Austraila... and damn, I like it! 1/4 cup flour 1/2 cup nutritional yeast 1/3 cup soy marg 1 1/2 cup water 1-2 sloshes soy sauce 2 tsp mustard pepper to taste Toast flour and yeast in a pan until they smell nutty. Add marg and st +ir til bubbly. Add water and cook until it thickens, stirring constantly. Whe +n it is thick, stir in the remaining ingredients. Stir this into a pot of shells or elbows or penne. -Penne With Eggplant, Olives and Feta I almost had a religious experience the first time I made this! 8 tbsp olive oil 3/4 pound diced bell peppers (I mix red and green) 8 garlic cloves, minced 1 tsp dried crushed red pepper 1 eggplant, cut into 1/2 inch cubes 1 tbsp dried oregano 28 oz can diced tomatoes in juice 1 cup sliced fresh basil 3/4 cup coursely chopped kalmata olives 1 can tomato paste 2 tbsp red wine vinegar 12 oz penne 14 ounces fake feta Brush 13x9x2-inch glass baking dish with 2 tablespoons oil. Heat rema +ining 6 tablespoons oil in heavy large pot over medium-high heat. Add bell pep +pers, garlic and crushed pepper; sauté 3 minutes. Add eggplant and oregano. + Reduce heat to medium-low. Cover; cook until eggplant softens, stirring often +, about 15 minutes. Mix in tomatoes with juices, 1/2 cup basil, olives, tomato paste and v +inegar. Cover; simmer until all vegetables are tender, stirring occasionally, +about 12 minutes. Season with salt and pepper. Cook pasta in large pot of boiling salted water until just tender but +still firm to bite; drain well. Stir pasta into vegetable mixture. Transfer to pr +epared dish. Cover dish with foil. (Can be prepared 1 day ahead. Refrigerate +.) Preheat oven to 350°F. Bake pasta covered until heated through, about +20 minutes (40 minutes if refrigerated). Sprinkle with fake feta, then 1/2 cup ba +sil. -Baked Mac and Cheese This isn't dried out the way some baked Mac and Cheese is... it's real +ly juicy and tasty. 1 1/2 cups of plain soymilk 1 cup of water 1/3 cup of tamari or soy sauce 1 1/2 cup of nutritional yeast 1 tbsp. paprika 1 tbsp. garlic powder 1 tbsp. salt 5 oz firm (not silken) tofu 1 cup of canola or vegetable oil 1 1/2 lbs macaroni a relatively large baking pan (like a brownie pan) 1 dollop of mustard Pre-heat oven to 350 degrees Fahrenheit. Boil water in a big pot for +the pasta. Blend all ingredients besides pasta in a food processor. Once pasta i +s cooked drain and put it in the baking pan pour the "cheese" sauce over the pa +sta. Bake until the top of the pasta looks slightly browned and crispy - about 1 +5 minutes. -Baked Ziti This brought me right back to my youth in New Jersey! 8 oz. seitan 2-3 cups of mushrooms, sliced 25 oz. jar of tomato sauce 1 box extra firm silken tofu 1/3 cup fresh basil, roughly chopped 2-3 Tbls. fresh lemon juice 2 tsp. olive oil salt and pepper to taste 1 box ziti (16 oz.) Preheat oven to 400 degrees F. Cook Ziti according to package directi +ons and drain when finished. Mince the seitan and mushrooms in a food process +or until course and crumbly. Pour mushroom and seitan mixture into a large sauc +epan and stir in tomato sauce. Bring to a simmer over medium heat and cook for +about 10 minutes. In a food processor, puree the tofu, basil, lemon, olive oil, and salt + and pepper until consistancy is similar to ricotta cheese. Spread some of + the tomato-seitan mixture into the bottom of a 13 x 9 inch baking pan so t +hat it coats the bottom. Combine the drained Ziti, tofu mixture, and remaini +ng tomato-seitan mixture in a large bowl and mix gently to combine all in +gredients. Spread evenly into the 13 x 9 inch baking pan and bake for 15 minutes. -Fusilli with Fresh Tomato and Olive Sauce Wow, I think this might be the best Pasta I have ever made! 1/4 cup olive oil 1 cup Kalamata olives or other brine-cured black olives, pitted, chopp +ed 1 medium onion, chopped 6 garlic cloves, chopped 1/2 teaspoon dried crushed red pepper 1 1/2 pounds plum tomatoes (about 8 large), chopped 2 tablespoons tomato paste 2 tablespoons red wine vinegar 1 pound fusilli, freshly cooked 1 1/2 cups soy cheese (I used a combo of soy parm and soy mozzerella) 1 cup chopped fresh basil Heat olive oil in heavy large pot over medium-high heat. Add olives, c +hopped onion, chopped garlic and crushed red pepper and sauté until onion beg +ins to soften, about 4 minutes. Add tomatoes and tomato paste and stir until +tomatoes are just warmed through, about 2 minutes. Mix in red wine vinegar. Add + cooked pasta, soy cheese and fresh basil and toss to combine. Season to taste + with salt and pepper. Transfer to large bowl.

--
"Language shapes the way we think, and determines what we can think about."
-- B. L. Whorf