Moodle is an alright piece of software, but if you ever try to discuss code, it will mangle it and create a horrible mess.
To mitigate this, write your posts in HTML view, and paste your code as it appears after running it through this moodlify.php script:
#!/usr/bin/php
<?php
/* moodlify.php -- whitespace fixes for code to post on moodle */
if(!isset($argv[1])) {
echo "Usage: " . $argv[0] . " [file]\n";
exit(0);
}
$file = $argv[1];
if(!file_exists($file) || !$code = file_get_contents($file)) {
echo "Could not open file: ".$argv[1]."\n";
exit(1);
}
/* Series of find-replaces to strip whitespace */
$code = htmlentities($code); /* < > " ' etc */
$code = str_replace("\t", " ", $code); /* Tabs (4 spaces)*/
$code = str_replace(" ", " ", $code); /* Double-spaces */
$code = str_replace("\n", "<br />", $code); /* Newlines */
$code = "<div style=\"padding-left:4em;\"><code>".$code."</code></div>\n";
/* Output options */
if(isset($argv[2])) {
file_put_contents($argv[2], $code);
} else {
echo $code;
}?>
And moodle will never mangle your code again!