Since I was asked about this, I wrote a simple perl script to help with those BBcodes for a crop table. It accepts input in the form of a CSV file, like this:
BARREL_CACTUS, barrel cactus fruit, 3, 672, Spring Summer Autumn, Yes, Yes, wasteland water (1), No, EXTRACT(Barrel): barrel cactus jam (15), Cook
WEED_BLADE, blade weed, 2, 1008, Winter Spring Summer, No, No, No, No, MILL: emerald dye (20), Dye Useless
TUBER_BLOATED, bloated tuber, 1, 1008, Spring Summer Autumn, Yes, Yes, tuber beer (2), Yes, N/A, Brew Biofuel
BERRIES_FISHER, fisher berry, 2, 672, Spring Summer, Yes, Yes, fisher berry wine (2), Yes, N/A, Brew Biofuel
It formats it into a BBcode table. It doesn't insert colours and hints by itself, nor does it divide Products into separate lines by inserting sub-tables (which would be doable in a few more lines of code), but it will preserve any BBcodes already present in it's input. It doesn't even sort the input by name. All it does is add BB codes for a table. If there are any requests for simple changes, I can do that, but no GUI or other fancy things. This script can be easily modified to work with other mods by removing the references to biofuel.
Writing a RAW crawler that generates a table from RAWs would be much more challenging.
#!/usr/bin/perl -w
# This script converts crop table for FoE from CSV into BBcode. It needs input like this:
# "ROOT_CARROT, carrot, 2, 1008, Spring Summer, Yes, Yes, carrot juice (2), No, N/A, Juice"
use strict;
use warnings;
# Some handy shortcuts for commonly used CC codes.
my $brow = " [tr][td]"; # begin table row
my $erow = "[/td][/tr] \n"; # end table row
my $td = "[/td] [td]"; # separate columns
my $tds = "[/td] [td][/td] [td]"; # separate columns, using a hidden column as separator
my $btb = "[table][center]\n "; # begin table
my $etb = "[/center][/table]\n"; # end table.
my $bstb = "[table][tr]"; # begin sub-table Sub-tables are used for more control over horizontal space.
my $estb = "[/tr][/table]"; # end sub-table
my $stbs = "[/tr] [tr]"; # sub-table row separator.
die ("\nSyntax: ./crops.pl input.csv output.txt\n") unless ($#ARGV == 1);
my $input = $ARGV[0];
my $output = $ARGV[1];
# read is "<", (over)write is ">", append is ">>"
open (FI, "<", $input) || die ("Could not open $input for reading!");
open (FO, ">", $output) || die ("Could not open $output for writing!");
print FO $btb;
print FO $brow, $bstb, "[b]Name[/b]", $stbs, "[b]ID[/b]", $estb, $td, "[b]Value[/b]", $tds, "[b]Grows[/b]", $td, "[b]Seasons[/b]", $tds, "[b]Eat[/b]", $tds, "[b]Cook[/b]", $tds, "[b]Brew (Value)[/b]", $tds, "[b]Biofuel[/b]", $td, "[b]Products (Value)[/b]", $tds, "[b]Hints[/b]", $erow;
while (my $line = <FI>)
{ my @sline = split ",", $line;
for (@sline) #remove leading and trailing spaces
{ s/\s+$//;
s/^\s+//;
}
my ($Id, $name, $value, $growdur, $growses, $raw, $cook, $drink, $fuel, $products, $hints) = @sline;
print FO $brow, $bstb, "[b]", $name, "[/b]", $stbs, $Id, $estb, $td, $value, $tds, $growdur/12, $td, $growses, $tds, $raw, $tds, $cook, $tds, $drink, $tds, $fuel, $td, $products, $tds, $hints, $erow;
}
print FO $etb;
close FI;
close FO;
print "Processed crops in \"$input\" and wrote BBcodes to \"$output\"\n";
> Wicker workshop
Played goblin camp, I see
Well, this would pretty much duplicate the functionality of plywood workshop, but for embarks low on trees it makes for a good alternative to stone bins.
> Crematorium
We can already burn vermin and trash at the salvage yard.
> Parchment
Well, OK, I often have more mottled leather than I know what to do with. Heck, we could even make low-quality paper out of low value leather and high quality paper out of expensive leather.
> Cyber Lab
The only way I see this working is by changing a pony's caste to "Cyberpony", erasing the cutie mark in the process.