Poll

Is this a good idea?

You bet - the applications are endless!
16 (66.7%)
I guess so, but I doubt I'd get much use out of it
7 (29.2%)
Forget it - waste of time
1 (4.2%)

Total Members Voted: 24

Voting closed: August 02, 2003, 06:56:05 am

Author Topic: WIP - .TBL PHP Parser?  (Read 8176 times)

0 Members and 1 Guest are viewing this topic.

Offline Sandwich

  • Got Screen?
  • 213
    • Skype
    • Steam
    • Twitter
    • Brainzipper
Checkbox selction of ships to include in the output .tbl...

Table display (conventional table - with columns and stuff - as opposed to FS1/2 tables) for ship stats comparison and sorting by attributes...

Table modification via user-friendly (theoretically) interface...

And pretty much anything you can think of - within reason. :p
SERIOUSLY...! | {The Sandvich Bar} - Rhino-FS2 Tutorial | CapShip Turret Upgrade | The Complete FS2 Ship List | System Background Package

"...The quintessential quality of our age is that of dreams coming true. Just think of it. For centuries we have dreamt of flying; recently we made that come true: we have always hankered for speed; now we have speeds greater than we can stand: we wanted to speak to far parts of the Earth; we can: we wanted to explore the sea bottom; we have: and so  on, and so on: and, too, we wanted the power to smash our enemies utterly; we have it. If we had truly wanted peace, we should have had that as well. But true peace has never been one of the genuine dreams - we have got little further than preaching against war in order to appease our consciences. The truly wishful dreams, the many-minded dreams are now irresistible - they become facts." - 'The Outward Urge' by John Wyndham

"The very essence of tolerance rests on the fact that we have to be intolerant of intolerance. Stretching right back to Kant, through the Frankfurt School and up to today, liberalism means that we can do anything we like as long as we don't hurt others. This means that if we are tolerant of others' intolerance - especially when that intolerance is a call for genocide - then all we are doing is allowing that intolerance to flourish, and allowing the violence that will spring from that intolerance to continue unabated." - Bren Carlill

 

Offline phreak

  • Gun Phreak
  • 211
  • -1
sandy: it may be easier to use the fs2 source.  i don't know how much C/C++ you know, but its already written and just needs a GUI.  plus you can keep it up to date with all the scp shiz thats going on.  either way, its still a good thing :nod:
Offically approved by Ebola Virus Man :wtf:
phreakscp - gtalk
phreak317#7583 - discord

 

Offline Sandwich

  • Got Screen?
  • 213
    • Skype
    • Steam
    • Twitter
    • Brainzipper
Quote
Originally posted by PhReAk
sandy: it may be easier to use the fs2 source.  i don't know how much C/C++ you know, but its already written and just needs a GUI.  plus you can keep it up to date with all the scp shiz thats going on.  either way, its still a good thing :nod:


I know zero C/C++, although I do know PHP to an extent. But what does the SCP have to do with this?
SERIOUSLY...! | {The Sandvich Bar} - Rhino-FS2 Tutorial | CapShip Turret Upgrade | The Complete FS2 Ship List | System Background Package

"...The quintessential quality of our age is that of dreams coming true. Just think of it. For centuries we have dreamt of flying; recently we made that come true: we have always hankered for speed; now we have speeds greater than we can stand: we wanted to speak to far parts of the Earth; we can: we wanted to explore the sea bottom; we have: and so  on, and so on: and, too, we wanted the power to smash our enemies utterly; we have it. If we had truly wanted peace, we should have had that as well. But true peace has never been one of the genuine dreams - we have got little further than preaching against war in order to appease our consciences. The truly wishful dreams, the many-minded dreams are now irresistible - they become facts." - 'The Outward Urge' by John Wyndham

"The very essence of tolerance rests on the fact that we have to be intolerant of intolerance. Stretching right back to Kant, through the Frankfurt School and up to today, liberalism means that we can do anything we like as long as we don't hurt others. This means that if we are tolerant of others' intolerance - especially when that intolerance is a call for genocide - then all we are doing is allowing that intolerance to flourish, and allowing the violence that will spring from that intolerance to continue unabated." - Bren Carlill

 

Offline Sandwich

  • Got Screen?
  • 213
    • Skype
    • Steam
    • Twitter
    • Brainzipper
Ok, PHP help needed. I want to parse through a string, say:

Code: [Select]

$Allowed PBanks:        ( "Subach HL-7" "Morning Star" "Prometheus S"  "Maxim")


And surround every quote pair ( "..." ) with custom HTML code, such as a < SPAN >"..."< /SPAN > tag. I assume I need to use either ereg_replace or preg_replace, but I can't fit my brain around the explanations given in the manual. Anybody have a clue?
SERIOUSLY...! | {The Sandvich Bar} - Rhino-FS2 Tutorial | CapShip Turret Upgrade | The Complete FS2 Ship List | System Background Package

"...The quintessential quality of our age is that of dreams coming true. Just think of it. For centuries we have dreamt of flying; recently we made that come true: we have always hankered for speed; now we have speeds greater than we can stand: we wanted to speak to far parts of the Earth; we can: we wanted to explore the sea bottom; we have: and so  on, and so on: and, too, we wanted the power to smash our enemies utterly; we have it. If we had truly wanted peace, we should have had that as well. But true peace has never been one of the genuine dreams - we have got little further than preaching against war in order to appease our consciences. The truly wishful dreams, the many-minded dreams are now irresistible - they become facts." - 'The Outward Urge' by John Wyndham

"The very essence of tolerance rests on the fact that we have to be intolerant of intolerance. Stretching right back to Kant, through the Frankfurt School and up to today, liberalism means that we can do anything we like as long as we don't hurt others. This means that if we are tolerant of others' intolerance - especially when that intolerance is a call for genocide - then all we are doing is allowing that intolerance to flourish, and allowing the violence that will spring from that intolerance to continue unabated." - Bren Carlill

 

Offline phreak

  • Gun Phreak
  • 211
  • -1
Quote
Originally posted by Sandwich
But what does the SCP have to do with this?


we keep adding stuff to the tables (its all optional however)
Offically approved by Ebola Virus Man :wtf:
phreakscp - gtalk
phreak317#7583 - discord

 

Offline Sandwich

  • Got Screen?
  • 213
    • Skype
    • Steam
    • Twitter
    • Brainzipper
Quote
Originally posted by PhReAk


we keep adding stuff to the tables (its all optional however)


Gotcha, but that shouldn't be a problem. The script will parse through the table, and, for example, keep a list of every primary weapon it runns across (anything between quotes inside parentheses following the "$Allowed PBanks:" statement), not just build a static list from the original files and that's it.

EDIT: So it doesn't get lost on the previous page:

Quote
Originally posted by Sandwich
Ok, PHP help needed. I want to parse through a string, say:

Code: [Select]

$Allowed PBanks:        ( "Subach HL-7" "Morning Star" "Prometheus S"  "Maxim")


And surround every quote pair ( "..." ) with custom HTML code, such as a < SPAN >"..."< /SPAN > tag. I assume I need to use either ereg_replace or preg_replace, but I can't fit my brain around the explanations given in the manual. Anybody have a clue? [/B]
SERIOUSLY...! | {The Sandvich Bar} - Rhino-FS2 Tutorial | CapShip Turret Upgrade | The Complete FS2 Ship List | System Background Package

"...The quintessential quality of our age is that of dreams coming true. Just think of it. For centuries we have dreamt of flying; recently we made that come true: we have always hankered for speed; now we have speeds greater than we can stand: we wanted to speak to far parts of the Earth; we can: we wanted to explore the sea bottom; we have: and so  on, and so on: and, too, we wanted the power to smash our enemies utterly; we have it. If we had truly wanted peace, we should have had that as well. But true peace has never been one of the genuine dreams - we have got little further than preaching against war in order to appease our consciences. The truly wishful dreams, the many-minded dreams are now irresistible - they become facts." - 'The Outward Urge' by John Wyndham

"The very essence of tolerance rests on the fact that we have to be intolerant of intolerance. Stretching right back to Kant, through the Frankfurt School and up to today, liberalism means that we can do anything we like as long as we don't hurt others. This means that if we are tolerant of others' intolerance - especially when that intolerance is a call for genocide - then all we are doing is allowing that intolerance to flourish, and allowing the violence that will spring from that intolerance to continue unabated." - Bren Carlill

 

Offline WMCoolmon

  • Purveyor of space crack
  • 213
This should work, but no guarantees. You'll probably get an extra space or two at least :nervous:

$Weapons = ' "Subach HL-7" "Morning Star" "Prometheus S"  "Maxim"'; //This is what $Weapons should be to work with this function, ie no parentheses
//$Output is where the final text gets stored

function WeaponParse($Weapons, $Output)
{
     $Weapons = strtr($Weapons,' "','');
     $WeaponsArray = explode('"',$Weapons);

     foreach($WeaponsArray as $Weapon)
     {
          if(strlen(strtr($Weapon," ",'')))
          {
               $Output .= "";
               $Output .= $Weapon;
               $Output .= "
";
          }
     }
}
« Last Edit: August 03, 2003, 05:53:56 pm by 374 »
-C

 

Offline Sandwich

  • Got Screen?
  • 213
    • Skype
    • Steam
    • Twitter
    • Brainzipper
Thanks, WMCoolmon - but it didn't work. ;) I dunno where it got hung up, but I am unable to troubleshoot scripts that aren't mine - especially ones that use functions I never heard of before. :p But thanks - really! :)

Anyway, I did manage to get my own version working, after discovering the existance of strtok. :D Here's the updates script:


$num_tabs = "\t\t\t"; // number of tab stops between a data line and it's comments; default = 3
$table = file("ships.tbl");
$text = '
';
while (list (, $line) = each ($table)) {
$line = trim($line);

// BEGIN section check
if (strpos($line, "#") === 0) { // line begins with '#'?
if ($line == "#End") {
$line = '' . $line . "
";
} else {
$tbl_heading1_id++;
$index .= '' . $line . '
';
$line = '***** CLASS="tbl_heading1_text">' . $line . "";
}
// END check for section

// BEGIN check for comments
} elseif (strpos($line, ";") === 0) { // line is commented
if (strchr($line,":")) {
list($entry_type,$entry_value) = explode(":",$line);
$entry_type = trim($entry_type);
$entry_value = trim($entry_value);
$line = "$entry_type: $entry_value";
} else {
$line = "$line";
}
// END check for comments

// BEGIN data parsing
} elseif (!strlen($line) == 0) { // not blank line
list($entry_type,$entry_value) = explode(":",$line);
$entry_type = trim($entry_type);
$entry_value = trim($entry_value);

// BEGIN find quoted text
$first_quote = strpos($entry_value, '"');
$last_quote = strrpos($entry_value, '"');
if ($first_quote && $last_quote) {
$quoted = substr($entry_value,$first_quote,$last_quote - $first_quote + 1);
$entry_value_new = trim(substr($entry_value,0,$first_quote));
$tok = strtok($quoted,'"');
while ($tok) {
if (trim($tok) == "") {
// do nothing if token is empty
} else {
  $entry_value_new .= " \"$tok\" ";
}
   $tok = strtok('"');
}
$entry_value_new .= trim(substr($entry_value,$last_quote + 1));
$entry_value_old = $entry_value;
$entry_value = $entry_value_new;
}
// END find quoted text

if (strchr($entry_value,";") === FALSE) {
// no comment found
} else {
list($entry_value_data,$entry_value_comment) = explode(";;",$entry_value);
$entry_value_data = trim($entry_value_data);
$entry_value_comment = trim($entry_value_comment);
$entry_value = "$entry_value_data" . $num_tabs . ";; $entry_value_comment";
}
$line = "$entry_type: $entry_value";
//if ($entry_type == "$Name") {
//$entry_list
//}
// END data parsing

} else {
// blank line
}

   $text .= $line . "\n";
}
$text .= "\n\n";
echo $index;
echo $text;
?>


And here's the file again - updated. Lemme know if you spot anything messed up. ;)
SERIOUSLY...! | {The Sandvich Bar} - Rhino-FS2 Tutorial | CapShip Turret Upgrade | The Complete FS2 Ship List | System Background Package

"...The quintessential quality of our age is that of dreams coming true. Just think of it. For centuries we have dreamt of flying; recently we made that come true: we have always hankered for speed; now we have speeds greater than we can stand: we wanted to speak to far parts of the Earth; we can: we wanted to explore the sea bottom; we have: and so  on, and so on: and, too, we wanted the power to smash our enemies utterly; we have it. If we had truly wanted peace, we should have had that as well. But true peace has never been one of the genuine dreams - we have got little further than preaching against war in order to appease our consciences. The truly wishful dreams, the many-minded dreams are now irresistible - they become facts." - 'The Outward Urge' by John Wyndham

"The very essence of tolerance rests on the fact that we have to be intolerant of intolerance. Stretching right back to Kant, through the Frankfurt School and up to today, liberalism means that we can do anything we like as long as we don't hurt others. This means that if we are tolerant of others' intolerance - especially when that intolerance is a call for genocide - then all we are doing is allowing that intolerance to flourish, and allowing the violence that will spring from that intolerance to continue unabated." - Bren Carlill

 

Offline Taristin

  • Snipes
  • 213
  • BlueScalie
    • Skelkwank Shipyards
Can you make the page background black? It'd be easier on the eyes.
Freelance Modeler | Amateur Artist

 

Offline Flipside

  • əp!sd!l£
  • 212
I've always wondered why tblview wouldn't let you change values, that would have made life so much easier!

Flipside :D

 

Offline Sandwich

  • Got Screen?
  • 213
    • Skype
    • Steam
    • Twitter
    • Brainzipper
Quote
Originally posted by Raa Tor'h
Can you make the page background black? It'd be easier on the eyes.


Done.
SERIOUSLY...! | {The Sandvich Bar} - Rhino-FS2 Tutorial | CapShip Turret Upgrade | The Complete FS2 Ship List | System Background Package

"...The quintessential quality of our age is that of dreams coming true. Just think of it. For centuries we have dreamt of flying; recently we made that come true: we have always hankered for speed; now we have speeds greater than we can stand: we wanted to speak to far parts of the Earth; we can: we wanted to explore the sea bottom; we have: and so  on, and so on: and, too, we wanted the power to smash our enemies utterly; we have it. If we had truly wanted peace, we should have had that as well. But true peace has never been one of the genuine dreams - we have got little further than preaching against war in order to appease our consciences. The truly wishful dreams, the many-minded dreams are now irresistible - they become facts." - 'The Outward Urge' by John Wyndham

"The very essence of tolerance rests on the fact that we have to be intolerant of intolerance. Stretching right back to Kant, through the Frankfurt School and up to today, liberalism means that we can do anything we like as long as we don't hurt others. This means that if we are tolerant of others' intolerance - especially when that intolerance is a call for genocide - then all we are doing is allowing that intolerance to flourish, and allowing the violence that will spring from that intolerance to continue unabated." - Bren Carlill

 

Offline WMCoolmon

  • Purveyor of space crack
  • 213
No problem. It was kind of fun to do some work with PHP again, even if it didn't work. :D

Suggestions/nitpicking:
1) Grouping things like Afterburner and Trail (or maybe even just indenting the optional values) would look better, IMHO.

2) Separating ship specs would give the table a cleaner look.

3) There's still no title. :p
-C

 

Offline Taristin

  • Snipes
  • 213
  • BlueScalie
    • Skelkwank Shipyards
Quote
Originally posted by Sandwich


Done.


Thats so much better.

Now that I can see what it is, I can say "not bad, not bad"
Freelance Modeler | Amateur Artist

 

Offline Sandwich

  • Got Screen?
  • 213
    • Skype
    • Steam
    • Twitter
    • Brainzipper
Quote
Originally posted by WMCoolmon
No problem. It was kind of fun to do some work with PHP again, even if it didn't work. :D

Suggestions/nitpicking:
1) Grouping things like Afterburner and Trail (or maybe even just indenting the optional values) would look better, IMHO.

2) Separating ship specs would give the table a cleaner look.

3) There's still no title. :p


1) You mean the stuff beginning with plus signs? I plan to next.

2) Seperating ship specs? It's all ship specs! :p

3) Meh. :p
SERIOUSLY...! | {The Sandvich Bar} - Rhino-FS2 Tutorial | CapShip Turret Upgrade | The Complete FS2 Ship List | System Background Package

"...The quintessential quality of our age is that of dreams coming true. Just think of it. For centuries we have dreamt of flying; recently we made that come true: we have always hankered for speed; now we have speeds greater than we can stand: we wanted to speak to far parts of the Earth; we can: we wanted to explore the sea bottom; we have: and so  on, and so on: and, too, we wanted the power to smash our enemies utterly; we have it. If we had truly wanted peace, we should have had that as well. But true peace has never been one of the genuine dreams - we have got little further than preaching against war in order to appease our consciences. The truly wishful dreams, the many-minded dreams are now irresistible - they become facts." - 'The Outward Urge' by John Wyndham

"The very essence of tolerance rests on the fact that we have to be intolerant of intolerance. Stretching right back to Kant, through the Frankfurt School and up to today, liberalism means that we can do anything we like as long as we don't hurt others. This means that if we are tolerant of others' intolerance - especially when that intolerance is a call for genocide - then all we are doing is allowing that intolerance to flourish, and allowing the violence that will spring from that intolerance to continue unabated." - Bren Carlill

 

Offline WMCoolmon

  • Purveyor of space crack
  • 213
Quote
Originally posted by Sandwich

2) Seperating ship specs? It's all ship specs! :p

Separating each individual ship spec, then...so that the GTF Ulysses is separate from the GTF Hercules in some way besides that little space. :p
-C

 

Offline Sandwich

  • Got Screen?
  • 213
    • Skype
    • Steam
    • Twitter
    • Brainzipper
Gotcha. :)

Added features:
- Indented lines beginning with "+".
- Horizontal rule between unit entries (above every "$Name: ****").
- Linked index of every unit with color-coding according to species, including "Ancient/Ancients" and a special "Other" catch-all, and placed it all in a tidy list. :D

Clickety-click!


$num_tabs = "\t\t\t"; // number of tab stops between a data line and it's comments; default = 3
$table = file("ships.tbl");
$text = '
';
$html_ul_state = "closed";
$html_li_state = "closed";
while (list (, $line) = each ($table)) {
GLOBAL $html_ul_state;
$line = trim($line);

// BEGIN section check (starts with "#")
if (strpos($line, "#") === 0) { // line begins with '#'?
if ($line == "#End") {
$line = '' . $line . "
";
} else {
$tbl_heading1_id++;
if ($html_ul_state == "open") {
$index .= "\n\n";
$html_ul_state = "closed";
}
$index .= '' . $line . '';
$line = '***** CLASS="tbl_heading1_text">' . $line . "";
}
// END check for section

// BEGIN check for comments (start with ";")
} elseif (strpos($line, ";") === 0) { // line is commented
if (strchr($line,":")) {
list($entry_type,$entry_value) = explode(":",$line);
$entry_type = trim($entry_type);
$entry_value = trim($entry_value);
$line = "$entry_type: $entry_value";
} else {
$line = "$line";
}
// END check for comments

// BEGIN check for subentries (start with "+")
} elseif (strpos($line, "+") === 0) { // line is subentry
if (strchr($line,":")) {
list($entry_type,$entry_value) = explode(":",$line);
$entry_type = trim($entry_type);
$entry_value = trim($entry_value);
$line = "\t$entry_type:\t$entry_value";
} else {
$line = "\t$line";
}
// END check for subentries

// BEGIN data parsing
} elseif (!strlen($line) == 0) { // not blank line
list($entry_type,$entry_value) = explode(":",$line);
$entry_type = trim($entry_type);
$entry_value = trim($entry_value);

// BEGIN find quoted text
$first_quote = strpos($entry_value, '"');
$last_quote = strrpos($entry_value, '"');
if ($first_quote && $last_quote) {
$quoted = substr($entry_value,$first_quote,$last_quote - $first_quote + 1);
$entry_value_new = trim(substr($entry_value,0,$first_quote));
$tok = strtok($quoted,'"');
while ($tok) {
if (trim($tok) == "") {
// do nothing if token is empty
} else {
  $entry_value_new .= " \"$tok\" ";
}
   $tok = strtok('"');
}
$entry_value_new .= trim(substr($entry_value,$last_quote + 1));
$entry_value_old = $entry_value;
$entry_value = $entry_value_new;
}
// END find quoted text

if (strchr($entry_value,";") === FALSE) {
// no comment found
} else {
list($entry_value_data,$entry_value_comment) = explode(";;",$entry_value);
$entry_value_data = trim($entry_value_data);
$entry_value_comment = trim($entry_value_comment);
$entry_value = "$entry_value_data" . $num_tabs . ";; $entry_value_comment";
}
$line = "$entry_type: $entry_value";

// BEGIN check for entry start and name
if ($entry_type == "\$Name") {
if ($html_li_state == "open") {
$index .= "\n\n";
$html_li_state = "closed";
}
if ($html_ul_state == "closed") {
$index .= "\n
    \n";
    $html_ul_state = "open";
    }
    $line = "
    \n
    \n $index .= "\n
  • \n\t";
    $html_li_state = "open";
    $index .= "
    $entry_value";
    $entry_list_id++;
    }
    // END check for entry start and name

    // BEGIN check for species
    if ($entry_type == "\$Species") {
    switch (trim($entry_value)) {
       case "Terran":
       case "Vasudan":
       case "Shivan":
       case "Ancient":
       case "Ancients":
           $index .= "\t($entry_value)
  • ";
           break;
    default:
           $index .= "\t(Other - $entry_value)";
    }
    $html_li_state = "closed";
    }
    // END check for species
    // END data parsing

    } else {
    // blank line
    }

       $text .= $line . "\n";
    }
    $text .= "\n\n";
    echo $index;
    echo $text;
    ?>
SERIOUSLY...! | {The Sandvich Bar} - Rhino-FS2 Tutorial | CapShip Turret Upgrade | The Complete FS2 Ship List | System Background Package

"...The quintessential quality of our age is that of dreams coming true. Just think of it. For centuries we have dreamt of flying; recently we made that come true: we have always hankered for speed; now we have speeds greater than we can stand: we wanted to speak to far parts of the Earth; we can: we wanted to explore the sea bottom; we have: and so  on, and so on: and, too, we wanted the power to smash our enemies utterly; we have it. If we had truly wanted peace, we should have had that as well. But true peace has never been one of the genuine dreams - we have got little further than preaching against war in order to appease our consciences. The truly wishful dreams, the many-minded dreams are now irresistible - they become facts." - 'The Outward Urge' by John Wyndham

"The very essence of tolerance rests on the fact that we have to be intolerant of intolerance. Stretching right back to Kant, through the Frankfurt School and up to today, liberalism means that we can do anything we like as long as we don't hurt others. This means that if we are tolerant of others' intolerance - especially when that intolerance is a call for genocide - then all we are doing is allowing that intolerance to flourish, and allowing the violence that will spring from that intolerance to continue unabated." - Bren Carlill

 

Offline mikhael

  • Back to skool
  • 211
  • Fnord!
    • http://www.google.com/search?q=404error.com
Okay, now for you next trick, lets see you put the index in a frame to the left, like Javadoc does with javacode documentation. :D
[I am not really here. This post is entirely a figment of your imagination.]

 

Offline Taristin

  • Snipes
  • 213
  • BlueScalie
    • Skelkwank Shipyards
Yeah, what mik said. That'd make it uberuseful™ :D
Freelance Modeler | Amateur Artist

 

Offline WMCoolmon

  • Purveyor of space crack
  • 213
The headings (names) for the fighters don't seem to show up now. :confused:
-C

 

Offline Sandwich

  • Got Screen?
  • 213
    • Skype
    • Steam
    • Twitter
    • Brainzipper
Quote
Originally posted by WMCoolmon
The headings (names) for the fighters don't seem to show up now. :confused:


I fixed it a while ago, but forgot to post. Sorry.

Quote
Originally posted by mikhael
Okay, now for you next trick, lets see you put the index in a frame to the left, like Javadoc does with javacode documentation. :D


Pfft.... small play. ;)

And that's all from one single index.php... it generates the frameset and both the left navigation bar and the main section. :D

Heck, I even added the page title! ;)

Should I keep posting the PHP code? It's getting kinda big... 7kb ATM.
SERIOUSLY...! | {The Sandvich Bar} - Rhino-FS2 Tutorial | CapShip Turret Upgrade | The Complete FS2 Ship List | System Background Package

"...The quintessential quality of our age is that of dreams coming true. Just think of it. For centuries we have dreamt of flying; recently we made that come true: we have always hankered for speed; now we have speeds greater than we can stand: we wanted to speak to far parts of the Earth; we can: we wanted to explore the sea bottom; we have: and so  on, and so on: and, too, we wanted the power to smash our enemies utterly; we have it. If we had truly wanted peace, we should have had that as well. But true peace has never been one of the genuine dreams - we have got little further than preaching against war in order to appease our consciences. The truly wishful dreams, the many-minded dreams are now irresistible - they become facts." - 'The Outward Urge' by John Wyndham

"The very essence of tolerance rests on the fact that we have to be intolerant of intolerance. Stretching right back to Kant, through the Frankfurt School and up to today, liberalism means that we can do anything we like as long as we don't hurt others. This means that if we are tolerant of others' intolerance - especially when that intolerance is a call for genocide - then all we are doing is allowing that intolerance to flourish, and allowing the violence that will spring from that intolerance to continue unabated." - Bren Carlill