Robert Marshall 10 years ago
parent
commit
0f653d2682
100 changed files with 33246 additions and 1 deletions
  1. 2 0
      Model/TagProcessors/ITagProcessor.php
  2. 20 0
      Model/TagProcessors/code.php
  3. 3 1
      Model/TagProcessors/img.php
  4. 2 0
      Model/TagProcessors/url.php
  5. 2 0
      Model/TagProcessors/widget.php
  6. 123 0
      lib/geshi/contrib/aliased.php
  7. 466 0
      lib/geshi/contrib/cssgen.php
  8. 59 0
      lib/geshi/contrib/cssgen2.php
  9. 217 0
      lib/geshi/contrib/example.php
  10. 769 0
      lib/geshi/contrib/langcheck.php
  11. 1158 0
      lib/geshi/contrib/langwiz.php
  12. 29 0
      lib/geshi/docs/BUGS
  13. 923 0
      lib/geshi/docs/CHANGES
  14. 340 0
      lib/geshi/docs/COPYING
  15. 33 0
      lib/geshi/docs/README
  16. 249 0
      lib/geshi/docs/THANKS
  17. 71 0
      lib/geshi/docs/TODO
  18. 4616 0
      lib/geshi/docs/api/__filesource/fsource_geshi_core_geshi.php.html
  19. 13 0
      lib/geshi/docs/api/blank.html
  20. 24 0
      lib/geshi/docs/api/classtrees_geshi.html
  21. 867 0
      lib/geshi/docs/api/elementindex.html
  22. 864 0
      lib/geshi/docs/api/elementindex_geshi.html
  23. 20 0
      lib/geshi/docs/api/errors.html
  24. 2676 0
      lib/geshi/docs/api/geshi/core/GeSHi.html
  25. 478 0
      lib/geshi/docs/api/geshi/core/_geshi.php.html
  26. 24 0
      lib/geshi/docs/api/index.html
  27. 46 0
      lib/geshi/docs/api/li_geshi.html
  28. 33 0
      lib/geshi/docs/api/media/banner.css
  29. BIN
      lib/geshi/docs/api/media/images/AbstractClass.png
  30. BIN
      lib/geshi/docs/api/media/images/AbstractClass_logo.png
  31. BIN
      lib/geshi/docs/api/media/images/AbstractMethod.png
  32. BIN
      lib/geshi/docs/api/media/images/AbstractPrivateClass.png
  33. BIN
      lib/geshi/docs/api/media/images/AbstractPrivateClass_logo.png
  34. BIN
      lib/geshi/docs/api/media/images/AbstractPrivateMethod.png
  35. BIN
      lib/geshi/docs/api/media/images/Class.png
  36. BIN
      lib/geshi/docs/api/media/images/Class_logo.png
  37. BIN
      lib/geshi/docs/api/media/images/Constant.png
  38. BIN
      lib/geshi/docs/api/media/images/Constructor.png
  39. BIN
      lib/geshi/docs/api/media/images/Destructor.png
  40. BIN
      lib/geshi/docs/api/media/images/Function.png
  41. BIN
      lib/geshi/docs/api/media/images/Global.png
  42. BIN
      lib/geshi/docs/api/media/images/I.png
  43. BIN
      lib/geshi/docs/api/media/images/Index.png
  44. BIN
      lib/geshi/docs/api/media/images/Interface.png
  45. BIN
      lib/geshi/docs/api/media/images/Interface_logo.png
  46. BIN
      lib/geshi/docs/api/media/images/L.png
  47. BIN
      lib/geshi/docs/api/media/images/Lminus.png
  48. BIN
      lib/geshi/docs/api/media/images/Lplus.png
  49. BIN
      lib/geshi/docs/api/media/images/Method.png
  50. BIN
      lib/geshi/docs/api/media/images/Page.png
  51. BIN
      lib/geshi/docs/api/media/images/Page_logo.png
  52. BIN
      lib/geshi/docs/api/media/images/PrivateClass.png
  53. BIN
      lib/geshi/docs/api/media/images/PrivateClass_logo.png
  54. BIN
      lib/geshi/docs/api/media/images/PrivateMethod.png
  55. BIN
      lib/geshi/docs/api/media/images/PrivateVariable.png
  56. BIN
      lib/geshi/docs/api/media/images/StaticMethod.png
  57. BIN
      lib/geshi/docs/api/media/images/StaticVariable.png
  58. BIN
      lib/geshi/docs/api/media/images/T.png
  59. BIN
      lib/geshi/docs/api/media/images/Tminus.png
  60. BIN
      lib/geshi/docs/api/media/images/Tplus.png
  61. BIN
      lib/geshi/docs/api/media/images/Variable.png
  62. BIN
      lib/geshi/docs/api/media/images/blank.png
  63. BIN
      lib/geshi/docs/api/media/images/class_folder.png
  64. BIN
      lib/geshi/docs/api/media/images/empty.png
  65. BIN
      lib/geshi/docs/api/media/images/file.png
  66. BIN
      lib/geshi/docs/api/media/images/folder.png
  67. BIN
      lib/geshi/docs/api/media/images/function_folder.png
  68. BIN
      lib/geshi/docs/api/media/images/next_button.png
  69. BIN
      lib/geshi/docs/api/media/images/next_button_disabled.png
  70. BIN
      lib/geshi/docs/api/media/images/package.png
  71. BIN
      lib/geshi/docs/api/media/images/package_folder.png
  72. BIN
      lib/geshi/docs/api/media/images/previous_button.png
  73. BIN
      lib/geshi/docs/api/media/images/previous_button_disabled.png
  74. BIN
      lib/geshi/docs/api/media/images/private_class_logo.png
  75. BIN
      lib/geshi/docs/api/media/images/tutorial.png
  76. BIN
      lib/geshi/docs/api/media/images/tutorial_folder.png
  77. BIN
      lib/geshi/docs/api/media/images/up_button.png
  78. 146 0
      lib/geshi/docs/api/media/stylesheet.css
  79. 29 0
      lib/geshi/docs/api/packages.html
  80. 42 0
      lib/geshi/docs/api/todolist.html
  81. 4077 0
      lib/geshi/docs/geshi-doc.html
  82. 1741 0
      lib/geshi/docs/geshi-doc.txt
  83. 90 0
      lib/geshi/docs/phpdoc.ini
  84. 4775 0
      lib/geshi/geshi.php
  85. 139 0
      lib/geshi/geshi/4cs.php
  86. 230 0
      lib/geshi/geshi/6502acme.php
  87. 241 0
      lib/geshi/geshi/6502kickass.php
  88. 189 0
      lib/geshi/geshi/6502tasm.php
  89. 168 0
      lib/geshi/geshi/68000devpac.php
  90. 1409 0
      lib/geshi/geshi/abap.php
  91. 197 0
      lib/geshi/geshi/actionscript.php
  92. 473 0
      lib/geshi/geshi/actionscript3.php
  93. 135 0
      lib/geshi/geshi/ada.php
  94. 329 0
      lib/geshi/geshi/algol68.php
  95. 483 0
      lib/geshi/geshi/apache.php
  96. 157 0
      lib/geshi/geshi/applescript.php
  97. 148 0
      lib/geshi/geshi/apt_sources.php
  98. 3318 0
      lib/geshi/geshi/arm.php
  99. 603 0
      lib/geshi/geshi/asm.php
  100. 0 0
      lib/geshi/geshi/asp.php

+ 2 - 0
Model/TagProcessors/ITagProcessor.php

@@ -1,4 +1,6 @@
 <?php
+namespace Tags;
+
 interface ITagProcessor {
 	public static function Process($args, $content);
 }

+ 20 - 0
Model/TagProcessors/code.php

@@ -0,0 +1,20 @@
+<?php
+namespace Tags;
+
+include('lib/geshi/geshi.php');
+
+class code implements ITagProcessor {
+	public static function Process($args, $content) {
+		if (!isset($args['lang']))
+			return $content;
+		
+		if (!isset($args['lineStyle']))
+			$args['lineStyle']=GESHI_FANCY_LINE_NUMBERS;
+		else
+			$args['lineStyle']=(int)$args['lineStyle'];
+		
+		$geshi=new \GeSHi($content,$args['lang']);
+		$geshi->enable_line_numbers($args['lineStyle']);
+		return $geshi->parse_code();
+	}
+}

+ 3 - 1
Model/TagProcessors/img.php

@@ -1,4 +1,6 @@
 <?php
+namespace Tags;
+
 class img implements ITagProcessor {
 	public static function Process($args, $content) {
 		if (!isset($args['id']))
@@ -8,7 +10,7 @@ class img implements ITagProcessor {
 		$showTitle=!isset($args['title']) || $args['title']=="true";
 		unset($args['id'],$args['title']);
 		
-		$image=new Image($id);
+		$image=new \Image($id);
 		if (is_null($image->Path))
 			return "<strong>Image not found</strong>";
 		

+ 2 - 0
Model/TagProcessors/url.php

@@ -1,4 +1,6 @@
 <?php
+namespace Tags;
+
 class url implements ITagProcessor{
 	public static function Process($args, $content) {
 		if ($content=="")

+ 2 - 0
Model/TagProcessors/widget.php

@@ -1,4 +1,6 @@
 <?php
+namespace Tags;
+
 class widget implements ITagProcessor {
 	public static function Process($args, $content) {
 		return "NOT IMPLEMENTED";

+ 123 - 0
lib/geshi/contrib/aliased.php

@@ -0,0 +1,123 @@
+<?php
+
+/**
+ * Another GeSHi example script
+ *
+ * Configure your Apache server with 'AcceptPathInfo true' and something like
+ * 'Alias /viewmysource /var/www/geshi/contrib/aliased.php'. Don't forget
+ * to protect this alias as necessary.
+ *
+ * Usage - visit /viewmysource/file.name.ext to see that file with syntax
+ * highlighting, where "viewmysource" is the name of the alias you set up.
+ * You can use this without an alias too, just by visiting
+ * aliased.php/file.name.ext.
+ *
+ * @author  Ross Golder <ross@golder.org>
+ * @version $Id: aliased.php 2533 2012-08-15 18:49:04Z benbe $
+ */
+
+// Your config here
+define("SOURCE_ROOT", "/var/www/your/source/root/");
+
+// Assume you've put geshi in the include_path already
+require_once("geshi.php");
+
+// Get path info
+$path = SOURCE_ROOT.$_SERVER['PATH_INFO'];
+
+// Check for dickheads trying to use '../' to get to sensitive areas
+$base_path_len = strlen(SOURCE_ROOT);
+$real_path = realpath($path);
+if(strncmp($real_path, SOURCE_ROOT, $base_path_len)) {
+    exit("Access outside acceptable path.");
+}
+
+// Check file exists
+if(!file_exists($path)) {
+    exit("File not found ($path).");
+}
+
+// Prepare GeSHi instance
+$geshi = new GeSHi();
+$geshi->set_language('text');
+$geshi->load_from_file($path);
+$geshi->set_header_type(GESHI_HEADER_PRE);
+$geshi->enable_classes();
+$geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS, 10);
+$geshi->set_overall_style('color: #000066; border: 1px solid #d0d0d0; background-color: #f0f0f0;', true);
+$geshi->set_line_style('font: normal normal 95% \'Courier New\', Courier, monospace; color: #003030;', 'font-weight: bold; color: #006060;', true);
+$geshi->set_code_style('color: #000020;', 'color: #000020;');
+$geshi->set_link_styles(GESHI_LINK, 'color: #000060;');
+$geshi->set_link_styles(GESHI_HOVER, 'background-color: #f0f000;');
+$geshi->set_header_content('Source code viewer - ' . $path . ' - ' . $geshi->get_language_name());
+$geshi->set_header_content_style('font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-bottom: 1px solid #d0d0d0; padding: 2px;');
+$geshi->set_footer_content('Parsed in <TIME> seconds,  using GeSHi <VERSION>');
+$geshi->set_footer_content_style('font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-top: 1px solid #d0d0d0; padding: 2px;');
+
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <title>Source code viewer - <?php echo $path; ?> - <?php $geshi->get_language_name(); ?></title>
+    <style type="text/css">
+    <!--
+    <?php
+        // Output the stylesheet. Note it doesn't output the <style> tag
+    echo $geshi->get_stylesheet();
+    ?>
+    html {
+        background-color: #f0f0f0;
+    }
+    body {
+        font-family: Verdana, Arial, sans-serif;
+        margin: 10px;
+        border: 2px solid #e0e0e0;
+        background-color: #fcfcfc;
+        padding: 5px;
+    }
+    h2 {
+        margin: .1em 0 .2em .5em;
+        border-bottom: 1px solid #b0b0b0;
+        color: #b0b0b0;
+        font-weight: normal;
+        font-size: 150%;
+    }
+    h3 {
+        margin: .1em 0 .2em .5em;
+        color: #b0b0b0;
+        font-weight: normal;
+        font-size: 120%;
+    }
+    #footer {
+        text-align: center;
+        font-size: 80%;
+        color: #a9a9a9;
+    }
+    #footer a {
+        color: #9999ff;
+    }
+    textarea {
+        border: 1px solid #b0b0b0;
+        font-size: 90%;
+        color: #333;
+        margin-left: 20px;
+    }
+    select, input {
+        margin-left: 20px;
+    }
+    p {
+        font-size: 90%;
+        margin-left: .5em;
+    }
+    -->
+    </style>
+</head>
+<body>
+<?php
+// The fun part :)
+echo $geshi->parse_code();
+?>
+<hr/>
+</body>
+</html>

+ 466 - 0
lib/geshi/contrib/cssgen.php

@@ -0,0 +1,466 @@
+<?php
+/*************************************************************************************
+ * cssgen.php
+ * ----------
+ * Author: Nigel McNie (nigel@geshi.org)
+ * Copyright: (c) 2004 Nigel McNie
+ * Release Version: 1.0.8.6
+ * Date Started: 2004/05/20
+ *
+ * Application to generate custom CSS files for GeSHi (based on an idea by Andreas
+ * Gohr)
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+set_magic_quotes_runtime(0);
+//
+// Functions
+//
+
+function make_header ( $title )
+{
+    echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <title>GeSHi CSS Generator :: ' . $title . ' </title>
+    <style type="text/css" media="screen">
+    <!--
+        html {
+            font-family: Verdana, Arial, sans-serif;
+            font-size: 80%;
+            background-color: #d0d0d0;
+        }
+        body {
+            margin: 10px;
+            padding: 5px;
+            border: 1px solid #f0f0f0;
+            background-color: #f6f6f6;
+        }
+        h1 {
+            border-bottom: 2px solid #e0e0e0;
+            font-weight: normal;
+            font-size: 150%;
+            color: #c0c0c0;
+        }
+        input, textarea {
+            border: 1px solid #d0d0d0;
+        }
+        th {
+            text-align: right;
+            font-weight: normal;
+        }
+        pre {
+            font-size: 110%;
+            color: #202020;
+        }
+        #footer {
+            color: #b0b0b0;
+            text-align: center;
+            font-size: 90%;
+            margin: 0 auto;
+            border-top: 1px solid #e0e0e0;
+        }
+        #footer a {
+            color: #c0c0c0;
+        }
+    -->
+    </style>
+    <script type="text/javascript">
+    function select (state)
+    {
+        var cboxes = document.getElementsByTagName(\'input\');
+        for (var i = 0; i < cboxes.length; i++) {
+            if (cboxes[i].type == "checkbox") {
+                if (state == "true") {
+                    cboxes[i].checked = true;
+                } elseif (state == "false") {
+                    cboxes[i].checked = false;
+                } elseif (state == "invert") {
+                    cboxes[i].checked = !cboxes[i].checked;
+                }
+            }
+        }
+    }
+    </script>
+</head>
+<body>
+<h1>' . $title . '</h1>
+';
+}
+
+function make_footer ()
+{
+    echo '<div id="footer"><a href="http://qbnz.com/highlighter/">GeSHi</a> &copy; Nigel McNie, 2004, released under the GPL</div></body>
+</html>';
+}
+
+
+function get_var ( $var_name )
+{
+    if ( isset($_GET[$var_name]) )
+    {
+        return str_replace("\'", "'", $_GET[$var_name]);
+    }
+    elseif ( isset($_POST[$var_name]) )
+    {
+        return str_replace("\'", "'", $_POST[$var_name]);
+    }
+    return null;
+}
+
+
+
+//
+// Unset everything
+//
+foreach ( $_REQUEST as $var )
+{
+    unset($$var);
+}
+foreach ( array(
+    '_POST' => 'HTTP_POST_VARS',
+    '_GET' => 'HTTP_GET_VARS',
+    '_COOKIE' => 'HTTP_COOKIE_VARS',
+    '_SERVER' => 'HTTP_SERVER_VARS',
+    '_ENV' => 'HTTP_ENV_VARS',
+    '_FILES' => 'HTTP_POST_FILES')  as $array => $other )
+{
+    if ( !isset($$array) )
+    {
+        $$array = $$other;
+    }
+    unset($$other);
+}
+
+
+// Get what step we're up to
+$step = get_var('step');
+
+if ( !$step || $step == 1 )
+{
+    $errors = 0;
+    make_header('Step 1');
+    echo "Welcome to the GeSHi CSS generator.<br /><pre>Searching for GeSHi...          ";
+
+    // Find GeSHi
+    $geshi_path = get_var('geshi-path');
+    $geshi_lang_path = get_var('geshi-lang-path');
+
+    if(strstr($geshi_path, '..')) {
+        unset($geshi_path);
+    }
+    if(strstr($geshi_lang_path, '..')) {
+        unset($geshi_lang_path);
+    }
+
+    if ( !$geshi_path )
+    {
+        $geshi_path = '../geshi.php';
+    }
+    if ( !$geshi_lang_path )
+    {
+        $geshi_lang_path = '../geshi/';
+    }
+
+    if ( is_file($geshi_path) && is_readable($geshi_path) )
+    {
+        // Get file contents and see if GeSHi is in here
+        $file = @file($geshi_path);
+        $contents = '';
+        foreach ( $file as $line )
+        {
+            $contents .= $line;
+        }
+        if ( strpos($contents, '<?php
+/**
+ * GeSHi - Generic Syntax Highlighter') !== false )
+         {
+            echo '<span style="color: green;">Found at ' . realpath($geshi_path) . '</span>';
+        }
+        else
+        {
+            ++$errors;
+            $no_geshi_dot_php_error = true;
+            echo '<span style="color: red;">Not found</span>';
+        }
+    }
+    else
+    {
+        ++$errors;
+        $no_geshi_dot_php_error = true;
+        echo '<span style="color: red;">Not found</span>';
+    }
+
+    // Find language files
+    echo "\nSearching for language files... ";
+    if ( is_readable($geshi_lang_path . 'css-gen.cfg') )
+    {
+
+        echo '<span style="color: green;">Found at ' . realpath($geshi_lang_path) . '</span>';
+    }
+    else
+    {
+        ++$errors;
+        $no_lang_dir_error = true;
+        echo '<span style="color: red;">Not found</span>';
+    }
+    echo "</pre>\n";
+
+    if ( $errors > 0 )
+    {
+        // We're gonna have to ask for the paths...
+        echo 'Unfortunately CSSGen could not detect the following paths. Please input them and press &quot;submit&quot; to try again.';
+        echo "
+<form action=\"cssgen.php\" method=\"post\">";
+        if ( $no_geshi_dot_php_error )
+        {
+            echo "
+<br />geshi.php: <input type=\"text\" name=\"geshi-path\" value=\"" . realpath('../geshi.php') . "\" size=\"50\" />";
+        }
+        else
+        {
+            echo '<input type="hidden" name="geshi-path" value="' . htmlspecialchars($geshi_path) . '" />';
+        }
+        if ( $no_lang_dir_error )
+        {
+            echo "
+<br />language files directory: <input type=\"text\" name=\"geshi-lang-path\" value=\"" . realpath('../geshi/') . "/\" size=\"50\" /> (should have a trailing slash)";
+        }
+        else
+        {
+            echo '<input type="hidden" name="geshi-lang-path" value="' . $geshi_lang_path . '" />';
+        }
+
+        echo "
+<br /><input type=\"submit\" value=\"Search\" /></form>";
+    }
+    else
+    {
+        // no errors - echo continue form
+        echo 'Everything seems to be detected successfully. Use the button to continue.
+<br /><br /><form action="cssgen.php?step=2" method="post">
+<input type="hidden" name="geshi-path" value="' . realpath($geshi_path) . '" /><input type="hidden" name="geshi-lang-path" value="' . realpath($geshi_lang_path) . '" />
+<input type="submit" value="Step 2" />';
+    }
+
+    make_footer();
+}
+// Step 2
+elseif ( $step == 2 )
+{
+    make_header('Step 2');
+
+    $geshi_path = get_var('geshi-path');
+    $geshi_lang_path = get_var('geshi-lang-path');
+
+    $dh = opendir($geshi_lang_path);
+    $lang_files = array();
+    $file = readdir($dh);
+    while ( $file !== false )
+    {
+        if ( $file == '.' || $file == '..' || $file == 'CVS' || $file == 'css-gen.cfg' )
+        {
+            $file = readdir($dh);
+            continue;
+        }
+        if(!strstr(file_get_contents($dh . DIRECTORY_SEPARATOR . $file), '$language_data')) {
+            $file = readdir($dh);
+            continue;
+        }
+        $lang_files[] = $file;
+        $file = readdir($dh);
+    }
+    closedir($dh);
+    sort($lang_files);
+
+    // Now installed languages are in $lang_files
+
+    echo '<form action="cssgen.php?step=3" method="post" id="step2">
+What languages are you wanting to make this stylesheet for?<br /><br />
+Detected languages:<br />';
+
+    foreach ( $lang_files as $lang )
+    {
+        $lang = substr($lang, 0, strpos($lang, '.'));
+        if ($lang) {
+            echo "<input type=\"checkbox\" name=\"langs[$lang]\" checked=\"checked\" />&nbsp;$lang<br />\n";
+        }
+    }
+
+    echo "Select: <a href=\"javascript:select('true')\">All</a>, <a href=\"javascript:select('false')\">None</a>, <a href=\"javascript:select('invert')\">Invert</a><br />\n";
+
+    echo 'If you\'d like any other languages not detected here to be supported, please enter
+them here, one per line:<br /><textarea rows="4" cols="20" name="extra-langs"></textarea><br />
+';
+
+    echo '<br />Styles:
+<table>
+    <tr><th>Style for the overall code block:</th><td><input type="text" name="overall" value="border: 1px dotted #a0a0a0; font-family: \'Courier New\', Courier, monospace; background-color: #f0f0f0; color: #0000bb;" /></td></tr>
+    <tr><th>Default Styles</th><td><input type="text" name="default-styles" value="font-weight:normal;background:transparent;color:#000; padding-left: 5px;" /></td></tr>
+    <tr><th>Keywords I (if, do, while etc)</th><td><input type="text" name="keywords-1" value="color: #a1a100;" /></td></tr>
+    <tr><th>Keywords II (null, true, false etc)</th><td><input type="text" name="keywords-2" value="color: #000; font-weight: bold;" /></td></tr>
+    <tr><th>Inbuilt Functions (echo, print etc)</th><td><input type="text" name="keywords-3" value="color: #000066;" /></td></tr>
+    <tr><th>Data Types (int, boolean etc)</th><td><input type="text" name="keywords-4" value="color: #f63333;" /></td></tr>
+
+    <tr><th>Comments (//, <!--  --> etc)</th><td><input type="text" name="comments" value="color: #808080;" /></td></tr>
+    <tr><th>Escaped Characters (\n, \t etc)</th><td><input type="text" name="escaped-chars" value="color: #000033; font-weight: bold;" /></td></tr>
+    <tr><th>Brackets ( ([{}]) etc)</th><td><input type="text" name="brackets" value="color: #66cc66;" /></td></tr>
+    <tr><th>Strings ("foo" etc)</th><td><input type="text" name="strings" value="color: #ff0000;" /></td></tr>
+    <tr><th>Numbers (1, -54, 2.5 etc)</th><td><input type="text" name="numbers" value="color: #ff33ff;" /></td></tr>
+    <tr><th>Methods (Foo.bar() etc)</th><td><input type="text" name="methods" value="color: #006600;" /></td></tr>
+</table>';
+
+    echo '<input type="hidden" name="geshi-path" value="' . realpath($geshi_path) . '" /><input type="hidden" name="geshi-lang-path" value="' . realpath($geshi_lang_path) . '" />
+<input type="submit" value="Step 3" /></form>';
+
+    make_footer();
+}
+// Step 3
+elseif ( $step == 3 )
+{
+    make_header('Step 3');
+    echo '<p>Here is your completed stylesheet. Note that it may not be perfect - no regular expression styles are included for one thing,
+you\'ll have to add those yourself (php and xml are just two languages that use them), and line numbers are not included, however
+it includes most of the basic information.</p>';
+
+    // Make the stylesheet
+    $part_selector_1 = '';
+    $part_selector_2 = '';
+    $part_selector_3 = '';
+
+    $langs = get_var('langs');
+    $extra_langs = trim(get_var('extra-langs'));
+    if ( $extra_langs != '' )
+    {
+        $l = explode("\r\n", $extra_langs);
+        foreach ( $l as $lng )
+        {
+            $langs[$lng] = true;
+        }
+    }
+
+
+    foreach ( $langs as $lang => $dummy )
+    {
+        $part_selector_1 .= ".$lang {PART}, ";
+        $part_selector_2 .= ".$lang {PART1}, .$lang {PART2}, ";
+        $part_selector_3 .= ".$lang {PART1}, .$lang {PART2}, .$lang {PART3}, ";
+    }
+    $part_selector_1 = substr($part_selector_1, 0, -2);
+    $part_selector_2 = substr($part_selector_2, 0, -2);
+    $part_selector_3 = substr($part_selector_3, 0, -2);
+
+
+    $default_styles = get_var('default-styles');
+    $ol_selector = str_replace('{PART}', 'ol', $part_selector_1);
+    $overall_styles = get_var('overall');
+    $overall_selector = str_replace('{PART}', '', $part_selector_1);
+
+    $stylesheet = "/* GeSHi (c) Nigel McNie 2004 (http://qbnz.com/highlighter) */";
+
+    if ( $overall != '' )
+    {
+        $stylesheet .= "\n$overall_selector {{$overall_styles}}";
+    }
+    if ( $default_styles != '' )
+    {
+        $default_selector = str_replace(array('{PART1}', '{PART2}'), array('.de1', '.de2'), $part_selector_2);
+        $stylesheet .= "\n$default_selector {{$default_styles}}";
+    }
+
+    // Do keywords
+    $keywords_1 = get_var('keywords-1');
+    $keyword_selector_1 = str_replace('{PART}', '.kw1', $part_selector_1);
+    if ( $keywords_1 != '' )
+    {
+        $stylesheet .= "\n$keyword_selector_1 {{$keywords_1}}";
+    }
+
+    $keywords_2 = get_var('keywords-2');
+    $keyword_selector_2 = str_replace('{PART}', '.kw2', $part_selector_1);
+    if ( $keywords_2 != '' )
+    {
+        $stylesheet .= "\n$keyword_selector_2 {{$keywords_2}}";
+    }
+
+    $keywords_3 = get_var('keywords-3');
+    $keyword_selector_3 = str_replace('{PART}', '.kw3', $part_selector_1);
+    if ( $keywords_3 != '' )
+    {
+        $stylesheet .= "\n$keyword_selector_3 {{$keywords_3}}";
+    }
+
+    $keywords_4 = get_var('keywords-4');
+    $keyword_selector_4 = str_replace('{PART}', '.kw4', $part_selector_1);
+    if ( $keywords_4 != '' )
+    {
+        $stylesheet .= "\n$keyword_selector_4 {{$keywords_4}}";
+    }
+
+    // Do other lexics
+    $comments = get_var('comments');
+    $comment_selector = str_replace(array('{PART1}', '{PART2}', '{PART3}'), array('.co1', '.co2', '.coMULTI'), $part_selector_3);
+    if ( $comments != '' )
+    {
+        $stylesheet .= "\n$comment_selector {{$comments}}";
+    }
+
+    $esc = get_var('escaped-chars');
+    $esc_selector = str_replace('{PART}', '.es0', $part_selector_1);
+    if ( $esc != '' )
+    {
+        $stylesheet .= "\n$esc_selector {{$esc}}";
+    }
+
+    $brackets = get_var('brackets');
+    $brk_selector = str_replace('{PART}', '.br0', $part_selector_1);
+    if ( $brackets != '' )
+    {
+        $stylesheet .= "\n$brk_selector {{$brackets}}";
+    }
+
+    $strings = get_var('strings');
+    $string_selector = str_replace('{PART}', '.st0', $part_selector_1);
+    if ( $strings != '' )
+    {
+        $stylesheet .= "\n$string_selector {{$strings}}";
+    }
+
+    $numbers = get_var('numbers');
+    $num_selector = str_replace('{PART}', '.nu0', $part_selector_1);
+    if ( $numbers != '' )
+    {
+        $stylesheet .= "\n$num_selector {{$numbers}}";
+    }
+
+    $methods = get_var('methods');
+    $method_selector = str_replace('{PART}', '.me0', $part_selector_1);
+    if ( $methods != '' )
+    {
+        $stylesheet .= "\n$method_selector {{$methods}}";
+    }
+
+    echo "<pre>$stylesheet</pre>";
+
+    make_footer();
+}
+
+?>

+ 59 - 0
lib/geshi/contrib/cssgen2.php

@@ -0,0 +1,59 @@
+<?php
+/**
+ *  A simple script which outputs the CSS classes for all languages
+ *  supported by GeSHi. You can access it directly to download
+ *  the CSS file. On *NIX you can also do a simple `php cssgen.php > geshi.css`.
+ *
+ *   This file is part of GeSHi.
+ *
+ *  GeSHi is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  GeSHi is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with GeSHi; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * @package    geshi
+ * @subpackage contrib
+ * @author     revulo <revulon@gmail.com>
+ * @copyright  2008 revulo
+ * @license    http://gnu.org/copyleft/gpl.html GNU GPL
+ *
+ */
+
+require dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'geshi.php';
+$geshi = new GeSHi;
+
+$languages = array();
+if ($handle = opendir($geshi->language_path)) {
+    while (($file = readdir($handle)) !== false) {
+        $pos = strpos($file, '.');
+        if ($pos > 0 && substr($file, $pos) == '.php') {
+            $languages[] = substr($file, 0, $pos);
+        }
+    }
+    closedir($handle);
+}
+sort($languages);
+
+header('Content-Type: application/octet-stream');
+header('Content-Disposition: attachment; filename="geshi.css"');
+
+echo "/**\n".
+     " * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann\n" .
+     " * (http://qbnz.com/highlighter/ and http://geshi.org/)\n".
+     " */\n";
+
+foreach ($languages as $language) {
+    $geshi->set_language($language);
+    // note: the false argument is required for stylesheet generators, see API documentation
+    $css = $geshi->get_stylesheet(false);
+    echo preg_replace('/^\/\*\*.*?\*\//s', '', $css);
+}

+ 217 - 0
lib/geshi/contrib/example.php

@@ -0,0 +1,217 @@
+<?php
+/**
+ * GeSHi example script
+ *
+ * Just point your browser at this script (with geshi.php in the parent directory,
+ * and the language files in subdirectory "../geshi/")
+ *
+ * @author  Nigel McNie
+ * @version $Id: example.php 2510 2012-06-27 15:57:55Z reedy_boy $
+ */
+header('Content-Type: text/html; charset=utf-8');
+
+error_reporting(E_ALL);
+
+// Rudimentary checking of where GeSHi is. In a default install it will be in ../, but
+// it could be in the current directory if the include_path is set. There's nowhere else
+// we can reasonably guess.
+if (is_readable('../geshi.php')) {
+    $path = '../';
+} elseif (is_readable('geshi.php')) {
+    $path = './';
+} else {
+    die('Could not find geshi.php - make sure it is in your include path!');
+}
+require $path . 'geshi.php';
+
+$fill_source = false;
+if (isset($_POST['submit'])) {
+    if (get_magic_quotes_gpc()) {
+        $_POST['source'] = stripslashes($_POST['source']);
+    }
+    if (!strlen(trim($_POST['source']))) {
+        $_POST['language'] = preg_replace('#[^a-zA-Z0-9\-_]#', '', $_POST['language']);
+        $_POST['source'] = implode('', @file($path . 'geshi/' . $_POST['language'] . '.php'));
+        $_POST['language'] = 'php';
+    } else {
+        $fill_source = true;
+    }
+
+    // Here's a free demo of how GeSHi works.
+
+    // First the initialisation: source code to highlight and the language to use. Make sure
+    // you sanitise correctly if you use $_POST of course - this very script has had a security
+    // advisory against it in the past because of this. Please try not to use this script on a
+    // live site.
+    $geshi = new GeSHi($_POST['source'], $_POST['language']);
+
+    // Use the PRE_VALID header. This means less output source since we don't have to output &nbsp;
+    // everywhere. Of course it also means you can't set the tab width.
+    // HEADER_PRE_VALID puts the <pre> tag inside the list items (<li>) thus producing valid HTML markup.
+    // HEADER_PRE puts the <pre> tag around the list (<ol>) which is invalid in HTML 4 and XHTML 1
+    // HEADER_DIV puts a <div> tag arount the list (valid!) but needs to replace whitespaces with &nbsp
+    //            thus producing much larger overhead. You can set the tab width though.
+    $geshi->set_header_type(GESHI_HEADER_PRE_VALID);
+
+    // Enable CSS classes. You can use get_stylesheet() to output a stylesheet for your code. Using
+    // CSS classes results in much less output source.
+    $geshi->enable_classes();
+
+    // Enable line numbers. We want fancy line numbers, and we want every 5th line number to be fancy
+    $geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS, 5);
+
+    // Set the style for the PRE around the code. The line numbers are contained within this box (not
+    // XHTML compliant btw, but if you are liberally minded about these things then you'll appreciate
+    // the reduced source output).
+    $geshi->set_overall_style('font: normal normal 90% monospace; color: #000066; border: 1px solid #d0d0d0; background-color: #f0f0f0;', false);
+
+    // Set the style for line numbers. In order to get style for line numbers working, the <li> element
+    // is being styled. This means that the code on the line will also be styled, and most of the time
+    // you don't want this. So the set_code_style reverts styles for the line (by using a <div> on the line).
+    // So the source output looks like this:
+    //
+    // <pre style="[set_overall_style styles]"><ol>
+    // <li style="[set_line_style styles]"><div style="[set_code_style styles]>...</div></li>
+    // ...
+    // </ol></pre>
+    $geshi->set_line_style('color: #003030;', 'font-weight: bold; color: #006060;', true);
+    $geshi->set_code_style('color: #000020;', true);
+
+    // Styles for hyperlinks in the code. GESHI_LINK for default styles, GESHI_HOVER for hover style etc...
+    // note that classes must be enabled for this to work.
+    $geshi->set_link_styles(GESHI_LINK, 'color: #000060;');
+    $geshi->set_link_styles(GESHI_HOVER, 'background-color: #f0f000;');
+
+    // Use the header/footer functionality. This puts a div with content within the PRE element, so it is
+    // affected by the styles set by set_overall_style. So if the PRE has a border then the header/footer will
+    // appear inside it.
+    $geshi->set_header_content('<SPEED> <TIME> GeSHi &copy; 2004-2007, Nigel McNie, 2007-2008 Benny Baumann. View source of example.php for example of using GeSHi');
+    $geshi->set_header_content_style('font-family: sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-bottom: 1px solid #d0d0d0; padding: 2px;');
+
+    // You can use <TIME> and <VERSION> as placeholders
+    $geshi->set_footer_content('Parsed in <TIME> seconds at <SPEED>, using GeSHi <VERSION>');
+    $geshi->set_footer_content_style('font-family: sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-top: 1px solid #d0d0d0; padding: 2px;');
+} else {
+    // make sure we don't preselect any language
+    $_POST['language'] = null;
+}
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <title>GeSHi examples</title>
+    <style type="text/css">
+    <!--
+    <?php
+    if (isset($_POST['submit'])) {
+        // Output the stylesheet. Note it doesn't output the <style> tag
+        echo $geshi->get_stylesheet(true);
+    }
+    ?>
+    html {
+        background-color: #f0f0f0;
+    }
+    body {
+        font-family: Verdana, Arial, sans-serif;
+        margin: 10px;
+        border: 2px solid #e0e0e0;
+        background-color: #fcfcfc;
+        padding: 5px;
+    }
+    h2 {
+        margin: .1em 0 .2em .5em;
+        border-bottom: 1px solid #b0b0b0;
+        color: #b0b0b0;
+        font-weight: normal;
+        font-size: 150%;
+    }
+    h3 {
+        margin: .1em 0 .2em .5em;
+        color: #b0b0b0;
+        font-weight: normal;
+        font-size: 120%;
+    }
+    #footer {
+        text-align: center;
+        font-size: 80%;
+        color: #a9a9a9;
+    }
+    #footer a {
+        color: #9999ff;
+    }
+    textarea {
+        border: 1px solid #b0b0b0;
+        font-size: 90%;
+        color: #333;
+        margin-left: 20px;
+    }
+    select, input {
+        margin-left: 20px;
+    }
+    p {
+        font-size: 90%;
+        margin-left: .5em;
+    }
+    -->
+    </style>
+</head>
+<body>
+<h2>GeSHi Example Script</h2>
+<p>To use this script, make sure that <strong>geshi.php</strong> is in the parent directory or in your
+include_path, and that the language files are in a subdirectory of GeSHi's directory called <strong>geshi/</strong>.</p>
+<p>Enter your source and a language to highlight the source in and submit, or just choose a language to
+have that language file highlighted in PHP.</p>
+<?php
+if (isset($_POST['submit'])) {
+    // The fun part :)
+    echo $geshi->parse_code();
+    echo '<hr />';
+}
+?>
+<form action="<?php echo basename($_SERVER['PHP_SELF']); ?>" method="post">
+<h3>Source to highlight</h3>
+<p>
+<textarea rows="10" cols="60" name="source" id="source"><?php echo $fill_source ? htmlspecialchars($_POST['source']) : '' ?></textarea>
+</p>
+<h3>Choose a language</h3>
+<p>
+<select name="language" id="language">
+<?php
+if (!($dir = @opendir(dirname(__FILE__) . '/geshi'))) {
+    if (!($dir = @opendir(dirname(__FILE__) . '/../geshi'))) {
+        echo '<option>No languages available!</option>';
+    }
+}
+$languages = array();
+while ($file = readdir($dir)) {
+    if ( $file[0] == '.' || strpos($file, '.', 1) === false) {
+        continue;
+    }
+    $lang = substr($file, 0,  strpos($file, '.'));
+    $languages[] = $lang;
+}
+closedir($dir);
+sort($languages);
+foreach ($languages as $lang) {
+    if (isset($_POST['language']) && $_POST['language'] == $lang) {
+        $selected = 'selected="selected"';
+    } else {
+        $selected = '';
+    }
+    echo '<option value="' . $lang . '" '. $selected .'>' . $lang . "</option>\n";
+}
+
+?>
+</select>
+</p>
+<p>
+<input type="submit" name="submit" value="Highlight Source" />
+<input type="submit" name="clear" onclick="document.getElementById('source').value='';document.getElementById('language').value='';return false" value="clear" />
+</p>
+</form>
+<div id="footer">GeSHi &copy; Nigel McNie, 2004, released under the GNU GPL<br />
+For a better demonstration, check out the <a href="http://qbnz.com/highlighter/demo.php">online demo</a>
+</div>
+</body>
+</html>

+ 769 - 0
lib/geshi/contrib/langcheck.php

@@ -0,0 +1,769 @@
+<?php
+/**
+ * GeSHi language file validation script
+ *
+ * Just point your browser at this script (with geshi.php in the parent directory)
+ * and the language files in subdirectory "../geshi/" are being validated
+ *
+ * CLI mode is supported
+ *
+ * @author  Benny Baumann
+ * @version $Id: langcheck.php 2510 2012-06-27 15:57:55Z reedy_boy $
+ */
+header('Content-Type: text/html; charset=utf-8');
+
+set_time_limit(0);
+error_reporting(E_ALL);
+$time_start = explode(' ', microtime());
+
+function colorize($level, $string) {
+    static $colors, $end;
+    if ( !isset($colors) ) {
+      if ( PHP_SAPI != 'cli' ) {
+          $end = '</span>';
+          $colors = array(
+              TYPE_NOTICE => '<span style="color:#080;font-weight:bold;">',
+              TYPE_WARNING => '<span style="color:#CC0; font-weight: bold;">',
+              TYPE_ERROR => '<span style="color:#F00; font-weight: bold;">',
+              TYPE_OK => '<span style="color: #080; font-weight: bold;">'
+          );
+      } else {
+          $end = chr(27).'[0m';
+          $colors = array(
+              TYPE_NOTICE => chr(27).'[1m',
+              TYPE_WARNING => chr(27).'[1;33m',
+              TYPE_ERROR => chr(27).'[1;31m',
+              TYPE_OK => chr(27).'[1;32m'
+          );
+      }
+    }
+
+    if ( !isset($colors[$level]) ) {
+        trigger_error("no colors for level $level", E_USER_ERROR);
+    }
+
+    return $colors[$level].$string.$end;
+}
+
+define ('TYPE_NOTICE', 0);
+define ('TYPE_WARNING', 1);
+define ('TYPE_ERROR', 2);
+define ('TYPE_OK', 3);
+
+$error_abort = false;
+$error_cache = array();
+function output_error_cache(){
+    global $error_cache, $error_abort;
+
+    if(count($error_cache)) {
+        echo colorize(TYPE_ERROR, "Failed");
+        if ( PHP_SAPI == 'cli' ) {
+            echo "\n\n";
+        } else {
+            echo "<br /><ol>\n";
+        }
+        foreach($error_cache as $error_msg) {
+            if ( PHP_SAPI == 'cli' ) {
+              echo "\n";
+            } else {
+              echo "<li>";
+            }
+            switch($error_msg['t']) {
+                case TYPE_NOTICE:
+                    $msg = 'NOTICE';
+                    break;
+                case TYPE_WARNING:
+                    $msg = 'WARNING';
+                    break;
+                case TYPE_ERROR:
+                    $msg = 'ERROR';
+                    break;
+            }
+            echo colorize($error_msg['t'], $msg);
+            if ( PHP_SAPI == 'cli' ) {
+                echo "\t" . $error_msg['m'];
+            } else {
+                echo " " . $error_msg['m'] . "</li>";
+            }
+        }
+        if ( PHP_SAPI == 'cli' ) {
+            echo "\n";
+        } else {
+            echo "</ol>\n";
+        }
+    } else {
+        echo colorize(TYPE_OK, "OK");
+        if ( PHP_SAPI == 'cli' ) {
+            echo "\n";
+        } else {
+            echo "\n<br />";
+        }
+    }
+    echo "\n";
+
+    $error_cache = array();
+}
+
+function report_error($type, $message) {
+    global $error_cache, $error_abort;
+
+    $error_cache[] = array('t' => $type, 'm' => $message);
+    if(TYPE_ERROR == $type) {
+        $error_abort = true;
+    }
+}
+
+function dupfind_strtolower(&$value){
+    $value = strtolower($value);
+}
+
+if ( PHP_SAPI != 'cli' ) { ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <title>GeSHi Language File Validation Script</title>
+    <style type="text/css">
+    <!--
+    html {
+        background-color: #f0f0f0;
+    }
+    body {
+        font-family: Verdana, Arial, sans-serif;
+        margin: 10px;
+        border: 2px solid #e0e0e0;
+        background-color: #fcfcfc;
+        padding: 5px;
+        font-size: 10pt;
+    }
+    h2 {
+        margin: .1em 0 .2em .5em;
+        border-bottom: 1px solid #b0b0b0;
+        color: #b0b0b0;
+        font-weight: normal;
+        font-size: 150%;
+    }
+    h3 {
+        margin: .1em 0 .2em .5em;
+        color: #b0b0b0;
+        font-weight: normal;
+        font-size: 120%;
+    }
+    #footer {
+        text-align: center;
+        font-size: 80%;
+        color: #a9a9a9;
+    }
+    #footer a {
+        color: #9999ff;
+    }
+    textarea {
+        border: 1px solid #b0b0b0;
+        font-size: 90%;
+        color: #333;
+        margin-left: 20px;
+    }
+    select, input {
+        margin-left: 20px;
+    }
+    p {
+        font-size: 90%;
+        margin-left: .5em;
+    }
+    -->
+    </style>
+</head>
+<body>
+<h2>GeSHi Language File Validation Script</h2>
+<p>To use this script, make sure that <strong>geshi.php</strong> is in the
+parent directory or in your include_path, and that the language files are in a
+subdirectory of GeSHi's directory called <strong>geshi/</strong>.</p>
+<p>Everything else will be done by this script automatically. After the script
+finished you should see messages of what could cause trouble with GeSHi or where
+your language files can be improved. Please be patient, as this might take some time.</p>
+
+<ol>
+<li>Checking where to find GeSHi installation ...<?php
+} else { ?>
+<?php echo colorize(TYPE_NOTICE, "#### GeSHi Language File Validation Script ####") ?>
+
+
+To use this script, make sure that <?php echo colorize(TYPE_NOTICE, "geshi.php"); ?> is in the
+parent directory or in your include_path, and that the language files are in a
+subdirectory of GeSHi's directory called <?php echo colorize(TYPE_NOTICE, "geshi/"); ?>.
+
+Everything else will be done by this script automatically. After the script
+finished you should see messages of what could cause trouble with GeSHi or where
+your language files can be improved. Please be patient, as this might take some time.
+
+
+Checking where to find GeSHi installation ...<?php echo "\t";
+}
+
+// Rudimentary checking of where GeSHi is. In a default install it will be in ../, but
+// it could be in the current directory if the include_path is set. There's nowhere else
+// we can reasonably guess.
+if (is_readable('../geshi.php')) {
+    $path = '../';
+} elseif (is_readable('geshi.php')) {
+    $path = './';
+} else {
+    report_error(TYPE_ERROR, 'Could not find geshi.php - make sure it is in your include path!');
+}
+
+if(!$error_abort) {
+    require $path . 'geshi.php';
+
+    if(!class_exists('GeSHi')) {
+        report_error(TYPE_ERROR, 'The GeSHi class was not found, although it seemed we loaded the correct file!');
+    }
+}
+
+if(!$error_abort) {
+    if(!defined('GESHI_LANG_ROOT')) {
+        report_error(TYPE_ERROR, 'There\'s no information present on where to find the language files!');
+    } elseif(!is_dir(GESHI_LANG_ROOT)) {
+        report_error(TYPE_ERROR, 'The path "'.GESHI_LANG_ROOT.'" given, does not ressemble a directory!');
+    } elseif(!is_readable(GESHI_LANG_ROOT)) {
+        report_error(TYPE_ERROR, 'The path "'.GESHI_LANG_ROOT.'" is not readable to this script!');
+    }
+}
+
+output_error_cache();
+
+if(!$error_abort) {
+    if ( PHP_SAPI == 'cli' ) {
+        echo "Listing available language files ...\t\t";
+    } else {
+        echo "</li>\n<li>Listing available language files ... ";
+    }
+
+    if (!($dir = @opendir(GESHI_LANG_ROOT))) {
+        report_error(TYPE_ERROR, 'Error requesting listing for available language files!');
+    }
+
+    $languages = array();
+
+    if(!$error_abort) {
+        while ($file = readdir($dir)) {
+            if (!$file || $file[0] == '.' || strpos($file, '.php') === false) {
+                continue;
+            }
+            $lang = substr($file, 0,  strpos($file, '.'));
+            if(4 != strlen($file) - strlen($lang)) {
+                continue;
+            }
+            $languages[] = $lang;
+        }
+        closedir($dir);
+    }
+
+    $languages = array_unique($languages);
+    sort($languages);
+
+    if(!count($languages)) {
+        report_error(TYPE_WARNING, 'Unable to locate any usable language files in "'.GESHI_LANG_ROOT.'"!');
+    }
+
+    output_error_cache();
+}
+
+if ( PHP_SAPI == 'cli' ) {
+    if (isset($_SERVER['argv'][1]) && in_array($_SERVER['argv'][1], $languages)) {
+        $languages = array($_SERVER['argv'][1]);
+    }
+} else {
+    if (isset($_REQUEST['show']) && in_array($_REQUEST['show'], $languages)) {
+        $languages = array($_REQUEST['show']);
+    }
+}
+
+if(!$error_abort) {
+    foreach ($languages as $lang) {
+
+        if ( PHP_SAPI == 'cli' ) {
+            echo "Validating language file for '$lang' ...\t\t";
+        } else {
+            echo "</li>\n<li>Validating language file for '$lang' ... ";
+        }
+
+        $langfile = GESHI_LANG_ROOT . $lang . '.php';
+
+        $language_data = array();
+
+        if(!is_file($langfile)) {
+            report_error(TYPE_ERROR, 'The path "' .$langfile. '" does not ressemble a regular file!');
+        } elseif(!is_readable($langfile)) {
+            report_error(TYPE_ERROR, 'Cannot read file "' .$langfile. '"!');
+        } else {
+            $langfile_content = file_get_contents($langfile);
+            if(preg_match("/\?>(?:\r?\n|\r(?!\n)){2,}\Z/", $langfile_content)) {
+                report_error(TYPE_ERROR, 'Language file contains trailing empty lines at EOF!');
+            }
+            if(!preg_match("/\?>(?:\r?\n|\r(?!\n))?\Z/", $langfile_content)) {
+                report_error(TYPE_ERROR, 'Language file contains no PHP end marker at EOF!');
+            }
+            if(preg_match("/\t/", $langfile_content)) {
+                report_error(TYPE_NOTICE, 'Language file contains unescaped tabulator chars (probably for indentation)!');
+            }
+            if(preg_match('/^(?:    )*(?!    )(?! \*) /m', $langfile_content)) {
+                report_error(TYPE_NOTICE, 'Language file contains irregular indentation (other than 4 spaces per indentation level)!');
+            }
+
+            if(!preg_match("/\/\*\*((?!\*\/).)*?Author:((?!\*\/).)*?\*\//s", $langfile_content)) {
+                report_error(TYPE_WARNING, 'Language file does not contain a specification of an author!');
+            }
+            if(!preg_match("/\/\*\*((?!\*\/).)*?Copyright:((?!\*\/).)*?\*\//s", $langfile_content)) {
+                report_error(TYPE_WARNING, 'Language file does not contain a specification of the copyright!');
+            }
+            if(!preg_match("/\/\*\*((?!\*\/).)*?Release Version:((?!\*\/).)*?\*\//s", $langfile_content)) {
+                report_error(TYPE_WARNING, 'Language file does not contain a specification of the release version!');
+            }
+            if(!preg_match("/\/\*\*((?!\*\/).)*?Date Started:((?!\*\/).)*?\*\//s", $langfile_content)) {
+                report_error(TYPE_WARNING, 'Language file does not contain a specification of the date it was started!');
+            }
+            if(!preg_match("/\/\*\*((?!\*\/).)*?This file is part of GeSHi\.((?!\*\/).)*?\*\//s", $langfile_content)) {
+                report_error(TYPE_WARNING, 'Language file does not state that it belongs to GeSHi!');
+            }
+            if(!preg_match("/\/\*\*((?!\*\/).)*?language file for GeSHi\.((?!\*\/).)*?\*\//s", $langfile_content)) {
+                report_error(TYPE_WARNING, 'Language file does not state that it is a language file for GeSHi!');
+            }
+            if(!preg_match("/\/\*\*((?!\*\/).)*?GNU General Public License((?!\*\/).)*?\*\//s", $langfile_content)) {
+                report_error(TYPE_WARNING, 'Language file does not state that it is provided under the terms of the GNU GPL!');
+            }
+
+            unset($langfile_content);
+
+            include $langfile;
+
+            if(!isset($language_data)) {
+                report_error(TYPE_ERROR, 'Language file does not contain a $language_data structure to check!');
+            } elseif (!is_array($language_data)) {
+                report_error(TYPE_ERROR, 'Language file contains a $language_data structure which is not an array!');
+            }
+        }
+
+        if(!$error_abort) {
+            if(!isset($language_data['LANG_NAME'])) {
+                report_error(TYPE_ERROR, 'Language file contains no $language_data[\'LANG_NAME\'] specification!');
+            } elseif (!is_string($language_data['LANG_NAME'])) {
+                report_error(TYPE_ERROR, 'Language file contains a $language_data[\'LANG_NAME\'] specification which is not a string!');
+            }
+
+            if(!isset($language_data['COMMENT_SINGLE'])) {
+                report_error(TYPE_ERROR, 'Language file contains no $language_data[\'COMMENT_SIGNLE\'] structure to check!');
+            } elseif (!is_array($language_data['COMMENT_SINGLE'])) {
+                report_error(TYPE_ERROR, 'Language file contains a $language_data[\'COMMENT_SINGLE\'] structure which is not an array!');
+            }
+
+            if(!isset($language_data['COMMENT_MULTI'])) {
+                report_error(TYPE_ERROR, 'Language file contains no $language_data[\'COMMENT_MULTI\'] structure to check!');
+            } elseif (!is_array($language_data['COMMENT_MULTI'])) {
+                report_error(TYPE_ERROR, 'Language file contains a $language_data[\'COMMENT_MULTI\'] structure which is not an array!');
+            }
+
+            if(isset($language_data['COMMENT_REGEXP'])) {
+                if (!is_array($language_data['COMMENT_REGEXP'])) {
+                    report_error(TYPE_ERROR, 'Language file contains a $language_data[\'COMMENT_REGEXP\'] structure which is not an array!');
+                }
+            }
+
+            if(!isset($language_data['QUOTEMARKS'])) {
+                report_error(TYPE_ERROR, 'Language file contains no $language_data[\'QUOTEMARKS\'] structure to check!');
+            } elseif (!is_array($language_data['QUOTEMARKS'])) {
+                report_error(TYPE_ERROR, 'Language file contains a $language_data[\'QUOTEMARKS\'] structure which is not an array!');
+            }
+
+            if(isset($language_data['HARDQUOTE'])) {
+                if (!is_array($language_data['HARDQUOTE'])) {
+                    report_error(TYPE_ERROR, 'Language file contains a $language_data[\'HARDQUOTE\'] structure which is not an array!');
+                }
+            }
+
+            if(!isset($language_data['ESCAPE_CHAR'])) {
+                report_error(TYPE_ERROR, 'Language file contains no $language_data[\'ESCAPE_CHAR\'] specification to check!');
+            } elseif (!is_string($language_data['ESCAPE_CHAR'])) {
+                report_error(TYPE_ERROR, 'Language file contains a $language_data[\'ESCAPE_CHAR\'] specification which is not a string!');
+            } elseif (1 < strlen($language_data['ESCAPE_CHAR'])) {
+                report_error(TYPE_ERROR, 'Language file contains a $language_data[\'ESCAPE_CHAR\'] specification is not empty or exactly one char!');
+            }
+
+            if(!isset($language_data['CASE_KEYWORDS'])) {
+                report_error(TYPE_ERROR, 'Language file contains no $language_data[\'CASE_KEYWORDS\'] specification!');
+            } elseif (!is_int($language_data['CASE_KEYWORDS'])) {
+                report_error(TYPE_ERROR, 'Language file contains a $language_data[\'CASE_KEYWORDS\'] specification which is not an integer!');
+            } elseif (GESHI_CAPS_NO_CHANGE != $language_data['CASE_KEYWORDS'] &&
+                GESHI_CAPS_LOWER != $language_data['CASE_KEYWORDS'] &&
+                GESHI_CAPS_UPPER != $language_data['CASE_KEYWORDS']) {
+                report_error(TYPE_ERROR, 'Language file contains a $language_data[\'CASE_KEYWORDS\'] specification which is neither of GESHI_CAPS_NO_CHANGE, GESHI_CAPS_LOWER nor GESHI_CAPS_UPPER!');
+            }
+
+            if(!isset($language_data['KEYWORDS'])) {
+                report_error(TYPE_ERROR, 'Language file contains no $language_data[\'KEYWORDS\'] structure to check!');
+            } elseif (!is_array($language_data['KEYWORDS'])) {
+                report_error(TYPE_ERROR, 'Language file contains a $language_data[\'KEYWORDS\'] structure which is not an array!');
+            } else {
+                foreach($language_data['KEYWORDS'] as $kw_key => $kw_value) {
+                    if(!is_integer($kw_key)) {
+                        report_error(TYPE_WARNING, "Language file contains an key '$kw_key' in \$language_data['KEYWORDS'] that is not integer!");
+                    } elseif (!is_array($kw_value)) {
+                        report_error(TYPE_ERROR, "Language file contains a \$language_data['KEYWORDS']['$kw_value'] structure which is not an array!");
+                    }
+                }
+            }
+
+            if(!isset($language_data['SYMBOLS'])) {
+                report_error(TYPE_ERROR, 'Language file contains no $language_data[\'SYMBOLS\'] structure to check!');
+            } elseif (!is_array($language_data['SYMBOLS'])) {
+                report_error(TYPE_ERROR, 'Language file contains a $language_data[\'SYMBOLS\'] structure which is not an array!');
+            }
+
+            if(!isset($language_data['CASE_SENSITIVE'])) {
+                report_error(TYPE_ERROR, 'Language file contains no $language_data[\'CASE_SENSITIVE\'] structure to check!');
+            } elseif (!is_array($language_data['CASE_SENSITIVE'])) {
+                report_error(TYPE_ERROR, 'Language file contains a $language_data[\'CASE_SENSITIVE\'] structure which is not an array!');
+            } else {
+                foreach($language_data['CASE_SENSITIVE'] as $cs_key => $cs_value) {
+                    if(!is_integer($cs_key)) {
+                        report_error(TYPE_WARNING, "Language file contains an key '$cs_key' in \$language_data['CASE_SENSITIVE'] that is not integer!");
+                    } elseif (!is_bool($cs_value)) {
+                        report_error(TYPE_ERROR, "Language file contains a Case Sensitivity specification for \$language_data['CASE_SENSITIVE']['$cs_value'] which is not a boolean!");
+                    }
+                }
+            }
+
+            if(!isset($language_data['URLS'])) {
+                report_error(TYPE_ERROR, 'Language file contains no $language_data[\'URLS\'] structure to check!');
+            } elseif (!is_array($language_data['URLS'])) {
+                report_error(TYPE_ERROR, 'Language file contains a $language_data[\'URLS\'] structure which is not an array!');
+            } else {
+                foreach($language_data['URLS'] as $url_key => $url_value) {
+                    if(!is_integer($url_key)) {
+                        report_error(TYPE_WARNING, "Language file contains an key '$url_key' in \$language_data['URLS'] that is not integer!");
+                    } elseif (!is_string($url_value)) {
+                        report_error(TYPE_ERROR, "Language file contains a Documentation URL specification for \$language_data['URLS']['$url_value'] which is not a string!");
+                    } elseif (preg_match('#&([^;]*(=|$))#U', $url_value)) {
+                        report_error(TYPE_ERROR, "Language file contains unescaped ampersands (&amp;) in \$language_data['URLS']!");
+                    }
+                }
+            }
+
+            if(!isset($language_data['OOLANG'])) {
+                report_error(TYPE_ERROR, 'Language file contains no $language_data[\'OOLANG\'] specification!');
+            } elseif (!is_int($language_data['OOLANG']) && !is_bool($language_data['OOLANG'])) {
+                report_error(TYPE_ERROR, 'Language file contains a $language_data[\'OOLANG\'] specification which is neither boolean nor integer!');
+            } elseif (false !== $language_data['OOLANG'] &&
+                true !== $language_data['OOLANG'] &&
+                2 !== $language_data['OOLANG']) {
+                report_error(TYPE_ERROR, 'Language file contains a $language_data[\'OOLANG\'] specification which is neither of false, true or 2!');
+            }
+
+            if(!isset($language_data['OBJECT_SPLITTERS'])) {
+                report_error(TYPE_ERROR, 'Language file contains no $language_data[\'OBJECT_SPLITTERS\'] structure to check!');
+            } elseif (!is_array($language_data['OBJECT_SPLITTERS'])) {
+                report_error(TYPE_ERROR, 'Language file contains a $language_data[\'OBJECT_SPLITTERS\'] structure which is not an array!');
+            }
+
+            if(!isset($language_data['REGEXPS'])) {
+                report_error(TYPE_ERROR, 'Language file contains no $language_data[\'REGEXPS\'] structure to check!');
+            } elseif (!is_array($language_data['REGEXPS'])) {
+                report_error(TYPE_ERROR, 'Language file contains a $language_data[\'REGEXPS\'] structure which is not an array!');
+            }
+
+            if(!isset($language_data['STRICT_MODE_APPLIES'])) {
+                report_error(TYPE_ERROR, 'Language file contains no $language_data[\'STRICT_MODE_APPLIES\'] specification!');
+            } elseif (!is_int($language_data['STRICT_MODE_APPLIES'])) {
+                report_error(TYPE_ERROR, 'Language file contains a $language_data[\'STRICT_MODE_APPLIES\'] specification which is not an integer!');
+            } elseif (GESHI_MAYBE != $language_data['STRICT_MODE_APPLIES'] &&
+                GESHI_ALWAYS != $language_data['STRICT_MODE_APPLIES'] &&
+                GESHI_NEVER != $language_data['STRICT_MODE_APPLIES']) {
+                report_error(TYPE_ERROR, 'Language file contains a $language_data[\'STRICT_MODE_APPLIES\'] specification which is neither of GESHI_MAYBE, GESHI_ALWAYS nor GESHI_NEVER!');
+            }
+
+            if(!isset($language_data['SCRIPT_DELIMITERS'])) {
+                report_error(TYPE_ERROR, 'Language file contains no $language_data[\'SCRIPT_DELIMITERS\'] structure to check!');
+            } elseif (!is_array($language_data['SCRIPT_DELIMITERS'])) {
+                report_error(TYPE_ERROR, 'Language file contains a $language_data[\'SCRIPT_DELIMITERS\'] structure which is not an array!');
+            }
+
+            if(!isset($language_data['HIGHLIGHT_STRICT_BLOCK'])) {
+                report_error(TYPE_ERROR, 'Language file contains no $language_data[\'HIGHLIGHT_STRICT_BLOCK\'] structure to check!');
+            } elseif (!is_array($language_data['HIGHLIGHT_STRICT_BLOCK'])) {
+                report_error(TYPE_ERROR, 'Language file contains a $language_data[\'HIGHLIGHT_STRICT_BLOCK\'] structure which is not an array!');
+            }
+
+            if(isset($language_data['TAB_WIDTH'])) {
+                if (!is_int($language_data['TAB_WIDTH'])) {
+                    report_error(TYPE_ERROR, 'Language file contains a $language_data[\'TAB_WIDTH\'] specification which is not an integer!');
+                } elseif (1 > $language_data['TAB_WIDTH']) {
+                    report_error(TYPE_ERROR, 'Language file contains a $language_data[\'TAB_WIDTH\'] specification which is less than 1!');
+                }
+            }
+
+            if(isset($language_data['PARSER_CONTROL'])) {
+                if (!is_array($language_data['PARSER_CONTROL'])) {
+                    report_error(TYPE_ERROR, 'Language file contains a $language_data[\'PARSER_CONTROL\'] structure which is not an array!');
+                }
+            }
+
+            if(!isset($language_data['STYLES'])) {
+                report_error(TYPE_ERROR, 'Language file contains no $language_data[\'STYLES\'] structure to check!');
+            } elseif (!is_array($language_data['STYLES'])) {
+                report_error(TYPE_ERROR, 'Language file contains a $language_data[\'STYLES\'] structure which is not an array!');
+            } else {
+                $style_arrays = array('KEYWORDS', 'COMMENTS', 'ESCAPE_CHAR',
+                    'BRACKETS', 'STRINGS', 'NUMBERS', 'METHODS', 'SYMBOLS',
+                    'REGEXPS', 'SCRIPT');
+                foreach($style_arrays as $style_kind) {
+                    if(!isset($language_data['STYLES'][$style_kind])) {
+                        report_error(TYPE_ERROR, "Language file contains no \$language_data['STYLES']['$style_kind'] structure to check!");
+                    } elseif (!is_array($language_data['STYLES'][$style_kind])) {
+                        report_error(TYPE_ERROR, "Language file contains a \$language_data['STYLES\']['$style_kind'] structure which is not an array!");
+                    } else {
+                        foreach($language_data['STYLES'][$style_kind] as $sk_key => $sk_value) {
+                            if(!is_int($sk_key) && ('COMMENTS' != $style_kind && 'MULTI' != $sk_key)
+                                && !(('STRINGS' == $style_kind || 'ESCAPE_CHAR' == $style_kind) && 'HARD' == $sk_key)) {
+                                report_error(TYPE_WARNING, "Language file contains an key '$sk_key' in \$language_data['STYLES']['$style_kind'] that is not integer!");
+                            } elseif (!is_string($sk_value)) {
+                                report_error(TYPE_WARNING, "Language file contains a CSS specification for \$language_data['STYLES']['$style_kind'][$key] which is not a string!");
+                            }
+                        }
+                    }
+                }
+
+                unset($style_arrays);
+            }
+        }
+
+        if(!$error_abort) {
+            //Initial sanity checks survived? --> Let's dig deeper!
+            foreach($language_data['KEYWORDS'] as $key => $keywords) {
+                if(!isset($language_data['CASE_SENSITIVE'][$key])) {
+                    report_error(TYPE_ERROR, "Language file contains no \$language_data['CASE_SENSITIVE'] specification for keyword group $key!");
+                }
+                if(!isset($language_data['URLS'][$key])) {
+                    report_error(TYPE_ERROR, "Language file contains no \$language_data['URLS'] specification for keyword group $key!");
+                }
+                if(empty($keywords)) {
+                    report_error(TYPE_WARNING, "Language file contains an empty keyword list in \$language_data['KEYWORDS'] for group $key!");
+                }
+                foreach($keywords as $id => $kw) {
+                    if(!is_string($kw)) {
+                        report_error(TYPE_WARNING, "Language file contains an non-string entry at \$language_data['KEYWORDS'][$key][$id]!");
+                    } elseif (!strlen($kw)) {
+                        report_error(TYPE_ERROR, "Language file contains an empty string entry at \$language_data['KEYWORDS'][$key][$id]!");
+                    } elseif (preg_match('/^([\(\)\{\}\[\]\^=.,:;\-+\*\/%\$\"\'\?]|&[\w#]\w*;)+$/i', $kw)) {
+                        report_error(TYPE_NOTICE, "Language file contains an keyword ('$kw') at \$language_data['KEYWORDS'][$key][$id] which seems to be better suited for the symbols section!");
+                    }
+                }
+                if(isset($language_data['CASE_SENSITIVE'][$key]) && !$language_data['CASE_SENSITIVE'][$key]) {
+                    array_walk($keywords, 'dupfind_strtolower');
+                }
+                if(count($keywords) != count(array_unique($keywords))) {
+                    $kw_diffs = array_count_values($keywords);
+                    foreach($kw_diffs as $kw => $kw_count) {
+                        if($kw_count > 1) {
+                            report_error(TYPE_WARNING, "Language file contains per-group duplicate keyword '$kw' in \$language_data['KEYWORDS'][$key]!");
+                        }
+                    }
+                }
+            }
+
+            $disallowed_before = "(?<![a-zA-Z0-9\$_\|\#;>|^&";
+            $disallowed_after = "(?![a-zA-Z0-9_\|%\\-&;";
+
+            foreach($language_data['KEYWORDS'] as $key => $keywords) {
+                foreach($language_data['KEYWORDS'] as $key2 => $keywords2) {
+                    if($key2 <= $key) {
+                        continue;
+                    }
+                    $kw_diffs = array_intersect($keywords, $keywords2);
+                    foreach($kw_diffs as $kw) {
+                        if(isset($language_data['PARSER_CONTROL']['KEYWORDS'])) {
+                            //Check the precondition\post-cindition for the involved keyword groups
+                            $g1_pre = $disallowed_before;
+                            $g2_pre = $disallowed_before;
+                            $g1_post = $disallowed_after;
+                            $g2_post = $disallowed_after;
+                            if(isset($language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_BEFORE'])) {
+                                $g1_pre = $language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_BEFORE'];
+                                $g2_pre = $language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_BEFORE'];
+                            }
+                            if(isset($language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_AFTER'])) {
+                                $g1_post = $language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_AFTER'];
+                                $g2_post = $language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_AFTER'];
+                            }
+
+                            if(isset($language_data['PARSER_CONTROL']['KEYWORDS'][$key]['DISALLOWED_BEFORE'])) {
+                                $g1_pre = $language_data['PARSER_CONTROL']['KEYWORDS'][$key]['DISALLOWED_BEFORE'];
+                            }
+                            if(isset($language_data['PARSER_CONTROL']['KEYWORDS'][$key]['DISALLOWED_AFTER'])) {
+                                $g1_post = $language_data['PARSER_CONTROL']['KEYWORDS'][$key]['DISALLOWED_AFTER'];
+                            }
+
+                            if(isset($language_data['PARSER_CONTROL']['KEYWORDS'][$key2]['DISALLOWED_BEFORE'])) {
+                                $g2_pre = $language_data['PARSER_CONTROL']['KEYWORDS'][$key2]['DISALLOWED_BEFORE'];
+                            }
+                            if(isset($language_data['PARSER_CONTROL']['KEYWORDS'][$key2]['DISALLOWED_AFTER'])) {
+                                $g2_post = $language_data['PARSER_CONTROL']['KEYWORDS'][$key2]['DISALLOWED_AFTER'];
+                            }
+
+                            if($g1_pre != $g2_pre || $g1_post != $g2_post) {
+                                continue;
+                            }
+                        }
+                        report_error(TYPE_WARNING, "Language file contains cross-group duplicate keyword '$kw' in \$language_data['KEYWORDS'][$key] and \$language_data['KEYWORDS'][$key2]!");
+                    }
+                }
+            }
+            foreach($language_data['CASE_SENSITIVE'] as $key => $keywords) {
+                if(!isset($language_data['KEYWORDS'][$key]) && $key != GESHI_COMMENTS) {
+                    report_error(TYPE_WARNING, "Language file contains an superfluous \$language_data['CASE_SENSITIVE'] specification for non-existing keyword group $key!");
+                }
+            }
+            foreach($language_data['URLS'] as $key => $keywords) {
+                if(!isset($language_data['KEYWORDS'][$key])) {
+                    report_error(TYPE_WARNING, "Language file contains an superfluous \$language_data['URLS'] specification for non-existing keyword group $key!");
+                }
+            }
+            foreach($language_data['STYLES']['KEYWORDS'] as $key => $keywords) {
+                if(!isset($language_data['KEYWORDS'][$key])) {
+                    report_error(TYPE_WARNING, "Language file contains an superfluous \$language_data['STYLES']['KEYWORDS'] specification for non-existing keyword group $key!");
+                }
+            }
+
+            foreach($language_data['COMMENT_SINGLE'] as $ck => $cv) {
+                if(!is_int($ck)) {
+                    report_error(TYPE_WARNING, "Language file contains an key '$ck' in \$language_data['COMMENT_SINGLE'] that is not integer!");
+                }
+                if(!is_string($cv)) {
+                    report_error(TYPE_WARNING, "Language file contains an non-string entry at \$language_data['COMMENT_SINGLE'][$ck]!");
+                }
+                if(!isset($language_data['STYLES']['COMMENTS'][$ck])) {
+                    report_error(TYPE_WARNING, "Language file contains no \$language_data['STYLES']['COMMENTS'] specification for comment group $ck!");
+                }
+            }
+            if(isset($language_data['COMMENT_REGEXP'])) {
+                foreach($language_data['COMMENT_REGEXP'] as $ck => $cv) {
+                    if(!is_int($ck)) {
+                        report_error(TYPE_WARNING, "Language file contains an key '$ck' in \$language_data['COMMENT_REGEXP'] that is not integer!");
+                    }
+                    if(!is_string($cv)) {
+                        report_error(TYPE_WARNING, "Language file contains an non-string entry at \$language_data['COMMENT_REGEXP'][$ck]!");
+                    }
+                    if(!isset($language_data['STYLES']['COMMENTS'][$ck])) {
+                        report_error(TYPE_WARNING, "Language file contains no \$language_data['STYLES']['COMMENTS'] specification for comment group $ck!");
+                    }
+                }
+            }
+            foreach($language_data['STYLES']['COMMENTS'] as $ck => $cv) {
+                if($ck != 'MULTI' && !isset($language_data['COMMENT_SINGLE'][$ck]) &&
+                    !isset($language_data['COMMENT_REGEXP'][$ck])) {
+                    report_error(TYPE_NOTICE, "Language file contains an superfluous \$language_data['STYLES']['COMMENTS'] specification for Single Line or Regular-Expression Comment key $ck!");
+                }
+            }
+            if (isset($language_data['STYLES']['STRINGS']['HARD'])) {
+                if (empty($language_data['HARDQUOTE'])) {
+                    report_error(TYPE_NOTICE, "Language file contains superfluous \$language_data['STYLES']['STRINGS'] specification for key 'HARD', but no 'HARDQUOTE's are defined!");
+                }
+                unset($language_data['STYLES']['STRINGS']['HARD']);
+            }
+            foreach($language_data['STYLES']['STRINGS'] as $sk => $sv) {
+                if($sk && !isset($language_data['QUOTEMARKS'][$sk])) {
+                    report_error(TYPE_NOTICE, "Language file contains an superfluous \$language_data['STYLES']['STRINGS'] specification for non-existing quotemark key $sk!");
+                }
+            }
+
+            foreach($language_data['REGEXPS'] as $rk => $rv) {
+                if(!is_int($rk)) {
+                    report_error(TYPE_WARNING, "Language file contains an key '$rk' in \$language_data['REGEXPS'] that is not integer!");
+                }
+                if(is_string($rv)) {
+                    //Check for unmasked / in regular expressions ...
+                    if(empty($rv)) {
+                        report_error(TYPE_WARNING, "Language file contains an empty regular expression at \$language_data['REGEXPS'][$rk]!");
+                    } else {
+                        if(preg_match("/(?<!\\\\)\//s", $rv)) {
+                            report_error(TYPE_WARNING, "Language file contains a regular expression with an unmasked / character at \$language_data['REGEXPS'][$rk]!");
+                        } elseif (preg_match("/(?<!<)(\\\\\\\\)*\\\\\|(?!>)/s", $rv)) {
+                            report_error(TYPE_WARNING, "Language file contains a regular expression with an unescaped match for a pipe character '|' which needs escaping as '&lt;PIPE&gt;' instead at \$language_data['REGEXPS'][$rk]!");
+                        }
+                    }
+                } elseif(is_array($rv)) {
+                    if(!isset($rv[GESHI_SEARCH])) {
+                        report_error(TYPE_ERROR, "Language file contains no GESHI_SEARCH entry in extended regular expression at \$language_data['REGEXPS'][$rk]!");
+                    } elseif(!is_string($rv[GESHI_SEARCH])) {
+                        report_error(TYPE_ERROR, "Language file contains a GESHI_SEARCH entry in extended regular expression at \$language_data['REGEXPS'][$rk] which is not a string!");
+                    } else {
+                        if(preg_match("/(?<!\\\\)\//s", $rv[GESHI_SEARCH])) {
+                            report_error(TYPE_WARNING, "Language file contains a regular expression with an unmasked / character at \$language_data['REGEXPS'][$rk]!");
+                        } elseif (preg_match("/(?<!<)(\\\\\\\\)*\\\\\|(?!>)/s", $rv[GESHI_SEARCH])) {
+                            report_error(TYPE_WARNING, "Language file contains a regular expression with an unescaped match for a pipe character '|' which needs escaping as '&lt;PIPE&gt;' instead at \$language_data['REGEXPS'][$rk]!");
+                        }
+                    }
+                    if(!isset($rv[GESHI_REPLACE])) {
+                        report_error(TYPE_WARNING, "Language file contains no GESHI_REPLACE entry in extended regular expression at \$language_data['REGEXPS'][$rk]!");
+                    } elseif(!is_string($rv[GESHI_REPLACE])) {
+                        report_error(TYPE_ERROR, "Language file contains a GESHI_REPLACE entry in extended regular expression at \$language_data['REGEXPS'][$rk] which is not a string!");
+                    }
+                    if(!isset($rv[GESHI_MODIFIERS])) {
+                        report_error(TYPE_WARNING, "Language file contains no GESHI_MODIFIERS entry in extended regular expression at \$language_data['REGEXPS'][$rk]!");
+                    } elseif(!is_string($rv[GESHI_MODIFIERS])) {
+                        report_error(TYPE_ERROR, "Language file contains a GESHI_MODIFIERS entry in extended regular expression at \$language_data['REGEXPS'][$rk] which is not a string!");
+                    }
+                    if(!isset($rv[GESHI_BEFORE])) {
+                        report_error(TYPE_WARNING, "Language file contains no GESHI_BEFORE entry in extended regular expression at \$language_data['REGEXPS'][$rk]!");
+                    } elseif(!is_string($rv[GESHI_BEFORE])) {
+                        report_error(TYPE_ERROR, "Language file contains a GESHI_BEFORE entry in extended regular expression at \$language_data['REGEXPS'][$rk] which is not a string!");
+                    }
+                    if(!isset($rv[GESHI_AFTER])) {
+                        report_error(TYPE_WARNING, "Language file contains no GESHI_AFTER entry in extended regular expression at \$language_data['REGEXPS'][$rk]!");
+                    } elseif(!is_string($rv[GESHI_AFTER])) {
+                        report_error(TYPE_ERROR, "Language file contains a GESHI_AFTER entry in extended regular expression at \$language_data['REGEXPS'][$rk] which is not a string!");
+                    }
+                } else {
+                    report_error(TYPE_WARNING, "Language file contains an non-string and non-array entry at \$language_data['REGEXPS'][$rk]!");
+                }
+                if(!isset($language_data['STYLES']['REGEXPS'][$rk])) {
+                    report_error(TYPE_WARNING, "Language file contains no \$language_data['STYLES']['REGEXPS'] specification for regexp group $rk!");
+                }
+            }
+            foreach($language_data['STYLES']['REGEXPS'] as $rk => $rv) {
+                if(!isset($language_data['REGEXPS'][$rk])) {
+                    report_error(TYPE_NOTICE, "Language file contains an superfluous \$language_data['STYLES']['REGEXPS'] specification for regexp key $rk!");
+                }
+            }
+
+
+        }
+
+        output_error_cache();
+
+        flush();
+
+        if($error_abort) {
+            break;
+        }
+    }
+}
+
+$time_end = explode(' ', microtime());
+$time_diff = $time_end[0] + $time_end[1] - $time_start[0] - $time_start[1];
+
+if ( PHP_SAPI != 'cli' ) {
+?></li>
+</ol>
+
+<p>Validation process completed in <? printf("%.2f", $time_diff); ?> seconds.</p>
+
+<div id="footer">GeSHi &copy; 2004-2007 Nigel McNie, 2007-2008 Benny Baumann, released under the GNU GPL</div>
+</body>
+</html>
+
+<?php } else { ?>
+
+Validation process completed in <? printf("%.2f", $time_diff); ?> seconds.
+
+GeSHi &copy; 2004-2007 Nigel McNie, 2007-2012 Benny Baumann, released under the GNU GPL
+
+<?php } ?>

File diff suppressed because it is too large
+ 1158 - 0
lib/geshi/contrib/langwiz.php


+ 29 - 0
lib/geshi/docs/BUGS

@@ -0,0 +1,29 @@
+
+                      BUGS - list of known bugs in GeSHi
+                                Version 1.0.8
+
+- Number highlighting is quite poor [possibly better now]
+- I'm not happy with URLS - there still could be extra bugs, and it's rather unflexible
+  (see TODO for a possible fix)
+- "Important" sections for some reason seem to have their spans added after every
+  newline up until the next lexic, instead of stopping at the <END GeSHi> part. In fact,
+  context sensitiveness is quite poor...
+- Using the extra line number highlighting feature without actually using line numbers
+  will result in malformed XHTML (not sure about this one though...)
+- Slow!!! Especially for source with lots of strings in it. GeSHi will work acceptably
+  for sourcecode under 5K (for simple language files like SQL, a 100K file can be
+  highlighted in just 6 seconds), but above about 25K things get a little slow... If
+  you're using this as part of some larger software, you may want to think about
+  making some sort of "cache" effect to speed things up and reduce server load.
+- The result is built by string replacement instead of by building another string based
+  on the source, that would be much safer. The focus of releases beyond 1.0.7 will be on
+  changing this behaviour, which may well fix some of the other bugs mentioned above.
+- As of 1.0.7.1, dots (.) are allowed before keywords. This may change highlighting of some
+  things slightly, if you notice anything odd about the highlighting then please report
+  it to me.
+- Perl/Javascript /.../ regex syntax is only supported basically and there's no
+  guarantee it is working all the time.
+- The <pre> header output is not XHTML compliant. Please use the <div> header instead.
+
+Send any bug reports to BenBE@omorphia.de, or submit them via the bug tracker at
+sourceforge (http://sourceforge.net/tracker/?group_id=114997&atid=670231)

+ 923 - 0
lib/geshi/docs/CHANGES

@@ -0,0 +1,923 @@
+
+              CHANGES - Changelog for GeSHi (geshi.php only)
+
+Changes to the code are listed under the version they occured in, with who suggested
+it by each one (if there's nobody listed as suggesting it I dreamed it up :)). Users
+who suggested an idea often also provided the code that was used as a basis for the
+changes - thanks to all who suggested these ideas and gave me the code to show me how!
+
+Language files listed under each version were made by the author beside them, and then
+modified by me for consistency/bug fixing.
+
+Please send any bug reports to BenBE@omorphia.de, or use the bug report tracker
+at sourceforge (http://sourceforge.net/tracker/?group_id=114997&atid=670231)
+
+Version 1.0.8.11
+  -  Added language files
+     * ARM (Marat Dukhan)
+     * Asymptote (Manuel Yguel)
+     * DCL (Petr Hendl)
+     * DCPU-16 (Benny Baumann)
+     * FreeSWITCH (James Rose)
+     * Haxe (Andy Li, John Liao)
+     * LDIF (Bruno Harbulot)
+     * Nagios (Albéric de Pertat)
+     * Octave (Carnë Draug, Juan Pablo Carbajal)
+     * ParaSail (sttaft)
+     * PARI/GP (Charles R Greathouse IV)
+     * Python for S60 (Sohan Basak)
+     * Rexx (Jon Wolfers)
+     * SPARK (Phil Thornley)
+     * SPARQL (Karima Rafes)
+     * StoneScript (Archimmersion)
+     * UPC (Viraj Sinha)
+     * Urbi (Alexandre Morgand)
+     * Vedit (Pauli Lindgren)
+  -  Updated aliasd.php contrib script (SF#3073275, count)
+  -  Fallback to "text" when extension is unknown (SF#3514714, murkymark, BenBE)
+  -  detect extensions case-insensitive (SF#3514714, murkymark, BenBE)
+  -  Fixed two bugs within contrib scripts included with each release (BenBE)
+  -  Improvements to language files (BenBE)
+     * Symbol and char literal handling for Scala (Paul Butcher, BenBE)
+     * Multiline comments of F# weren't actually multiline (BenBE)
+     * Support for IPv6 addresses in RFC822 messages (BenBE)
+     * Properly handle retrieving names from language files (MikeSee, BenBE)
+     * Changes for improved highlighting of signle line comments and end-of-code indicators
+     * Missing keywords and improved highlighting of comments
+     * Problem with DOS/Batch highlighting breaking out at variables (BenBE)
+     * Addition of MMX/SSE/x86-64 registers and MMX/SSE instructions for
+       ASM language file(up to 4.2) (Dennis Yurichev)
+     * Further improvements to ASM language file to introduce all latest
+       already documented x86 architecture instructions (Marat Dukhan)
+     * Fixed links for R/S+ language file (Fernando H.F.P. da Rosa)
+     * Fix a problem with Delphi/Pascal regarding hex numbers/chars (BenBE)
+     * Fixed a typo and missing keywords for HTML4 and HTML5 (SF#3365452, BenBE)
+     * Fixed a typo in Modula-3 language file (SF#3358216, BenBE)
+     * Added missing keywords for MySQL (SF#3290998, ct-bob, BenBE)
+     * Added missing keywords for Pascal (SF#3176749, BenBE)
+     * Properly detect the keyword that is to be linked (BenBE)
+     * Updated VHDL language file (Kevin Thibedeau)
+     * Added missing keyword for Verilog (SF#3557903, BenBE)
+     * Fixed typo in Haskell causing a keyword to be missing (SF#3529439, BenBE)
+     * Fixed Long String handling for Lua (SF#3541510, Tim Starling)
+     * Updated JavaDoc links for Java language files (SF#3538552, jeneag, BenBE)
+     * CSS keywords incorrectly highlighted as part of identifiers (SF#3554101, BenBE)
+     * CSS3 keywords missing from highlighting (SF#3525084, vlaKoff, BenBE)
+     * Make variable handling compatible to PHP (SF#3489142, BenBE)
+     * Fixed obsolete MySQL documentation links (SF#3441642, BenBE)
+     * Add mising keywords for T-SQL (SF#3435026, BenBE)
+     * Fix discarded text when highlighting TypoScript (SF#3160238, BenBE)
+Version 1.0.8.10
+  -  Added language files
+     * BASCOM AVR (Michal Goralczyk)
+     * C: Loadrunner dialect (Stuart Moncrieff)
+     * CoffeeScript (Trevor Burnham)
+     * EPC (Thorsten Muehlfelder)
+     * Euphoria (Nicholas Koceja)
+     * Falcon (billykater)
+     * HTML5 (Robert Lidberg)
+     * LLVM (Azriel Fasten)
+     * PL/I (Robert Prins)
+     * ProFTPd (Benny Baumann)
+     * PyCon (Benny Baumann)
+     * UnrealScript (pospi)
+     * YAML (Josh Ventura)
+  -  Small bugfix in LangCheck when looking for language files
+  -  Added '-' to list of RX chars that require explicit escaping (SF#3056454, BenBE)
+  -  Minor changes to boundary checks (SF#3077256, BenBE)
+  -  Improvements to language files (BenBE)
+     * Major rework of the ALGOL68 language file (Neville Dempsey)
+     * LangCheck warnings from GO language file (BenBE)
+     * Some additions to the Objeck language file (Randy Hollines)
+     * Properly highlight infinity as numbers for J (Ric Sherlock)
+     * Improved GDB Backtrace language file (Milian Wolff)
+     * Updated Liberty BASIC language file (Chris Iverson)
+     * Fixed a small issue with detection of division vs. regular expressions
+       for ActionScript 3 and JavaScript (Kevin Day)
+     * Fixed Escape handling for CSS (SF#3080513, yecril71pl, BenBE)
+     * Additional comment styles for SAS (SF#3024708, ahnolds, BenBE)
+     * Updated keyword list for TeraTerm (Boris Maisuradze)
+     * Incorrect handling of /**/ comments in Javascript (BenBE)
+     * Support for mod_upload_progress in Apache Config files (BenBE)
+     * Prefix operator handling in F# was broken (BenBE)
+     * CDATA handling for html4strict (BenBE)
+     * Common subcommands for Apache, APT, CVS, Git, SVN and YUM for Bash (BenBE)
+     * Limited support for prompt detection in single line Bash snippets (BenBE)
+     * Added functions of the C standard library (BenBE)
+     * Rework of Lua to use GeSHi's features better (BenBE)
+     * Language file improvements for Python (Zbyszek Szmek)
+     * Fixed documentation links for Groovy (SF#3152356, lifeisfoo)
+     * Fixed incorrect highlighting of certain keywords in Erlang (SF#3138853, BenBE)
+     * Escape chars in C++/C++Qt handled incorrectly (SF#3122706, C. Pötsch)
+     * Empty parameters of LaTeX commands tipped the highlighting off (SF#3098329, James Oldfield, BenBE)
+     * Additional Keywords and minor tweaks to Logtalk (Paulo Moura)
+Version 1.0.8.9
+  -  Added language files
+     * Algol68 (Neville Dempsey)
+     * E (Kevin Reid)
+     * FormulaOne (Juro Bystricky)
+     * Go (Markus Jarderot)
+     * Liberty BASIC (Chris Iverson)
+     * MOS 6502/6510 Assemblers (Warren Willmey)
+     * Motorola 68k assembler (Warren Willmey)
+     * Objeck Programming Language (Randy Hollines)
+     * ZXBasic (Jose Rodriguez)
+  -  Added support for $-prefixed hex numbers and @-prefixed octal numbers
+  -  Added Parser Control for languages to tell when numbers are present
+     inside of non-string parts
+  -  Introduced querying supported/known languages directly
+  -  Introduced querying full language names without loading the language file
+  -  Improvements to language files (BenBE)
+     * Added loads of keywords for generic SQL highlighting (Jürgen Thomas)
+Version 1.0.8.8
+  -  Added language files
+     * ChaiScript (Jason Turner & Jonathan Turner)
+     * Genie (Nicolas Joseph)
+     * GwBasic (José Gabriel Moya Yangüela)
+     * HicEst (Georg Petrich)
+     * Icon (Matt Oates)
+     * MagikSF (Sjoerd van Leent)
+     * Modula 2 (Benjamin Kowarsch)
+     * Oz (Wolfgang Meyer)
+     * PCRE (BenBE)
+     * PostgreSQL (Christophe Chauvet)
+     * q/kdb+ (Ian Roddis)
+     * RPM Specification Files (Paul Grinberg)
+     * Unicon (Matt Oates)
+     * Vala (Nicolas Joseph)
+     * XBasic (José Gabriel Moya Yangüela)
+  -  Improvements to language files (BenBE)
+     * Major reworks and improvements to OCaml language file (BenBE)
+     * Removed duplicate entries from keyword groups of VIM language file (Segaja)
+     * Properly protect Regexps against GeSHi Black Magic in Matlab (BenBE)
+     * Added support for Block Comments in PowerShell (BenBE)
+     * Added some keywords for VB; split into multiple groups (leejkennedy, BenBE)
+     * Basic Heredoc Support for Ruby (BenBE)
+Version 1.0.8.7
+  -  Added language files
+     * Autoconf (Mihai Vasilian)
+     * ECMAScript (Michel Mariani)
+     * J (Ric Sherlock)
+     * OpenBSD Packet Filter (David Berard)
+     * Oxygene / Delphi Prism (Carlo Kok)
+  -  Minor change in INT_BASIC number regexp to support '..' range operator
+     as to be found in most Pascal-like languages (BenBE)
+  -  Fixed an issue with Hardquotes for empty strings (like '' in Delphi) (BenBE)
+  -  Introduced a fix for improved performance when matching numbers (BenBE)
+  -  Improvements to language files (BenBE)
+     * Fixed broken links in Prolog language file (BenBE)
+     * Fixed keywords in generics expressions in Java5 (BenBE)
+     * Added support for import static in Java5 (BenBE)
+     * Added Standard Integer Types for C and c++ (BenBE)
+     * Fixed some regexp issues in Erlang (BenBE)
+     * Added some missing keywords for Clojure (BenBE)
+     * Added some missing keywords for Lisp (BenBE)
+     * Fixed a problem with variable names in Prolog (BenBE)
+     * Some color changes for AutoIt (BenBE)
+     * Added support for basic include directive processing for AutoIt (BenBE)
+     * Added support for ::-style labels as comments (SF#2947393, BenBE)
+     * Removed backslash as Escape Char in T-SQL (SF#2939199, Bruno Braga)
+     * Added Nested Comments Support for Haskell (SF#2922317, BenBE)
+     * Fixed Comments for VIM, added some keywords, proposed porting of
+       Regular Expression markup from Perl (SF#2818047, psycojoker, BenBE)
+     * Fixed warnings for Language Check of Tcl (BenBE)
+Version 1.0.8.6
+  -  Added language files
+     * Clojure (Jess Johnson)
+     * Cuesheet (Benny Baumann)
+     * F# (Julien Ortin)
+     * GAMBAS (Jesus Guardon)
+     * Logtalk (Paulo Moura)
+     * MapBasic (Tomasz Berus)
+     * NewLisp (cormullion)
+     * Perl 6 (Kodi Arfer)
+     * Pike (Rick E.)
+     * SystemVerilog (Sean O'Boyle)
+  -  Reworked parts of the number support (BenBE)
+  -  Improvements to language files (BenBE)
+     * Fixed broken links in R/S+ language file (BenBE)
+     * Fixed an issue with if= argument for dd command (BenBE)
+     * T-SQL should use GESHI_CAPS_NO_CHANGE for keywords (BenBE)
+     * Fixed missed shorthand arg references in Bash (BenBE)
+     * Fixed first line not getting highlighted in diff language (BenBE)
+     * Added some keywords for csharp (RC)
+Version 1.0.8.5
+  -  Added language files
+     * AutoHotkey (Naveen Garg)
+     * Awk (George Pollard)
+     * GADV 4CS (Jason Curl)
+     * jQuery (Rob Loach)
+     * PowerBuilder (Doug Porter)
+     * PureBasic (Gustavo Julio Fiorenza)
+     * R / S+ (Ron Fredericks, Benilton Carvalho)
+  -  Fixed legitimate numbers sometimes missing from highlighting (BenBE)
+  -  Fixed a problem with URLs allowing to break highlighting (BenBE)
+  -  Allowed for String and Number Styles to be set by the API (BenBE)
+  -  Produce valid CSS when languages start with underscore (BenBE)
+  -  Duplicate newlines with PRE_TABLE-Header but w/o linenumbers (SF#2838958, BenBE)
+  -  Improvements to language files (BenBE)
+     * Fixed case-insensitively duplicate keywords (BenBE)
+     * DCS language file contained HARDQUOTE section but no hardquotes (BenBE)
+     * Some additional headers for Email\mbox highlighting (BenBE)
+     * Added some more Keywords for robots.txt highlighting (BenBE)
+     * Added Git commands for bash, ifup/ifdown (BenBE)
+     * Added support for C# and VB.net delegates (SF#2832253, BenBE)
+     * Added support for line numbers, file handles and hex\octal numbers for QBasic (BenBE)
+Version 1.0.8.4
+  -  Added language files
+     * BibTeX (Quinn Taylor)
+     * CMake (Daniel Nelson)
+     * Erlang (Benny Baumann, Dan Forest-Barbier, Uwe Dauernheim)
+     * FO (abas-ERP) (Tan-Vinh Nguyen)
+     * Property Files (Edy Hinzen)
+     * Whois (RPSL format) entries (Benny Baumann)
+  -  Changed INT_BASIC number format to allow numbers followed . at EOL (BenBE)
+  -  Higher prority for keywords over regexps (BenBE)
+  -  Added missing set_script_style API function (BenBE)
+  -  Fixed missing check for comment_regexp preference in HardQuotes (BenBE)
+  -  Fixed a problem with Strict Block Detection if the Strict Block Regexp
+     requires matching groups for itself (BenBE)
+  -  Improvements to language files (BenBE)
+     * Added PCRE regexp support for Action script (SF#2655644, BenBE)
+     * Removed some superfluous keywords from ABAP (BenBE)
+     * Removed duplicate keywords for Progress (BenBE)
+     * Removed duplicate keywords for T-SQL (BenBE)
+     * Linking for PowerShell special variables revised (BenBE)
+     * Fixed linking in ColdFusion (BenBE)
+     * Fixed linking in LaTeX (BenBE)
+     * Fixed linking in mIRC Scripting language (BenBE)
+     * Fixed escape char regexp for C-style languages (BenBE)
+     * Fixed @""-string handling for C# (SF#2789371, BenBE)
+     * Fixed Strict Block Detection for PHP blocks (BenBE)
+     * Changed allowed chars around Powershell operators (SF#2688863, BenBE)
+     * Minor reordering inside of PHP language file (BenBE)
+     * Added missing keywords for ActionScript3 language file (SF#2795005, BenBE)
+     * Added .xrc file extension for XML highlighting (BenBE)
+Version 1.0.8.3
+  -  Added language files
+     * DCS (Stelio Passaris)
+     * Locomotive Basic (Nacho Cabanes)
+     * LSL2 (Linden Scripting Language) (William Fry)
+     * Modula-3 (Martin Bishop)
+     * Oberon-2 (Mike Mol)
+     * Rebol (Lecanu Guillaume)
+  -  Fixed a problem where HardEscapes weren't working when no escape char was given (BenBE)
+  -  Added a PARSER_CONTROL setting to treat whitespace inside of keywords in
+     the language file as "any whitespace" in the source (i.e. "CREATE TABLE"
+     in SQL will match "CREATE\s+TABLE" instead of literally matching) (BenBE)
+  -  Added a possibility to allow setting the style for escape characters (BenBE)
+  -  Improvements to language files (BenBE)
+     * Added some missing Perl keywords and obscure default variables (BenBE)
+     * Allow for escaped colons to appear in CSS names (BenBE, simon)
+     * Added multiline continuation suppoert of preprocessor defines for
+       C, C for Mac, C++ and CC++ with Qt support (BenBE)
+     * keywords for C-based languages are case-sensitive (BenBE)
+     * Broken AutoIt highlighting (BenBE)
+     * Problem with escaped backslash in PHP and D (BenBE)
+     * Added some more functions for PHP (BenBE)
+     * Some changes for AppleScript (Stefan Klieme)
+     * Forbid highlighting keywords followed by / in bash (BenBE)
+     * Updated the LaTeX file to link some keywords (BenBE)
+     * Additional text rendered when matching special variables for PowerShell (BenBE)
+     * Added some more keywords for ABAP (BenBE, Sandra Rossi, Jacob Laursen)
+Version 1.0.8.2
+  -  Added language files
+     * Brainfuck \ Brainfork (Benny Baumann)
+     * HQ9+ (Benny Baumann)
+     * INTERCAL (Benny Baumann)
+     * LOLcode (Benny Baumann)
+     * LScript (Beau McGuigan)
+     * Pixel Bender (Richard Olsson)
+     * ProvideX (Jeff Wilder)
+     * VIM Script (Swaroop C H)
+     * Visual Prolog (Thomas Linder Puls)
+     * Whitespace (Benny Baumann)
+  -  Changed priority for COMMENT_REGEXP compared to String highlighting (BenBE)
+  -  Fixed correct escaping of spaces inside of URLs (BenBE)
+  -  Updated the list of common file extensions (BenBE)
+  -  Updated the language file check script in contrib/ (BenBE)
+  -  Fixed a problem with link targets resulting in unclickable links (SF#2379120, BenBE)
+  -  Fixed an undefined variable issue in langcheck.php (BenBE)
+  -  Improvements to language files (BenBE)
+     * eMail Header highlighting now uses the correct delimiters for keywords (BenBE)
+     * eMail (RFC822\mbox) highlighting now highlights IPs, MIME types and
+       subfield assignments correctly (BenBE)
+     * Minor style changes in COBOL to improve loading performance (BenBE)
+     * Added some missing keywords for D (BenBE)
+     * Removed duplicate keywords from Progres, SAS and TSQL (BenBE)
+     * Fixed Heredoc Syntax for Bash (SF#2185319, BenBE)
+     * Moved symbol-lookalike sequences from keyword groups to separate symbol group
+       for languages asp, klonec, klonecpp, php, php-brief (BenBE)
+     * Fixed a lot of duplicate keyword warnings (BenBE)
+     * Added missing keywords to the Python language file,
+       introducing support for Python 3.0. (SF#2441839, milian)
+     * Updated documentation links for TypoScript (SF#2014276, BenBE)
+     * Fixed a problem with tag and attribute names in XML highlighting (SF#2276119, BenBE)
+     * Improved MySQL language file (BenBE, JavaWoman)
+     * Some commentss accidentially mistaken for DocComments (SF#2454897, BenBE)
+     * Added improved Escape Char handling for c, c_mac, cpp and cpp_qt (SF#2458743, BenBE)
+Version 1.0.8.1
+  -  Added language files
+     * AviSynth (Ryan Jones)
+     * eMail \ mbox (Benny Baumann)
+     * GNU Make (Neil Bird)
+     * Oracle 11i support (Simon Redhead)
+     * Prolog (Benny Baumann)
+     * SciLab (Christophe David)
+     * TeraTerm macro language (Boris Maisuradze)
+  -  Added support for Escape Regular Expressions (BenBE)
+     * Implemented C-style Escapes in PHP (BenBE)
+     * Introduced support for \xAB and \007 style Char Escapes in PHP (BenBE)
+     * Implemented Variable Highlighting in PHP (BenBE)
+     * Implemented Variable Highlighting in Bash (milian)
+  -  Fixed a problem with PCRE patterns for Keyword matching sometimes producing
+     very large strings, that could not be handled by some versions of PCRE lib,
+     causing broken highlighting an Regexp Compile errors (BenBE, milian)
+  -  Fixed broken highlighting of bash commands like `dbus-send --dest=org.....`,
+     i.e. the dest was highlighted as variable declaration (milian)
+  -  Fixed broken highlighting of some symbols in their escaped form (BenBE)
+     (<SEMI> and <PIPE> were accidentially filtered even though they are valid)
+  -  Fixed a "memory leak" in the *_regexp_caches (milian)
+  -  Fixed broken Escape chars if classes were disabled
+  -  start_line_numbers_at() was ignored when GESHI_HEADER_PRE_TABLE was set (revulo)
+  -  Fixed a problem allowing Remote Code Inclusion under certain circumstances (BenBE)
+  -  Changes to default CSS in order to make the GESHI_HEADER_PRE_TABLE align properly,
+     even on Windows / Mac systems with strange fonts (milian, revulo, ^RT)
+  -  Minor style changes to the following languages:
+     * cpp-qt (milian)
+     * MySQL (BenBE)
+     * PHP (BenBE)
+  -  Improvements to language files (BenBE, milian)
+     * Added MinSpareThread\MaxSpareThreads to Apache highlighter (BenBE)
+     * Added new Keyword group for APT sources.list highlighter (BenBE)
+     * Fixed highlighting in LaTeX for \begin{} and \end{}, i.e. the stuff inside
+       the curly braces. (milian, thanks for the report go to Matthias Pospiech)
+     * Improved String support for D (BenBE)
+     * MySQL was seriously broken (BenBE)
+     * Reworked Keyword groups for MySQL to allow for more configuration (BenBE)
+     * Improved Mirc script language file (milian)
+     * Improved C++ Qt language file (milian)
+     * Minor bug with Transpose Operator in Matlab (BenBE, Daniele de Rigo)
+     * Highlighting of Batch Files for Windows (BenBE)
+     * Updated AutoIt to include latest changes for AutoIt v3.2.12.1 (BenBE, Thierry)
+     * Fixed duplicate keyword warnings for Perl, Tcl and Typoscript (BenBE)
+     * Fixed Doc-URL getting reparsed by highlighted keywords of other groups (BenBE, Jordi Boggiano)
+Version 1.0.8
+  -  Added language files
+     * APT sources.list (milian)
+     * Boo (Marcus Griep)
+     * CIL (Common Intermediate Language, .NET Assembly) (Marcus Griep)
+     * COBOL (Benny Baumann)
+     * Gnuplot (milian)
+     * KLoneC (Mickael Auger)
+     * KLoneC++ (Mickael Auger)
+     * PIC16xxx assembler (Phil Mattison)
+     * POV-Ray (Carl Fürstenberg)
+     * PowerShell (Frode Aarebrot)
+     * Progress (Marco Aurelio de Pasqual)
+     * TypoScript (Jan-Philipp Halle)
+     * Xorg configuration (milian)
+  -  Make GeSHi's constructor arguments optional, so something like `$foo = new GeSHi;` is possible. (milian)
+  -  Added an optimizer for lists to regular expressions. Using these cached lists results in a speedup of approx. 50%.
+     The slightly increased memory consumption (~150KB for PHP language file) is more than worth it! (milian)
+  -  Some more memory & speed optimizations all over GeSHi (milian)
+     * Reduced memory overhead when highlighting keywords (BenBE)
+     * Keyword Linking now uses considerably less strtolower calls (milian)
+     * Cache Symbol Search Regexp and make Symbol Highlighting faster (milian)
+     * Use more native functions like substr_replace and strcasecmp to speed things up (milian)
+     * Use considerably less strlen() calls on various points by caching the results (milian)
+     * Properly set comments to be case insensitive where appropriate to increase performance (milian)
+     * Improve the performance of the strict mode tokenizer, making highlighting of languages like
+       HTML, ColdFusion or XML faster (milian)
+     * Setup caches for parsing on demand to make stylesheet generators fast (milian)
+  -  Various improvements to Strict Block Handling (BenBE, milian)
+     * Added support for RegExp-based Strict Blocks (BenBE)
+     * Fixed highlighting incorrectly stopping at ?> in PHP (SF#1330968, BenBE)
+     * Languages with STRICT_MODE_APPLIES = GESHI_MAYBE default to strict mode now. When no highlightable
+       code is found in this mode, we fallback to the same setting as if GESHI_NEVER was set. That way it
+       should not be needed to call enable_strictmode() manually. (milian)
+  -  Added new GESHI_HEADER_PRE_VALID type which uses the following markup: (milian)
+     * With line numbers:     <div>header<ol><li><pre>...</pre></li>...</ol></div>
+     * Without line numbers:  <pre>header...CODE...</pre>
+     => valid HTML and no need for &nbsp; indentation
+  -  Added new GESHI_HEADER_PRE_TABLE type which can be used to prevent linenumber-selection in Firefox
+     on copy'n'paste. (milian)
+  -  set_language will not reset any language settings by default anymore.
+     * Added $force_reset param for to force full reload of a language. (milian)
+     * Make sure strict_mode is set properly when doing repeated set_language calls (milian)
+  -  Fixed some problems with old PHP versions (SF#1975625, milian, BenBE)
+  -  Fixed broken use with Suhosin Patch when /e modifier was disabled (SF#2021800, BenBE)
+  -  Added support for external style information files to override language defaults without modifying language files (BenBE)
+  -  The overall_class is now up to the user, and the language-code is _always_ added as a class (milian)
+  -  Fixed Economy Mode for GeSHi::get_stylesheet() - now it just makes so much more sense! (milian)
+  -  Fixed Economy Mode when COMMENT_REGEXP are used (BenBE)
+  -  Changed the default encoding to use UTF-8, due to SF#2037598, BenBE)
+  -  Improved overall string support:
+     * Added support for multichar string delimiters (SF#1932083, BenBE)
+     * Fixed problems of unfinished strings and comments producing invalid XHTML (SF#1996353, BenBE)
+     * Multichar Quotemarks sometimes had inconsistent behaviour (BenBE)
+     * Support for multiple styles of strings depending on the starter (BenBE)
+     * Properly handle escapes in strings, i.e. '\\' was not working properly before (milian)
+     * Fixed escape char support when an escape char is followed by multi-byte chars (SF#2037598, BenBE)
+  -  Improved flexibility in language files (BenBE, milian)
+     * Added PARSER_CONTROL for OOLANG method highlighting (SF#1923060, BenBE)
+     * Added possibility to define strict blocks using an Regexp (BenBE)
+     * Removed explicit escaping of / in Regular Expressions (BenBE)
+     * Ignoring empty keyword groups when highlighting (milian)
+     * Make language_permissions configurable in language files via ['PARSER_CONTROL']['ENABLE_FLAGS']
+       this makes is_a calls unneeded and thus prevents PHP notices in PHP 5.x (milian)
+     * Extended support for number formats now covering the most common formats (SF#1923058, BenBE)
+     * Lifted a limitation that keywords had to have at least 2 subsequent letters (BenBE)
+     * Changed behaviour of PARSER_CONTROL now allowing to provide the full Lookahead and Lookbehind
+       expressions used as delimiters inside keywords instead of a simple char group (BenBE)
+     * Fixed improper handling of newlines in REGEXPS so this does not produce invalid html anylonger (milian)
+  -  Some typos and mistakes in the documentation (BenBE)
+  -  Added a script to contrib/ to verify language files are correct (BenBE)
+  -  Fixed loads of compliancy warnings detected with that automated compliance testing script (BenBE)
+  -  Many other improvements to various language files (BenBE, milian)
+     * Reduce strict errors & notices for language files (milian)
+     * Fixed symbol highlighting with C++ sometimes missing keywords after ; and comments (BenBE)
+     * Improved comment handling with TCL (Lars Hellström, BenBE)
+     * Fixed broken handling with XML comments (BenBE, SF#1849233)
+     * Fixed HTML comments spawning multiple lines producing invalid XHTML output (SF#1738173, BenBE)
+     * Added support for parameters beginning with dash in BASH language (BenBE)
+     * Support Apache's configuration sections, see http://httpd.apache.org/docs/2.2/sections.html (milian)
+     * Minor issue with PHP Heredoc and Nowdoc syntax sometimes not getting highlighted (BenBE)
+     * Updated Objective-C language file (SF#2013961, Quinn Taylor, BenBE)
+     * Added some keywords for VHDL (beshig, BenBE)
+     * Fixed severly broken ColdFusion language file (milian)
+     * Fixed some incorrectly highlighted things with the CSS language file (milian, BenBE)
+     * Improved Smarty language file (milian)
+     * Improved CSS language file (milian)
+     * Improved Pascal language file (milian)
+     * Improved LaTeX language file (Андрей Парамонов, BenBE)
+     * Fixed a regular expression in mIRC language file that caused a warning message to be issued (BenBE)
+     * Removed <, > and / from HTML names, now only containing the real tag names (BenBE)
+     * Use spaces instead of tabs for indendation in language files to have a consistent
+       coding standard accross geshi files (milian)
+     * Added some comment styles, keywords and added index highlighting (Chusslove Illich, Часлав Илић)
+  -  Removed some private methods which were only called at exactly one place (milian)
+     * format_header_content
+     * format_footer_content
+     * get_attributes
+  -  Second part of default style changes. Affected in this release:
+     * C++
+     * C++ (Qt)
+     * CSS
+     * VHDL
+Version 1.0.7.22
+  -  Added language files
+     * glSlang (BenBE)
+     * KiXtart (Riley McArdle)
+     * Lotus Notes @Formulas (Richard Civil)
+     * LotusScript (Richard Civil)
+     * MXML (David Spurr)
+     * Scala (Franco Lombardo)
+     * ActionScript 3 (Jordi Boggiano)
+     * GNU Gettext .po/.pot (Milian Wolff)
+     * Verilog (Günter Dannoritzer)
+  -  Fixed a problem not yet addressed in 1.0.7.21 regarding highlighting of
+     symbols that caused some extra characters to be added in the output or
+     broke highlighting and standard compliance due to missing escaping of
+     internally used characters (SF#192320 and SF#1926259, BenBE)
+  -  Fixed missing style information for ocaml language file (The_PHP_Jedi)
+  -  Fixed a bug causing masses of warnings in rendered output if language file
+     miss style information (The_PHP_Jedi, BenBE)
+  -  Missing tab width information could lead to warnings (BenBE)
+  -  Missing symbol information for ASP (SF#1952038, nfsupport, BenBE)
+  -  Empty delimiter message with OOoBasic (BenBE, Ccornell)
+  -  Escaping of comments in LaTeX ignored (SF#1749806, BenBE)
+  -  Modified Math environment $$ in LaTeX to be non-greedy (BenBE)
+  -  Added possibility to match a regexp as comment (SF#1914640, SF#1945301, SF#1934832, BenBE)
+  -  Introduced C-Style multiline continuation comments (SF#1914640, SF#1945301, BenBE)
+  -  Introduced Fortran Comments (SF#1914640, SF#1934832, BenBE)
+  -  Implemented Heredoc and Nowdoc Syntax for PHP and Perl (SF#1914640, BenBE)
+  -  Implemented Compiler Directives for Delphi (SF#1914640, BenBE)
+  -  Implemented minimalistic support for JavaScript \ Perl Regular Expressions (SF#1786665, SF#1754333, SF#1956631, BenBE)
+  -  Fixed Strings in Matlab to be handled as comments instead of regexps, to prevent keywords being linked (BenBE)
+  -  Applied PARSER_CONTROL fix of C++ for C++-Qt-Derivative (BenBE)
+  -  Fixed incorrect treatment of unequally long multiline comment separators (related to SF #1891630, BenBE)
+  -  Added PARSER_CONTROL settings for keywords in ASM language file (SF#1835148, BenBE)
+  -  Fixed missing CASSE_SENSITIVE entry for DOS language file (SF#1956314, BenBE)
+  -  Fixed accidential highlighting of keywords in argument names (SF#1956456, Milian Wolff, BenBE)
+  -  Fixed yet again some #-related bash problem (SF#1956459, Milian Wolff, BenBE)
+  -  Added backticks as symbols (Milian Wolff)
+  -  Example script remembers selections and source submitted (Milian Wolff)
+  -  Example script allows remembered source and preselected language to be cleared (Milian Wolff)
+  -  Example script now properly includes geshi and doesn't suppress error messages anylonger. (Milian Wolff)
+  -  Code cleanup by using direct string indexing instead of substr with length 1 (Milian Wolff)
+  -  Optimized generation of code parts in strict mode (Milian Wolff)
+  -  Optimized COMMENT_REGEXP by using an incremental regexp cache (Milian Wolff, BenBE)
+  -  Fixed a problem that rarely skipped highlighting of escaped chars which usually should have gotten highlighted (BenBE)
+  -  Optimized generation of highlighted strings to use fast skip forward while highlighting them (Milian Wolff, BenBE)
+  -  Optimization using basic rework of indent function improving tab expansion performance (BenBE)
+  -  Lots of other minor optimizations based on coding style improvements (Milian Wolff)
+  -  Implemented setting to force spans to be closed before newlines, see SF#1727398 (Milian Wolff)
+  -  Added missing credits for D language file to THANKS file (SF#1720899, BenBE)
+  -  Optimization to prevent loading the current language file twice (Milian Wolff)
+  -  Optimization: Use file_get_contents() to load sourcecode from files.
+     Even if GeSHi worked with PHP 4.1 before, it doesn't now. (Milian Wolff)
+  -  Added description of extra language features (SF#1970248, BenBE)
+  -  Added support for highlighting the C# using and namespace directives (SF #1395677, BenBE)
+  -  Added support for highlighting the Java import and package directives (SF #1395677, BenBE)
+  -  Fixed minor problem in Haskell cuasing accidential start of comment (SF#1987221, BenBE)
+  -  Fixed minor issue causing loads of warnings if a language files defines no symbols (BenBE)
+  -  Updated some aspects of the documentation and included further hints (BenBE)
+  -  First of series of color scheme changes. Affected languages (sofar):
+     * Assembler (x86)
+     * Bash
+     * C
+     * C#
+     * Delphi
+     * Fortran77
+     * glSlang
+     * Java & Java 5
+     * JavaScript
+     * OCaml
+     * OpenOffice.org Basic
+     * Pascal
+     * Perl
+     * PHP and PHP-Brief
+Version 1.0.7.21
+  -  Added language files
+     * Basic4GL (Matthew Webb)
+  -  Fixed problem with mIRC language highlighting spaces only (BenBE)
+  -  Language files can now specify a function to be called to decide the
+     colour of a regular expression match
+  -  Added single quote to Lua (Darrin Roenfanz)
+  -  Compare comments case insensitively (fixes AutoIT comments somewhat)
+     (Daniel Gordon)
+  -  Fixed symbols not being highlighted at all (SF #1767953, BenBE)
+  -  Fixed brackets not correctly managed (SF #1767954, BenBE)
+  -  Changed default languages for some extensions
+  -  Included color and character information for symbol highlighting in some languages (BenBE)
+  -  Fixed a problem with extension detection if default was used (BenBE)
+  -  Fixed a highlighting problem with the LaTeX language (SF #1776182, BenBE)
+  -  Added a new parameter for enable_highlighting to reduce source duplication (SF #1786104, BenBE)
+  -  Updated doxygen documentation to include since tags and some missing parameters
+  -  Disabled symbol highlighting by default (doesn't affect brackets, cf. documentation) (BenBE)
+  -  Added a check for set_case_keywords for the given param to be supported (BenBE)
+  -  Minor rework of the HTML documentation layout \ W3C compliance (BenBE)
+  -  Fixed highlighting error in bash language avoiding keywords in comments (SF #1786314, SF #1564839, BenBE)
+  -  Fixed template params for C++ and C# not being highlighted (SF #1772919, BenBE)
+  -  Fixed more reported problems about mirc highlighting
+  -  Added some missing keywords for VB.NET
+  -  Fixed some warnings in DOS language file (Florian Angehrn)
+  -  Add possibility to handle more than one extra line style (SF #1698255, German Rumm, BenBE)
+  -  Fixed handling of URLs when output case differs from URL case (SF #1815504, Tom Samstag, BenBE)
+  -  Fixed POD (Plain Old Documentation) format problems breaking highlighting of Perl (SF #1891630, Shannon Wynter, BenBE)
+  -  Fixed a problem with mIRC when & was used for identifiers (SF #1875552, BenBE)
+Version 1.0.7.20
+  -  Added language files
+     * Genero (logic) and Per (forms) (FOURJ's Genero 4GL) (Lars Gersmann)
+     * Haskell (Dagit)
+     * ABAP (Andres Picazo)
+     * Motorola 68k Assembler (for MC68HC908GP32 Microcontroller) (BenBE)
+     * Dot (Adrien Friggeri)
+  -  Fixed java documentation search for keywords to actually go to the
+     documentation (spaze)
+  -  Applied fix for bug 1688864 (bad regexes) (Tim Starling)
+  -  Fixed comment CSS rule in visualfoxpro
+  -  ThinBASIC language update (Eros Olmi)
+  -  mIRC language update (BenBE)
+  -  Fixed outdated documentation URL of Perl language file (RuralMoon by BenBE)
+  -  Fixed tab replacement code not generating the correct number of spaces in
+     some cases (Guillermo Calvo)
+  -  Fixed two typos in Z80 language file
+  -  Applied fix for bug 1730168 (Daniel Naber)
+  -  Applied fix for bug 1705482 (Jason Frame)
+     * Configurable line endings (Replace \n by custom string)
+     * per-language tab-widths (Adjustable for width>=1)
+     * Included defaults for ASM (x86, m68k, z80), C, C (Mac), C++, C++ (Qt), C#,
+       Delphi, CSS,, HTML, PHP, PHP (Brief), QBasic, Ruby, XML
+  -  Added a possibility to force generation of a surrounding tag around
+     the highlighted source
+  -  Applied fix for additional keywords for the bash language
+     (cf. http://bash.thefreebizhost.com/bash_geshi.php, BenBE / Jan G)
+  -  Fix bad colour definition in GML language (Andreas Gohr)
+  -  Fixed phpdoc comments not being indented one space if they should be (Andy
+     Hassall)
+Version 1.0.7.19
+  -  Added language files
+     * X++ (Simon Butcher)
+     * Rails (Moises Deniz)
+  -  Fixed invalid HTML being generated and doctypes not being highlighted over
+     multiple lines properly when line numbers are on (Validome)
+  -  Improved the ruby syntax highlighting by basing it off the Rails file
+  -  Changed some regular expressions to possibly help with badly performing
+     regex support in PHP (Tim Starling)
+  -  Allow {TIME}, {LANGUAGE} and {VERSION} to be used in the header as well as
+     the normal <TIME>/<LANGUAGE>/<VERSION> (AthanD)
+  -  Changed comment regex in bash to prevent malformed XHTML (rv1971)
+Version 1.0.7.18
+  -  Added language files
+     * ZiLOG Z80 Assembly (BenBE)
+  -  Fixed incorrect highlighting when the starter of a multiline comment is
+     longer than the ender (Robert Anthony).
+  -  Fixed "</span" generated if a multiline comment is the last thing in the
+     source (related to the above).
+  -  Added #cs => #ce comment markers to AutoIT (Robert Anthony)
+  -  Fixed spelling mistake for keyword in Python (wd3)
+  -  Added a method to enable/disable keyword linking (Ian McKellar)
+  -  Improved empty line detection for HTML output (BenBE)
+  -  Changed code style of geshi.php, and removed tabs
+Version 1.0.7.17
+  -  Fixed up ends of files having too many newlines (binarygroop)
+  -  Removed background colour on keyword group in eiffel (Julian Tschannen)
+  -  Removed GESHI_DIR_SEPARATOR constant usage, it's unnecessary (Aleksey Zapparov)
+  -  Added /* ... */ comments to coldfusion (Jeff Howden)
+Version 1.0.7.16
+  -  Added language files
+     * ActionScript (Steffen Krause)
+     * C++/Qt (Iulian M)
+     * PL/SQL (Victor Engmark)
+  -  Fixed up my e-mail address everywhere
+  -  Fixed notice with "error" property (IZIU Zielona Góra)
+  -  Added some entries to the get_language_name_from_extension table
+     (Stebastian Schuberth)
+Version 1.0.7.15
+  - Added language files
+     * BNF (Rowan Rodrik van der Molen)
+     * IO (me, thanks to Johnathan Wright)
+     * mIRC (Alberto de Areba Sánchez)
+  -  Fixed use of colon in XML (Grigory Rubtsov)
+  -  Fixed notices in text.php, reg.php and latex.php when $this is not
+     available (Clemens Weiß)
+  -  Made third parameter of geshi_highlight optional (Gaetano Giunta)
+  -  Fix incorrect highlighting of the $# variable in bash (Michael Knight)
+  -  Fixed single line comment mistake in thinbasic.php (Eros Olmi)
+Version 1.0.7.14
+  -  Added language files
+     * thinBasic (Eros Olmi)
+     * LaTeX (Matthais Pospiech)
+  -  Removed extra newlines at the end of some files
+  -  Fixed SF bug 1556404 - check before using $this in language files
+     (Clemens Weiß)
+Version 1.0.7.13
+  -  Added language files
+     * Uno IDL (Cedric Bosdonnat)
+  -  Fixed add_ids causing odd XHTML (RyanJ)
+  -  Fixed extra newline being added to end of result (Andreas Gohr)
+Version 1.0.7.12
+  -  Fixed lines being collapsed when they contain just a space (artlover)
+  -  Allowed matching for regexes using start/end matchers at the start/end
+     of the code (Sheri)
+  -  Added (dubious) fix for google "I'm feeling lucky" search for java keywords
+     (dubious in that it doesn't work for me)
+  -  mysql - Made the symbols into their own keyword group as the symbol group
+     isn't used. Added a style for multiline comments.
+  -  Added a couple of php5 keywords to the php language files.
+  -  Allow XML tags to have dashes.
+  -  Changed LANG_NAME for many languages to be more sensible/correct case
+     (Matthias Mohr)
+  -  Added case-sensitivity indices to python
+Version 1.0.7.11
+  -  Added language files
+     * Smalltalk (Bananeweizen)
+  -  Minor style improvements to matlab
+  -  Moved a couple of functions to the correct group in smarty (arwan)
+Version 1.0.7.10
+  -  Added language files
+     * TCL (Reid van Melle)
+     * Winbatch (Craig Storey)
+     * Groovy (Ivan F. Villanueva B.)
+     * Text (SmokingRope)
+     * Reg (SmokingRope)
+  -  Removed \ as an escape character in T-SQL (Dave Jackson)
+  -  Reset extra lines to highlight if source is changed (Diogo Resende)
+  -  Allow setting of lexic permissions in language files (SmokingRope)
+  -  Allow regexes to set a CSS class name (SmokingRope)
+  -  Added URL support to DOS language (mastrboy)
+Version 1.0.7.9
+  -  Added language files
+     * Fortran (Cedric Arrabie)
+     * SAS (Galen Johnson)
+     * CFDG (John Horigan)
+  -  Fixed & in URL in java5 (Clemens Weiß)
+  -  Added MD5 and SHA1 to mysql keywords (polarina)
+  -  Fixes for highlight_lines_extra with line numbers (ithcy)
+  -  Fixed backslash characters being removed (ArTourter)
+Version 1.0.7.8
+  -  Fixed blank at start of MySQL file (W. Tasin)
+  -  Fixed smarty functions being broken (ultrabob)
+  -  Changed keyword and regexp detection and parsing
+     slightly to allow more "meta characters" (like #) in
+     keywords
+  -  Minor fixes for XML and GML
+Version 1.0.7.7
+  -  Added language files
+     * T-SQL (Duncan Lock)
+     * Robots.txt (Christian Lescuyer)
+     * AutoIT (mastrboy)
+     * Java 5 (Clemens Bruckmann)
+     * ColdFusion (Diego)
+  -  A few keyword changes in java, removed :: object splitter (amphi)
+  -  Now using a simpler regular expression for numbers (Brice Bernard)
+  -  Fixed ah, bh etc. regs being highlighted as numbers (Unknown)
+Version 1.0.7.6
+  -  Fix backtick-string highlighting in ruby (Juan J. Martínez)
+  -  Add =begin multiline comments in ruby (Juan J. Martínez)
+  -  Added support for :keywords and ::access in lisp (Denis Mashkevich)
+  -  Prevented number highlighting if they are just after underscores (Joce)
+  -  Removed escape characters for strings in XML and HTML (floele)
+  -  Added instanceof keyword to java (jgottschling)
+  -  Fixed comments in ASP (SBD)
+  -  Removed unnecessary keyword style index from ini
+  -  Added support for " strings in ini
+  -  Removed unnecessary regex style index from blitzbasic
+  -  Keyword case of URL-ed keywords should be defined by language file (Benny Baumann)
+  -  Added "Hardquote" feature, provides more accurate string highlighting (Cliff Stanford)
+  -  Used hardquote support for @"..." strings in C# (Cliff Stanford)
+  -  Used hardquote support for ' strings in perl (Cliff Stanford)
+  -  Fixed setting of language path (Cliff Stanford)
+  -  Display source correctly formatted with line numbers (if requested) if an error
+     has occured (several people)
+  -  Having no source to highlight is not an error condition anymore
+  -  Delphi language updated to include more keywords and types (BenBE)
+  -  Updated NSIS to version 2.11 (deguix)
+Version 1.0.7.5
+  -  Fix for using escape characters to escape newlines breaking XHTML compliance (Yves Goergen)
+  -  Fixed method highlighting in VB (Matt Beale)
+  -  Fixed multiline comment highlighting in SQL (MrBaseball34)
+  -  Fixed two ">" symbols being outputted when using a footer but not CSS classes (MrBaseball34)
+  -  Marked important block stuff as deprecated
+  -  Some documentation tidyup
+  -  Updated GML language file (Jos? Jorge Enr?quez Rodr?guez)
+  -  THANKS file tidied up
+  -  Fixed double </a> for elements in HTML (Yves Goergen)
+  -  Added some keywords for ASM (Dreuzzo)
+Version 1.0.7.4
+  -  Added language files
+     * MySQL (Carl Fürstenberg)
+     * BlitzBasic (Pàdraig O`Connel)
+  -  Fixed up geshi_highlight function: it now correctly uses <code> instead of <div> (Remi Faure)
+  -  When using GESHI_HEADER_NONE, remove the <ol> if line numbering is not enabled
+  -  Commented example.php so people can use it as a guide better
+  -  Fixed extra newline being generated if a comment is at the end
+     of the source (many people, including Yves Goergen)
+  -  Fixed up some documentation issues
+  -  Some minor language file fixes (C++, Lua) (Lua fixes by chromix)
+  -  Fixed up no </span> in XML and other strict languages (regression from 1.0.7.3 fix: removed
+  	 unnecessary </span> when using strict mode) (Daniel Ecer, drskrud),
+Version 1.0.7.3
+  -  Added language files
+     * Scheme (Jon Raphaelson)
+     * Ocaml and Ocaml-brief (Flaie)
+     * Ruby (Amit Gupta)
+  -  Make urls generated for java highlighting XHTML compliant (Tim Van Wassenhove)
+  -  Removed unnecessary </span> when using strict mode (Tim Van Wassenhove)
+  -  Fixed warning in dos.php about undefined constant (Tim Van Wassenhove)
+  -  Fixed security hole in contrib/example.php - able to view any file if source
+     not set and language is set to wierd value (Maksymilian Arciemowicz)
+Version 1.0.7.2
+  -  Added language files
+     * Inno (Thomas Klinger)
+     * Ini (Deguix)
+     * DOS (Batchfile) (Alessandro Staltali)
+     * Applescript (Stephan Klimek)
+     * Freebasic (Roberto Rossi)
+     * SDLBasic (Roberto Rossi)
+     * ActionScript (links to French documentation) (NikO)
+  -  NSIS language file updated (deguix)
+  -  Lua language file updated (Roberto Rossi)
+  -  Bugfix: Styles incorrectly overriding default styles instead of being merged
+     in set_*_styles methods (Stebastian Werner)
+  -  Added GESHI_HEADER_NONE as valid header type. This still allows header content.
+Version 1.0.7.1
+  -  Added language files:
+     * Div (Gabriel Lorenzo)
+     * GML (José Jorge Enríquez Rodríguez)
+     * Eiffel (Zoran Simic)
+  -  Minor change to rules regarding when keywords can appear - now dots (.) are
+     allowed before keywords. (NikO)
+  -  Bugfix: the line style for non-fancy lines when fancy highlighting is enabled
+     is now applied (Amit Gupta)
+Version 1.0.7
+  -  Added language files:
+     * Diff (Conny Brunnkvist)
+     * VHDL (Alexander Krause)
+     * D (Thomas Kuehne)
+     * Matlab (Florian Knorn)
+  -  Python highlighting improved (thither, Federico Quagliata)
+  -  Changed file comments to use phpdoc syntax, and changed code style to be more
+  	 like PEAR
+  -  Fixed bug in set_code_style: Second parameter is now optional
+  -  The $_GESHI_ERRORS array is gone, error messages are internal to the GeSHi class
+  -  Changed name of XML language to XML from HTML
+  -  Removed min and max tab width checks
+  -  Backported GeSHi 1.1.X's automatic language file path detection so you no longer
+     need to use the third parameter of the constructor or set_language_path except for
+     special circumstances.
+  -  Source is checked to make sure it is not empty else an error occurs
+  -  Removed excess characters after ?> in ada.php, apache.php and cpp.php that caused
+     http headers to be sent (psichron)
+  -  Removed second "foreach" keyword for smarty language file that was causing
+     duplication (Iss)
+  -  Added underscore to allowed characters in match for XML tags (anonymous)
+  -  Added some missing java keywords like "abstract" and "transient"
+  -  Added "list" and "continue" PHP keywords
+  -  set_language resets error status and strict mode (Andrew Black)
+  -  Removed margin:0 declaration from cssgen.php (Andrzej Kubaszek)
+  -  Fixed multiline comment selector in cssgen.php (Andrzej Kubaszek)
+Version 1.0.6
+  -  Added support for smart tabs - tabs that behave just like normal tabs when in
+     GESHI_HEADER_DIV mode.
+  -  Partial patch for UTF-8 encoding applied (doesn't quite work however...)
+Version 1.0.5
+  -  Added language files:
+     * MPASM (Bakalex)
+     * Oracle 8 (Guy Wicks)
+  -  Fixed bug where not using an encoding type would sometime result in warnings (although
+     there still seems to be issues with encoding in general that I'm trying to gather more
+     data on) (Alexander Spennemann)
+  -  Removed "margin: 0" from <ol> in an attempt to make line numbers visible in IE again
+     by default (untested, but I don't really care if it works... get firefox! ;))
+  -  Added note on php5 support (Karim Scheik)
+  -  Added two new methods: load_from_file and get_language_name_from_extension, that can
+     help automate file highlighting (though the extension array at this time is quite bare)
+     (David Gartner, Brian Cheesman)
+Version 1.0.4
+  -  Fixed many version-reporting bugs (Jack Lloyd)
+  -  Fixed bug where methods were not having the correct CSS generated for them
+     by get_stylesheet() (Jack Lloyd)
+  -  Added new keywords to C and C++ files (Jack Lloyd)
+  -  Added section on case sensitivity to documentation that wasn't in the other versions
+Version 1.0.3
+  -  Added language files:
+     * Smarty (Alan Juden)
+     * C# (Alan Juden)
+     * VB.NET (Alan Juden)
+     * C for Macs (M. Uli Kusterer)
+     * Objective C (M. Uli Kusterer)
+  -  Links can have a target attribute (Andreas Gohr)
+  -  Fixed multiline string bug if not using classes
+  -  Added method set_encoding that allows you to set the character
+     set used by calls to htmlentities() in GeSHi
+  -  You can now specify an array of object splitters, and each
+     type of method separated by each object splitter can be highlighted
+     differently
+  -  If a language uses a case sensitive keyword group and that group
+     has a URL associated with it, the keyword will not be lowercased
+     in the URL (M. Uli Kusterer)
+Version 1.0.2
+  -  Added language files:
+     * Actionscript (Steffen Krause)
+     * ASP (Amit Gupta)
+     * Bash (Andreas Gohr)
+     * CADDCL (Roberto Rossi)
+     * CadLisp (Roberto Rossi)
+     * C++ (Dennis Bayer)
+     * Delphi (Járja Norbert)
+     * Javascript (Ben Keen)
+     * Lisp (Roberto Rossi)
+     * OpenOffice.org BASIC (Roberto Rossi)
+     * Perl (Andreas Gohr and Ben Keen)
+     * Python (Roberto Rossi)
+     * VisualFoxPro (Roberto Armellin)
+     * XML (Nigel McNie, from an idea/file by Christian Weiske)
+  -  Added contrib/ directory with script to create one external stylesheet
+     from many languages(base script by Andreas Gohr, modified by Nigel McNie),
+     and an example script (needs lotsa work...)
+  -  Code lines can have their own unique ID (for use with javascript)
+     (suggested by Andreas von Oettingen)
+  -  Certain rows can be specified to be highlighted differently (suggested by
+     Andreas von Oettingen)
+  -  Getter available for human-readable language name (suggested by Simon Patterson)
+  -  Line numbers aren't highlighted when a user selects the code
+  -  Contextual highlighting with <BEGIN GeSHi> ... <END GeSHi> in the code (which
+     can be disabled)
+  -  Functions can be made into URLs to appropriate documentation (suggested
+     by cybot_tm). Also thanks to Marcin Gryszkalis for the links for C, Java
+     and Perl.
+  -  Code can have a header and footer
+  -  Time taken to parse the code is recorded and made available with the get_time()
+     method
+  -  error() now returns a human-readable error message
+  -  Function geshi_highlight added to make it even easier to highlight on the fly
+  -  Advanced regular expression handling
+  -  Bug fixes to lexic_permission handling
+Version 1.0.1
+  -  Added methods set_symbols_style() and set_symbols_highlighting(). These should be used
+     instead of set_brackets_style and set_brackets_highlighting respectively.
+  -  Added a new field - language_path - that can be set either when the constructor is
+     called, or by the new method set_language_path(), that specifies a path to the directory
+     containing the language files (bug reported by bbspliff)
+  -  Added a new method set_case_keywords(), that allows the auto-casing feature to be
+     changed on the fly instead of simply being specified in the language file
+  -  If there is an error the source that is outputted is now handled much better
+  -  Lines are broken in the source only by \n now, not by \r\n (to save on output source)
+  -  Indentation moved into its own method
+  -  Method header() modified to allow the user to choose whether the code is surrounded in
+     a <div> or a <pre> (see documentation for benefits of both). Method footer() likewise
+     modified.
+  -  Method get_stylesheet() modified so that a smaller comment is outputted in economy mode,
+     and bugs with when line number classes are outputted in economy mode have been fixed
+  -  Bug where spans had two quotes at the end of the attributes fixed (ie. <span style=".."">)
+  -  Added language files:
+     * Ada (Tux)
+     * Apache log file (Tux)
+     * ASM (Tux)
+     * NSIS (Tux)
+     * Pascal (Tux)
+Version 1.0.0
+  -  Initial Release

+ 340 - 0
lib/geshi/docs/COPYING

@@ -0,0 +1,340 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.

+ 33 - 0
lib/geshi/docs/README

@@ -0,0 +1,33 @@
+
+        GeSHi - GEneric Syntax HIghlighter
+        ----------------------------------
+                 Version 1.0.8
+
+Author:          Benny Baumann, Nigel McNie
+Email:           BenBE@geshi.org, nigel@geshi.org
+GeSHi Website:   http://qbnz.com/highlighter
+
+GeSHi is a generic syntax highlighter, written in PHP. You simply
+input the source code you wish to highlight with the language you
+wish to use, and the output will be a file syntax highlighted to
+XHTML standards.
+
+For more information on how to use GeSHi, please consult the
+documentation. If you got this readme from a GeSHi package, then
+the documentation is available in the docs/ directory. Documentation
+is also available at http://qbnz.com/highlighter/documentation.php
+
+If you think you've found a bug in GeSHi, contact me with a bug
+report at BenBE@omorphia.de, or submit it to the bug tracker at
+http://sourceforge.net/tracker/?group_id=114997&atid=670231. Be
+aware that minor highlighting errors may well just be incorrect
+language files, but if you do find something major please contact me.
+
+And if you're using GeSHi as a plugin/mod for some other software,
+please tell me about it! It's worth a link to you, and I can give
+you specialist help if you need it.
+
+GeSHi is free software, released under the GNU GPL. Please see the
+COPYING file for more information. If you do modify this program,
+please tell me about it! Perhaps you've made a good improvement that
+I can learn from :)

+ 249 - 0
lib/geshi/docs/THANKS

@@ -0,0 +1,249 @@
+
+             THANKS - List of credits for GeSHi
+
+I owe these people/groups my thanks for help with GeSHi. Thanks, guys!
+
+- Amit Gupta            - Thanks for all that constructive criticism - it's
+                          a great help for making GeSHi even better. And
+                          thanks for the Wordpress plugin! (Anyone who is
+                          interested in the plugin can visit:
+                          http://blog.igeek.info/still-fresh/category/wp-plugins/igsyntax-hiliter/)
+- Andreas Gohr          - Thanks for language files and for using GeSHi for DokuWiki
+                          (http://www.splitbrain.org/dokuwiki/wiki:dokuwiki). And thanks
+                          for all your criticisms and for that stylesheet-maker code :).
+                          Also, thanks for the UTF-8 patch.
+- Andreas von Oettingen - Thanks for those great ideas! :)
+- bbspliff              - Thanks for pointing out that bug (pity I already
+                          found it though ;))
+- Benny Baumann         - Thanks for your innumerable suggestions for improvements, and your
+                          work on Delphi support :)
+- Ben Keen              - Thanks for the language files and pointing out some
+                          ideas for future releases. Lookin' forward to seeing that
+                          software soon! ;)
+- Brian Cheesman        - Thanks for using GeSHi in phpCvsView, and for the suggestion about
+                          extension => language lookup
+- Christian Weiske      - Thanks for the inspiration for creating advanced regexp
+                          highlighting :D
+- Cliff Stanford        - Thanks for the hardquote support for C# and Perl (can be used elsewhere
+                          I'm sure)
+- David Gartner         - Thanks for using GeSHi in net2ftp, and for the idea about a load_from_file
+                          method
+- forum.qbasicnews.com  - Thanks for putting up with the crappy versions
+                          that I "forced" on you guys before ;)
+- Gizmore               - Providing some patch to query supported languages
+- Jack Lloyd            - Thanks for pointing out the versioning and method CSS bugs, and giving
+                          me the extra C/C++ keywords
+- Karim Scheik          - Thanks for the php5 support report
+- Marcin Gryszkalis     - Thanks for those links for C, Java, Perl
+- M. Uli Kusterer       - Thanks for the idea about URL case conversion
+- Milian Wolff          - Thanks for the loads of optimizations
+                        - Thanks for helping with implementation of various features
+- Roberto Armellin      - Thanks for pointing out some flaws in GeSHi (that will be solved
+                          in 1.2 guaranteed)
+- Sterling Christensen  - Thanks for those links to language specs
+- Tux                   - Thanks for making all those language files :D
+- zbw                   - Thanks for proving a phpBB port was possible
+
+PEOPE WHO MADE LANGUAGE FILES
+
+- ABAP                   Andres Picazo
+- Actionscript           Steffen Krause (french translation by NikO)
+- ActionScript 3         Jordi Boggiano (version for ActionScript3 and MXML)
+- Ada                    Tux
+- Algol68                Neville Dempsey
+- Apache                 Tux
+- Applescript            Stephan Klimek
+- Apt sources.list       Milian Wolff
+- ARM                    Marat Dukhan
+- ASM                    Tux, Dennis Yurichev, Marat Dukhan
+- ASP                    Amit Gupta
+- Asymptote              Manuel Yguel
+- Autoconf               Mihai Vasilian
+- AutoHotkey             Naveen Garg
+- AutoIt                 mastrboy
+- AviSynth               Ryan Jones
+- Awk                    George Pollard
+- BASCOM AVR             Michal Goralczyk
+- Bash                   Andreas Gohr
+- Basic4GL               Matthew Webb
+- BibTeX                 Quinn Taylor
+- BlitzBasic             P�draig O`Connel
+- BNF                    Rowan Rodrik van der Molen
+- Boo                    Marcus Griep
+- Brainfuck \ Brainfork  Benny Baumann
+- C for Loadrunner       Stuart Moncrieff
+- C for Macs             M. Uli Kusterer
+- C#                     Alan Juden
+- C++                    Dennis Bayer, M. Uli Kusterer
+- C++/Qt                 Iulian M
+- CADDCL                 Roberto Rossi
+- CadLisp                Roberto Rossi
+- CDFG                   John Horigan
+- ChaiScript             Jason Turner, Jonathan Turner
+- CIL                    Marcus Griep
+- Clojure                Jess Johnson
+- CMake                  Daniel Nelson
+- COBOL                  Benny Baumann
+- CoffeeScript           Trevor Burnham
+- ColdFusion             Diego
+- Cuesheet               Benny Baumann
+- D                      Thomas Kuehne
+- DCL                    Petr Hendl
+- DCPU-16                Benny Baumann
+- DCS                    Stelio Passaris
+- Delphi                 Járja Norbert, Benny Baumann
+- Div                    Gabriel Lorenzo
+- DOS                    Alessandro Staltari
+- E                      Kevin Reid
+- ECMAScript             Michel Mariani
+- Eiffel                 Zoran Simic
+- eMail \ mbox           Benny Baumann
+- EPC                    Thorsten Muehlfelder
+- Erlang                 Benny Baumann, Dan Forest-Barbier, Uwe Dauernheim
+- Euphoria               Nicholas Koceja
+- F#                     Julien Ortin
+- Falcon                 billykater
+- FO (abas-ERP)          Tan-Vinh Nguyen
+- FormulaOne             Juro Bystricky
+- Fortran                Cedric Arrabie
+- FreeBasic              Roberto Rossi
+- FreeSWITCH             James Rose
+- GADV 4CS               Jason Curl
+- GAMBAS                 Jesus Guardon
+- Genie                  Nicolas Joseph
+- Gettext                Milian Wolff
+- glSlang                Benny Baumann
+- GML                    José Jorge Enríquez Rodríguez
+- GNU make               Neil Bird
+- Gnuplot                Milian Wolff
+- Go                     Markus Jarderot
+- Groovy                 Ivan F. Villanueva B.
+- GwBasic                José Gabriel Moya Yangüela
+- Haskell                Dagit
+- Haxe                   Andy Li, John Liao
+- HicEst                 Georg Petrich
+- HQ9+                   Benny Baumann
+- HTML5                  Robert Lidberg
+- Icon                   Matt Oates
+- Ini                    Deguix
+- Inno                   Thomas Klinger
+- INTERCAL               Benny Baumann
+- J                      Ric Sherlock
+- Java 5                 Clemens Bruckmann
+- Javascript             Ben Keen
+- jQuery                 Rob Loach
+- KiXtart                Riley McArdle
+- KLone C                Mickael Auger
+- KLone C++              Mickael Auger
+- LaTeX                  Matthais Pospiech
+- LDIF                   Bruno Harbulot
+- Liberty BASIC          Chris Iverson
+- Lisp                   Roberto Rossi
+- LLVM                   Azriel Fasten
+- Locomotive Basic       Nacho Cabanes
+- Logtalk                Paulo Moura
+- LOLcode                Benny Baumann
+- LScript                Beau McGuigan
+- LSL2                   William Fry
+- Lua                    Roberto Rossi
+- m86k                   Benny Baumann
+- MagikSF                Sjoerd van Leent
+- MapBasic               Tomasz Berus
+- mIRC                   Alberto de Areba Sánchez
+- Modula 2               Benjamin Kowarsch
+- Modula-3               Martin Bishop
+- Motorola 6502 ASM      Warren Willmey
+- Motorola 68k ASM       Warren Willmey
+- MPASM                  Bakalex
+- MXML                   David Spurr
+- MySQL                  Carl Fürstenberg, Marjolein Katsma
+- Nagios                 Albéric de Pertat
+- NewLisp                cormullion
+- NSIS                   Tux, Deguix
+- Oberon-2               Mike Mol
+- Objeck Progr. Lang.    Randy Hollines
+- Objective C            M. Uli Kusterer
+- Ocaml                  Flaie
+- Ocaml-brief            Flaie
+- Octave                 Carnë Draug, Juan Pablo Carbajal
+- OpenBSD Packet Filter  David Berard
+- OpenOffice.org BASIC   Roberto Rossi
+- Oracle 8               Guy Wicks
+- Oracle 11i             Simon Redhead
+- Oxygene (Delphi Prism) Carlo Kok
+- Oz                     Wolfgang Meyer
+- ParaSail               sttaft
+- PARI/GP                Charles R Greathouse IV
+- Pascal                 Tux
+- PCRE                   Benny Baumann
+- Perl                   Andreas Gohr, Ben Keen
+- Perl6                  Kodi Arfer
+- PIC16xxx assembler     Phil Mattison
+- Pike                   Rick E.
+- Pixel Bender           Richard Olsson
+- PL/I                   Robert Prins
+- PL/SQL                 Victor Engmark
+- PostgreSQL             Christophe Chauvet
+- POV-Ray                Carl Fürstenberg
+- PowerBuilder           Doug Porter
+- PowerShell             Frode Aarebrot
+- ProFTPd                Benny Baumann
+- Progress               Marco Aurelio de Pasqual
+- Prolog                 Benny Baumann
+- Property Files         Edy Hinzen
+- ProvideX               Jeff Wilder
+- PureBasic              Gustavo Julio Fiorenza
+- Python                 Roberto Rossi
+- Python for S60         Sohan Basak
+- PyCon                  Benny Baumann
+- q/kdb+                 Ian Roddis
+- R / S+                 Ron Fredericks, Fernando H.F.P. da Rosa
+- Rails                  Moises Deniz
+- Rebol                  Lecanu Guillaume
+- Reg                    SmokingRope
+- Rexx                   Jon Wolfers
+- Robots                 Christian Lescuyer
+- RPM Specification File Paul Grinberg
+- Ruby                   Amit Gupta, Moises Deniz
+- SAS                    Galen Johnson
+- Scheme                 Jon Raphaelson
+- SciLab                 Christophe David
+- SDLBasic               Roberto Rossi
+- Smalltalk              Bananeweizen
+- Smarty                 Alan Juden
+- SPARK                  Phil Thornley
+- SPARQL                 Karima Rafes
+- StoneScript            Archimmersion
+- SystemVerilog          Sean O'Boyle
+- TCL                    Reid van Melle
+- TeraTerm               Boris Maisuradze
+- Text                   SmokingRope
+- thinBasic              Eros Olmi
+- T-SQL                  Duncan Lock
+- TypoScript             Jan-Philipp Halle
+- Unicon                 Matt Oates
+- Uno IDL                Cedric Bosdonnat
+- UnrealScript           pospi
+- UPC                    Viraj Sinha
+- Urbi                   Alexandre Morgand
+- Vala                   Nicolas Joseph
+- VB                     Roberto Rossi
+- VB.NET                 Alan Juden
+- Vedit                  Pauli Lindgren
+- Verilog                Günter Dannoritzer
+- VHDL                   Alexander 'E-Razor' Krause, Kevin Thibedeau
+- VIM Script             Swaroop C H
+- Visual FoxPro          Roberto Armellin
+- Visual Prolog          Thomas Linder Puls
+- Whitespace             Benny Baumann
+- Whois \ RPSL format    Benny Baumann
+- Winbatch               Craig Storey
+- X++                    Simon Butcher
+- XBasic                 José Gabriel Moya Yangüela
+- Xorg config            Milian Wolff
+- YAML                   Josh Ventura
+- Z80 Assembler          Benny Baumann
+- ZXBasic                Jose Rodriguez
+
+Do you want your name in here? Help me out! Make a language file, or suggest a new
+feature, or make a plugin for GeSHi for some other software, then tell me about it!

+ 71 - 0
lib/geshi/docs/TODO

@@ -0,0 +1,71 @@
+       TODO - List of things to do as of 2005/01/29
+
+Suggestions for things to add are welcome, if you have a feature request you
+can either post it to the forums:
+
+http://qbnz.com/highlighter/forum.php
+
+Or to the feature request tracker:
+
+http://sourceforge.net/tracker/?group_id=114997&atid=670234
+
+
+  TODO for version 1.0.8.x
+
+- Rework the load_from_file method and the one for getting a file extension,
+  as documented in the source.
+- use analogous vars to $next_comment_regexp_pos for more GeSHi structures,
+  should reduce number of functions called and hence improve performance
+- make a set of default colours which can be used in the language files.
+  this way we can give languages a uniform look and maybe even add "themes"
+- Get better coverage in our coderepo
+- README / INSTALL / ... file for phpdoc integration => take geshi-doc.*?
+- rework HARDQUOTE + styles, currently this is a bit of a mess imo (milian)
+- Allow per-keywordgroup AutoCaps/NoCaps
+- Complete API to support latest features
+    set_number_style ($key missing)
+    set_string_style ($key missing)
+    set_case_keywords (support for per_keywordgroup AutoCaps)
+
+
+  TODO for version 1.2.0
+
+- Rewrite engine to use remove/replace method (will hopefully almost
+  eliminate the need for regular expressions except for numbers/methods
+  etc). This will also assist for making different output formats [DONE]
+- "Intelligent" output format - eg if the user doesn't want lines to
+  wrap and wants line numbers don't use <ol>, use the <table> method
+  instead. (This saves on output)
+- Clear split between "public" and "private" methods [DONE]
+- PHP5 version
+- "Themes" for styles - basically pre-made stylesheets that can be used
+  to highlight code of any language in a similar manner [DONE]
+- "Dialects" for languages - eg php4, php5. One master language definition
+  file, and a bunch of "specialised" dialect files for each language
+  Ability to specify a "specialised" dialect as default? [DONE]
+- Look at load/memory usage and try to reduce
+- Make tabs into tab-stops like a normal editor [DONE]
+- Ability to add more than one multiline comment or string [DONE]
+- Ability to specify that strings cannot be multiline [DONE]
+- Create a "wrapper" class for ultra-easy use
+- Code written in a style that conforms to a phpdoc utility [DONE, PEAR]
+- Dig functions/methods out of code and where they are called make an internal
+  link back to their definition
+
+
+  TODO for version 2.0.0
+
+- Support for multiple output formats (XHTML, XML, PDF, RTF etc) [DONE IN 1.2]
+- Support for auto-indent/code "beautifing"
+- Option for "Lite" highlighting - aims for speed and low server load
+- "Intelligent" highlighting inside comments, and ability to highlight
+  source in multiple languages at once (eg PHP+HTML) [DONE IN 1.2]
+- Perhaps a script on the GeSHi site that would map urls to appropriate
+  definitions and relocate the user? (eg, java documentation is
+  structured in such a way that urls are not able to be used with GeSHi.
+  Instead the URL could become:
+  http://qbnz.com/highlighter/redirect.php?lang=java&kw=KeyWord
+  and that script would redirect to the correct location.
+  [BETTER FIX IN 1.2]
+
+              $Id: TODO 1725 2008-08-08 11:56:36Z benbe $

File diff suppressed because it is too large
+ 4616 - 0
lib/geshi/docs/api/__filesource/fsource_geshi_core_geshi.php.html


+ 13 - 0
lib/geshi/docs/api/blank.html

@@ -0,0 +1,13 @@
+<html>
+<head>
+	<title>GeSHi 1.0.8</title>
+			<link rel="stylesheet" href="media/stylesheet.css" />
+			<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
+</head>
+<body>
+<div align="center"><h1>GeSHi 1.0.8</h1></div>
+<b>Welcome to geshi!</b><br />
+<br />
+This documentation was generated by <a href="http://www.phpdoc.org">phpDocumentor v1.4.2</a><br />
+</body>
+</html>

+ 24 - 0
lib/geshi/docs/api/classtrees_geshi.html

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+  <html xmlns="http://www.w3.org/1999/xhtml">
+		<head>
+			<!-- template designed by Marco Von Ballmoos -->
+			<title></title>
+			<link rel="stylesheet" href="media/stylesheet.css" />
+			<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
+		</head>
+		<body>
+						
+<!-- Start of Class Data -->
+<H2>
+	
+</H2>
+<h2>Root class GeSHi</h2>
+<ul>
+<li><a href="geshi/core/GeSHi.html">GeSHi</a></li></ul>
+
+	<p class="notes" id="credit">
+		Documentation generated on Thu, 25 Dec 2008 14:34:34 +0100 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.2</a>
+	</p>
+	</body>
+</html>

+ 867 - 0
lib/geshi/docs/api/elementindex.html

@@ -0,0 +1,867 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+  <html xmlns="http://www.w3.org/1999/xhtml">
+		<head>
+			<!-- template designed by Marco Von Ballmoos -->
+			<title></title>
+			<link rel="stylesheet" href="media/stylesheet.css" />
+			<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
+		</head>
+		<body>
+						<a name="top"></a>
+<h2>Full index</h2>
+<h3>Package indexes</h3>
+<ul>
+	<li><a href="elementindex_geshi.html">geshi</a></li>
+</ul>
+<br />
+<div class="index-letter-menu">
+	<a class="index-letter" href="elementindex.html#a">a</a>
+	<a class="index-letter" href="elementindex.html#d">d</a>
+	<a class="index-letter" href="elementindex.html#e">e</a>
+	<a class="index-letter" href="elementindex.html#g">g</a>
+	<a class="index-letter" href="elementindex.html#h">h</a>
+	<a class="index-letter" href="elementindex.html#l">l</a>
+	<a class="index-letter" href="elementindex.html#o">o</a>
+	<a class="index-letter" href="elementindex.html#p">p</a>
+	<a class="index-letter" href="elementindex.html#r">r</a>
+	<a class="index-letter" href="elementindex.html#s">s</a>
+</div>
+
+	<a name="a"></a>
+	<div class="index-letter-section">
+		<div style="float: left" class="index-letter-title">a</div>
+		<div style="float: right"><a href="#top">top</a></div>
+		<div style="clear: both"></div>
+	</div>
+	<dl>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">add_keyword</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodadd_keyword">GeSHi::add_keyword()</a> in geshi.php</div>
+							<div class="index-item-description">Adds a keyword to a keyword group for highlighting</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">add_keyword_group</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodadd_keyword_group">GeSHi::add_keyword_group()</a> in geshi.php</div>
+							<div class="index-item-description">Creates a new keyword group</div>
+					</dd>
+		</dl>
+	<a name="d"></a>
+	<div class="index-letter-section">
+		<div style="float: left" class="index-letter-title">d</div>
+		<div style="float: right"><a href="#top">top</a></div>
+		<div style="clear: both"></div>
+	</div>
+	<dl>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">disable_highlighting</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methoddisable_highlighting">GeSHi::disable_highlighting()</a> in geshi.php</div>
+							<div class="index-item-description">Disables all highlighting</div>
+					</dd>
+		</dl>
+	<a name="e"></a>
+	<div class="index-letter-section">
+		<div style="float: left" class="index-letter-title">e</div>
+		<div style="float: right"><a href="#top">top</a></div>
+		<div style="clear: both"></div>
+	</div>
+	<dl>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">enable_classes</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodenable_classes">GeSHi::enable_classes()</a> in geshi.php</div>
+							<div class="index-item-description">Sets whether CSS classes should be used to highlight the source. Default  is off, calling this method with no arguments will turn it on</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">enable_highlighting</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodenable_highlighting">GeSHi::enable_highlighting()</a> in geshi.php</div>
+							<div class="index-item-description">Enables all highlighting</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">enable_ids</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodenable_ids">GeSHi::enable_ids()</a> in geshi.php</div>
+							<div class="index-item-description">Whether CSS IDs should be added to each line</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">enable_important_blocks</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodenable_important_blocks">GeSHi::enable_important_blocks()</a> in geshi.php</div>
+							<div class="index-item-description">Sets whether context-important blocks are highlighted</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">enable_inner_code_block</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodenable_inner_code_block">GeSHi::enable_inner_code_block()</a> in geshi.php</div>
+							<div class="index-item-description">Sets whether to force a surrounding block around  the highlighted code or not</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">enable_keyword_links</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodenable_keyword_links">GeSHi::enable_keyword_links()</a> in geshi.php</div>
+							<div class="index-item-description">Turns linking of keywords on or off.</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">enable_line_numbers</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodenable_line_numbers">GeSHi::enable_line_numbers()</a> in geshi.php</div>
+							<div class="index-item-description">Sets whether line numbers should be displayed.</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">enable_multiline_span</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodenable_multiline_span">GeSHi::enable_multiline_span()</a> in geshi.php</div>
+							<div class="index-item-description">Sets wether spans and other HTML markup generated by GeSHi can  span over multiple lines or not. Defaults to true to reduce overhead.</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">enable_strict_mode</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodenable_strict_mode">GeSHi::enable_strict_mode()</a> in geshi.php</div>
+							<div class="index-item-description">Enables/disables strict highlighting. Default is off, calling this  method without parameters will turn it on. See documentation  for more details on strict mode and where to use it.</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">error</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methoderror">GeSHi::error()</a> in geshi.php</div>
+							<div class="index-item-description">Returns an error message associated with the last GeSHi operation,  or false if no error has occured</div>
+					</dd>
+		</dl>
+	<a name="g"></a>
+	<div class="index-letter-section">
+		<div style="float: left" class="index-letter-title">g</div>
+		<div style="float: right"><a href="#top">top</a></div>
+		<div style="clear: both"></div>
+	</div>
+	<dl>
+			<dt class="field">
+						<img src="media/images/Constructor.png" alt="Method" title="Method" /></title>
+			<span class="method-title">GeSHi</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodGeSHi">GeSHi::GeSHi()</a> in geshi.php</div>
+							<div class="index-item-description">Creates a new GeSHi object, with source and language</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Class.png" alt="Class" title="Class" /></title>
+			GeSHi
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html">GeSHi</a> in geshi.php</div>
+							<div class="index-item-description">The GeSHi Class.</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Page.png" alt="Page" title="Page" /></title>
+			<span class="include-title">geshi.php</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html">geshi.php</a> in geshi.php</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_ACTIVE</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_ACTIVE">GESHI_ACTIVE</a> in geshi.php</div>
+							<div class="index-item-description">Links in the source in the :active state</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_CAPS_LOWER</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_CAPS_LOWER">GESHI_CAPS_LOWER</a> in geshi.php</div>
+							<div class="index-item-description">Leave keywords found as the case that they are</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_CAPS_NO_CHANGE</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_CAPS_NO_CHANGE">GESHI_CAPS_NO_CHANGE</a> in geshi.php</div>
+							<div class="index-item-description">Lowercase keywords found</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_CAPS_UPPER</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_CAPS_UPPER">GESHI_CAPS_UPPER</a> in geshi.php</div>
+							<div class="index-item-description">Uppercase keywords found</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_END_IMPORTANT</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_END_IMPORTANT">GESHI_END_IMPORTANT</a> in geshi.php</div>
+							<div class="index-item-description">The ender for important parts of the source</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_FANCY_LINE_NUMBERS</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_FANCY_LINE_NUMBERS">GESHI_FANCY_LINE_NUMBERS</a> in geshi.php</div>
+							<div class="index-item-description">Use fancy line numbers when building the result</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_HEADER_DIV</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_HEADER_DIV">GESHI_HEADER_DIV</a> in geshi.php</div>
+							<div class="index-item-description">Use a &quot;div&quot; to surround the source</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_HEADER_NONE</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_HEADER_NONE">GESHI_HEADER_NONE</a> in geshi.php</div>
+							<div class="index-item-description">Use nothing to surround the source</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_HEADER_PRE</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_HEADER_PRE">GESHI_HEADER_PRE</a> in geshi.php</div>
+							<div class="index-item-description">Use a &quot;pre&quot; to surround the source</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_HEADER_PRE_TABLE</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_HEADER_PRE_TABLE">GESHI_HEADER_PRE_TABLE</a> in geshi.php</div>
+							<div class="index-item-description">Use a &quot;table&quot; to surround the source:</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_HEADER_PRE_VALID</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_HEADER_PRE_VALID">GESHI_HEADER_PRE_VALID</a> in geshi.php</div>
+							<div class="index-item-description">Use a pre to wrap lines when line numbers are enabled or to wrap the whole code.</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Function.png" alt="Function" title="Function" /></title>
+			<span class="method-title">geshi_highlight</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#functiongeshi_highlight">geshi_highlight()</a> in geshi.php</div>
+							<div class="index-item-description">Easy way to highlight stuff. Behaves just like highlight_string</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_HOVER</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_HOVER">GESHI_HOVER</a> in geshi.php</div>
+							<div class="index-item-description">Links in the source in the :hover state</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_LANG_ROOT</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_LANG_ROOT">GESHI_LANG_ROOT</a> in geshi.php</div>
+							<div class="index-item-description">The language file directory for GeSHi</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_LINK</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_LINK">GESHI_LINK</a> in geshi.php</div>
+							<div class="index-item-description">Links in the source in the :link state</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_NORMAL_LINE_NUMBERS</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_NORMAL_LINE_NUMBERS">GESHI_NORMAL_LINE_NUMBERS</a> in geshi.php</div>
+							<div class="index-item-description">Use normal line numbers when building the result</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_NO_LINE_NUMBERS</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_NO_LINE_NUMBERS">GESHI_NO_LINE_NUMBERS</a> in geshi.php</div>
+							<div class="index-item-description">Use no line numbers when building the result</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_ROOT</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_ROOT">GESHI_ROOT</a> in geshi.php</div>
+							<div class="index-item-description">The root directory for GeSHi</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_SECURITY_PARANOID</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_SECURITY_PARANOID">GESHI_SECURITY_PARANOID</a> in geshi.php</div>
+							<div class="index-item-description">Tells GeSHi to be paranoid about security settings</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_START_IMPORTANT</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_START_IMPORTANT">GESHI_START_IMPORTANT</a> in geshi.php</div>
+							<div class="index-item-description">The starter for important parts of the source</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_VERSION</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_VERSION">GESHI_VERSION</a> in geshi.php</div>
+							<div class="index-item-description">The version of this GeSHi file</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_VISITED</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_VISITED">GESHI_VISITED</a> in geshi.php</div>
+							<div class="index-item-description">Links in the source in the :visited state</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">get_language_name</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodget_language_name">GeSHi::get_language_name()</a> in geshi.php</div>
+							<div class="index-item-description">Gets a human-readable language name (thanks to Simon Patterson  for the idea :))</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">get_language_name_from_extension</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodget_language_name_from_extension">GeSHi::get_language_name_from_extension()</a> in geshi.php</div>
+							<div class="index-item-description">Given a file extension, this method returns either a valid geshi language  name, or the empty string if it couldn't be found</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">get_multiline_span</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodget_multiline_span">GeSHi::get_multiline_span()</a> in geshi.php</div>
+							<div class="index-item-description">Get current setting for multiline spans, see GeSHi-&gt;enable_multiline_span().</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">get_real_tab_width</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodget_real_tab_width">GeSHi::get_real_tab_width()</a> in geshi.php</div>
+							<div class="index-item-description">Returns the tab width to use, based on the current language and user  preference</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">get_stylesheet</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodget_stylesheet">GeSHi::get_stylesheet()</a> in geshi.php</div>
+							<div class="index-item-description">Returns a stylesheet for the highlighted code. If $economy mode  is true, we only return the stylesheet declarations that matter for  this code block instead of the whole thing</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">get_time</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodget_time">GeSHi::get_time()</a> in geshi.php</div>
+							<div class="index-item-description">Gets the time taken to parse the code</div>
+					</dd>
+		</dl>
+	<a name="h"></a>
+	<div class="index-letter-section">
+		<div style="float: left" class="index-letter-title">h</div>
+		<div style="float: right"><a href="#top">top</a></div>
+		<div style="clear: both"></div>
+	</div>
+	<dl>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">highlight_lines_extra</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodhighlight_lines_extra">GeSHi::highlight_lines_extra()</a> in geshi.php</div>
+							<div class="index-item-description">Specifies which lines to highlight extra</div>
+					</dd>
+		</dl>
+	<a name="l"></a>
+	<div class="index-letter-section">
+		<div style="float: left" class="index-letter-title">l</div>
+		<div style="float: right"><a href="#top">top</a></div>
+		<div style="clear: both"></div>
+	</div>
+	<dl>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">load_from_file</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodload_from_file">GeSHi::load_from_file()</a> in geshi.php</div>
+							<div class="index-item-description">Given a file name, this method loads its contents in, and attempts</div>
+					</dd>
+		</dl>
+	<a name="o"></a>
+	<div class="index-letter-section">
+		<div style="float: left" class="index-letter-title">o</div>
+		<div style="float: right"><a href="#top">top</a></div>
+		<div style="clear: both"></div>
+	</div>
+	<dl>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">optimize_keyword_group</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodoptimize_keyword_group">GeSHi::optimize_keyword_group()</a> in geshi.php</div>
+							<div class="index-item-description">compile optimized regexp list for keyword group</div>
+					</dd>
+		</dl>
+	<a name="p"></a>
+	<div class="index-letter-section">
+		<div style="float: left" class="index-letter-title">p</div>
+		<div style="float: right"><a href="#top">top</a></div>
+		<div style="clear: both"></div>
+	</div>
+	<dl>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">parse_code</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodparse_code">GeSHi::parse_code()</a> in geshi.php</div>
+							<div class="index-item-description">Returns the code in $this-&gt;source, highlighted and surrounded by the  nessecary HTML.</div>
+					</dd>
+		</dl>
+	<a name="r"></a>
+	<div class="index-letter-section">
+		<div style="float: left" class="index-letter-title">r</div>
+		<div style="float: right"><a href="#top">top</a></div>
+		<div style="clear: both"></div>
+	</div>
+	<dl>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">remove_keyword</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodremove_keyword">GeSHi::remove_keyword()</a> in geshi.php</div>
+							<div class="index-item-description">Removes a keyword from a keyword group</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">remove_keyword_group</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodremove_keyword_group">GeSHi::remove_keyword_group()</a> in geshi.php</div>
+							<div class="index-item-description">Removes a keyword group</div>
+					</dd>
+		</dl>
+	<a name="s"></a>
+	<div class="index-letter-section">
+		<div style="float: left" class="index-letter-title">s</div>
+		<div style="float: right"><a href="#top">top</a></div>
+		<div style="clear: both"></div>
+	</div>
+	<dl>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_brackets_highlighting</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_brackets_highlighting">GeSHi::set_brackets_highlighting()</a> in geshi.php</div>
+							<div class="index-item-description">Turns highlighting on/off for brackets</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_brackets_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_brackets_style">GeSHi::set_brackets_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the styles for brackets. If $preserve_defaults is  true, then styles are merged with the default styles, with the  user defined styles having priority</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_case_keywords</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_case_keywords">GeSHi::set_case_keywords()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the case that keywords should use when found. Use the constants:</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_case_sensitivity</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_case_sensitivity">GeSHi::set_case_sensitivity()</a> in geshi.php</div>
+							<div class="index-item-description">Sets whether a set of keywords are checked for in a case sensitive manner</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_code_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_code_style">GeSHi::set_code_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the style for the actual code. This should be a string</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_comments_highlighting</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_comments_highlighting">GeSHi::set_comments_highlighting()</a> in geshi.php</div>
+							<div class="index-item-description">Turns highlighting on/off for comment groups</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_comments_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_comments_style">GeSHi::set_comments_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the styles for comment groups.  If $preserve_defaults is  true, then styles are merged with the default styles, with the  user defined styles having priority</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_encoding</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_encoding">GeSHi::set_encoding()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the encoding used for htmlspecialchars(), for international  support.</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_escape_characters_highlighting</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_escape_characters_highlighting">GeSHi::set_escape_characters_highlighting()</a> in geshi.php</div>
+							<div class="index-item-description">Turns highlighting on/off for escaped characters</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_escape_characters_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_escape_characters_style">GeSHi::set_escape_characters_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the styles for escaped characters. If $preserve_defaults is  true, then styles are merged with the default styles, with the  user defined styles having priority</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_footer_content</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_footer_content">GeSHi::set_footer_content()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the content of the footer block</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_footer_content_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_footer_content_style">GeSHi::set_footer_content_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the style for the footer content</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_header_content</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_header_content">GeSHi::set_header_content()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the content of the header block</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_header_content_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_header_content_style">GeSHi::set_header_content_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the style for the header content</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_header_type</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_header_type">GeSHi::set_header_type()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the type of header to be used.</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_highlight_lines_extra_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_highlight_lines_extra_style">GeSHi::set_highlight_lines_extra_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the style for extra-highlighted lines</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_important_styles</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_important_styles">GeSHi::set_important_styles()</a> in geshi.php</div>
+							<div class="index-item-description">Sets styles for important parts of the code</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_keyword_group_highlighting</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_keyword_group_highlighting">GeSHi::set_keyword_group_highlighting()</a> in geshi.php</div>
+							<div class="index-item-description">Turns highlighting on/off for a keyword group</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_keyword_group_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_keyword_group_style">GeSHi::set_keyword_group_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the style for a keyword group. If $preserve_defaults is  true, then styles are merged with the default styles, with the  user defined styles having priority</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_language</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_language">GeSHi::set_language()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the language for this object</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_language_path</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_language_path">GeSHi::set_language_path()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the path to the directory containing the language files. Note  that this path is relative to the directory of the script that included  geshi.php, NOT geshi.php itself.</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_line_ending</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_line_ending">GeSHi::set_line_ending()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the line-ending</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_line_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_line_style">GeSHi::set_line_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the styles for the line numbers.</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_link_styles</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_link_styles">GeSHi::set_link_styles()</a> in geshi.php</div>
+							<div class="index-item-description">Sets styles for links in code</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_link_target</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_link_target">GeSHi::set_link_target()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the target for links in code</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_methods_highlighting</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_methods_highlighting">GeSHi::set_methods_highlighting()</a> in geshi.php</div>
+							<div class="index-item-description">Turns highlighting on/off for methods</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_methods_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_methods_style">GeSHi::set_methods_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the styles for methods. $key is a number that references the</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_numbers_highlighting</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_numbers_highlighting">GeSHi::set_numbers_highlighting()</a> in geshi.php</div>
+							<div class="index-item-description">Turns highlighting on/off for numbers</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_numbers_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_numbers_style">GeSHi::set_numbers_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the styles for numbers. If $preserve_defaults is  true, then styles are merged with the default styles, with the  user defined styles having priority</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_overall_class</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_overall_class">GeSHi::set_overall_class()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the overall classname for this block of code. This  class can then be used in a stylesheet to style this object's  output</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_overall_id</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_overall_id">GeSHi::set_overall_id()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the overall id for this block of code. This id can then  be used in a stylesheet to style this object's output</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_overall_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_overall_style">GeSHi::set_overall_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the styles for the code that will be outputted  when this object is parsed. The style should be a  string of valid stylesheet declarations</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_regexps_highlighting</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_regexps_highlighting">GeSHi::set_regexps_highlighting()</a> in geshi.php</div>
+							<div class="index-item-description">Turns highlighting on/off for regexps</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_regexps_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_regexps_style">GeSHi::set_regexps_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the styles for regexps. If $preserve_defaults is  true, then styles are merged with the default styles, with the  user defined styles having priority</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_source</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_source">GeSHi::set_source()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the source code for this object</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_strings_highlighting</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_strings_highlighting">GeSHi::set_strings_highlighting()</a> in geshi.php</div>
+							<div class="index-item-description">Turns highlighting on/off for strings</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_strings_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_strings_style">GeSHi::set_strings_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the styles for strings. If $preserve_defaults is  true, then styles are merged with the default styles, with the  user defined styles having priority</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_symbols_highlighting</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_symbols_highlighting">GeSHi::set_symbols_highlighting()</a> in geshi.php</div>
+							<div class="index-item-description">Turns highlighting on/off for symbols</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_symbols_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_symbols_style">GeSHi::set_symbols_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the styles for symbols. If $preserve_defaults is  true, then styles are merged with the default styles, with the  user defined styles having priority</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_tab_width</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_tab_width">GeSHi::set_tab_width()</a> in geshi.php</div>
+							<div class="index-item-description">Sets how many spaces a tab is substituted for</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_url_for_keyword_group</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_url_for_keyword_group">GeSHi::set_url_for_keyword_group()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the base URL to be used for keywords</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_use_language_tab_width</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_use_language_tab_width">GeSHi::set_use_language_tab_width()</a> in geshi.php</div>
+							<div class="index-item-description">Sets whether or not to use tab-stop width specifed by language</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">start_line_numbers_at</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodstart_line_numbers_at">GeSHi::start_line_numbers_at()</a> in geshi.php</div>
+							<div class="index-item-description">Sets what number line numbers should start at. Should  be a positive integer, and will be converted to one.</div>
+					</dd>
+		</dl>
+
+<div class="index-letter-menu">
+	<a class="index-letter" href="elementindex.html#a">a</a>
+	<a class="index-letter" href="elementindex.html#d">d</a>
+	<a class="index-letter" href="elementindex.html#e">e</a>
+	<a class="index-letter" href="elementindex.html#g">g</a>
+	<a class="index-letter" href="elementindex.html#h">h</a>
+	<a class="index-letter" href="elementindex.html#l">l</a>
+	<a class="index-letter" href="elementindex.html#o">o</a>
+	<a class="index-letter" href="elementindex.html#p">p</a>
+	<a class="index-letter" href="elementindex.html#r">r</a>
+	<a class="index-letter" href="elementindex.html#s">s</a>
+</div>	</body>
+</html>

+ 864 - 0
lib/geshi/docs/api/elementindex_geshi.html

@@ -0,0 +1,864 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+  <html xmlns="http://www.w3.org/1999/xhtml">
+		<head>
+			<!-- template designed by Marco Von Ballmoos -->
+			<title></title>
+			<link rel="stylesheet" href="media/stylesheet.css" />
+			<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
+		</head>
+		<body>
+						<a name="top"></a>
+<h2>[geshi] element index</h2>
+<a href="elementindex.html">All elements</a>
+<br />
+<div class="index-letter-menu">
+	<a class="index-letter" href="elementindex_geshi.html#a">a</a>
+	<a class="index-letter" href="elementindex_geshi.html#d">d</a>
+	<a class="index-letter" href="elementindex_geshi.html#e">e</a>
+	<a class="index-letter" href="elementindex_geshi.html#g">g</a>
+	<a class="index-letter" href="elementindex_geshi.html#h">h</a>
+	<a class="index-letter" href="elementindex_geshi.html#l">l</a>
+	<a class="index-letter" href="elementindex_geshi.html#o">o</a>
+	<a class="index-letter" href="elementindex_geshi.html#p">p</a>
+	<a class="index-letter" href="elementindex_geshi.html#r">r</a>
+	<a class="index-letter" href="elementindex_geshi.html#s">s</a>
+</div>
+
+	<a name="a"></a>
+	<div class="index-letter-section">
+		<div style="float: left" class="index-letter-title">a</div>
+		<div style="float: right"><a href="#top">top</a></div>
+		<div style="clear: both"></div>
+	</div>
+	<dl>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">add_keyword</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodadd_keyword">GeSHi::add_keyword()</a> in geshi.php</div>
+							<div class="index-item-description">Adds a keyword to a keyword group for highlighting</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">add_keyword_group</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodadd_keyword_group">GeSHi::add_keyword_group()</a> in geshi.php</div>
+							<div class="index-item-description">Creates a new keyword group</div>
+					</dd>
+		</dl>
+	<a name="d"></a>
+	<div class="index-letter-section">
+		<div style="float: left" class="index-letter-title">d</div>
+		<div style="float: right"><a href="#top">top</a></div>
+		<div style="clear: both"></div>
+	</div>
+	<dl>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">disable_highlighting</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methoddisable_highlighting">GeSHi::disable_highlighting()</a> in geshi.php</div>
+							<div class="index-item-description">Disables all highlighting</div>
+					</dd>
+		</dl>
+	<a name="e"></a>
+	<div class="index-letter-section">
+		<div style="float: left" class="index-letter-title">e</div>
+		<div style="float: right"><a href="#top">top</a></div>
+		<div style="clear: both"></div>
+	</div>
+	<dl>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">enable_classes</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodenable_classes">GeSHi::enable_classes()</a> in geshi.php</div>
+							<div class="index-item-description">Sets whether CSS classes should be used to highlight the source. Default  is off, calling this method with no arguments will turn it on</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">enable_highlighting</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodenable_highlighting">GeSHi::enable_highlighting()</a> in geshi.php</div>
+							<div class="index-item-description">Enables all highlighting</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">enable_ids</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodenable_ids">GeSHi::enable_ids()</a> in geshi.php</div>
+							<div class="index-item-description">Whether CSS IDs should be added to each line</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">enable_important_blocks</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodenable_important_blocks">GeSHi::enable_important_blocks()</a> in geshi.php</div>
+							<div class="index-item-description">Sets whether context-important blocks are highlighted</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">enable_inner_code_block</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodenable_inner_code_block">GeSHi::enable_inner_code_block()</a> in geshi.php</div>
+							<div class="index-item-description">Sets whether to force a surrounding block around  the highlighted code or not</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">enable_keyword_links</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodenable_keyword_links">GeSHi::enable_keyword_links()</a> in geshi.php</div>
+							<div class="index-item-description">Turns linking of keywords on or off.</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">enable_line_numbers</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodenable_line_numbers">GeSHi::enable_line_numbers()</a> in geshi.php</div>
+							<div class="index-item-description">Sets whether line numbers should be displayed.</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">enable_multiline_span</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodenable_multiline_span">GeSHi::enable_multiline_span()</a> in geshi.php</div>
+							<div class="index-item-description">Sets wether spans and other HTML markup generated by GeSHi can  span over multiple lines or not. Defaults to true to reduce overhead.</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">enable_strict_mode</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodenable_strict_mode">GeSHi::enable_strict_mode()</a> in geshi.php</div>
+							<div class="index-item-description">Enables/disables strict highlighting. Default is off, calling this  method without parameters will turn it on. See documentation  for more details on strict mode and where to use it.</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">error</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methoderror">GeSHi::error()</a> in geshi.php</div>
+							<div class="index-item-description">Returns an error message associated with the last GeSHi operation,  or false if no error has occured</div>
+					</dd>
+		</dl>
+	<a name="g"></a>
+	<div class="index-letter-section">
+		<div style="float: left" class="index-letter-title">g</div>
+		<div style="float: right"><a href="#top">top</a></div>
+		<div style="clear: both"></div>
+	</div>
+	<dl>
+			<dt class="field">
+						<img src="media/images/Constructor.png" alt="Method" title="Method" /></title>
+			<span class="method-title">GeSHi</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodGeSHi">GeSHi::GeSHi()</a> in geshi.php</div>
+							<div class="index-item-description">Creates a new GeSHi object, with source and language</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Class.png" alt="Class" title="Class" /></title>
+			GeSHi
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html">GeSHi</a> in geshi.php</div>
+							<div class="index-item-description">The GeSHi Class.</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Page.png" alt="Page" title="Page" /></title>
+			<span class="include-title">geshi.php</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html">geshi.php</a> in geshi.php</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_ACTIVE</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_ACTIVE">GESHI_ACTIVE</a> in geshi.php</div>
+							<div class="index-item-description">Links in the source in the :active state</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_CAPS_LOWER</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_CAPS_LOWER">GESHI_CAPS_LOWER</a> in geshi.php</div>
+							<div class="index-item-description">Leave keywords found as the case that they are</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_CAPS_NO_CHANGE</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_CAPS_NO_CHANGE">GESHI_CAPS_NO_CHANGE</a> in geshi.php</div>
+							<div class="index-item-description">Lowercase keywords found</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_CAPS_UPPER</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_CAPS_UPPER">GESHI_CAPS_UPPER</a> in geshi.php</div>
+							<div class="index-item-description">Uppercase keywords found</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_END_IMPORTANT</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_END_IMPORTANT">GESHI_END_IMPORTANT</a> in geshi.php</div>
+							<div class="index-item-description">The ender for important parts of the source</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_FANCY_LINE_NUMBERS</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_FANCY_LINE_NUMBERS">GESHI_FANCY_LINE_NUMBERS</a> in geshi.php</div>
+							<div class="index-item-description">Use fancy line numbers when building the result</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_HEADER_DIV</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_HEADER_DIV">GESHI_HEADER_DIV</a> in geshi.php</div>
+							<div class="index-item-description">Use a &quot;div&quot; to surround the source</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_HEADER_NONE</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_HEADER_NONE">GESHI_HEADER_NONE</a> in geshi.php</div>
+							<div class="index-item-description">Use nothing to surround the source</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_HEADER_PRE</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_HEADER_PRE">GESHI_HEADER_PRE</a> in geshi.php</div>
+							<div class="index-item-description">Use a &quot;pre&quot; to surround the source</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_HEADER_PRE_TABLE</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_HEADER_PRE_TABLE">GESHI_HEADER_PRE_TABLE</a> in geshi.php</div>
+							<div class="index-item-description">Use a &quot;table&quot; to surround the source:</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_HEADER_PRE_VALID</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_HEADER_PRE_VALID">GESHI_HEADER_PRE_VALID</a> in geshi.php</div>
+							<div class="index-item-description">Use a pre to wrap lines when line numbers are enabled or to wrap the whole code.</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Function.png" alt="Function" title="Function" /></title>
+			<span class="method-title">geshi_highlight</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#functiongeshi_highlight">geshi_highlight()</a> in geshi.php</div>
+							<div class="index-item-description">Easy way to highlight stuff. Behaves just like highlight_string</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_HOVER</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_HOVER">GESHI_HOVER</a> in geshi.php</div>
+							<div class="index-item-description">Links in the source in the :hover state</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_LANG_ROOT</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_LANG_ROOT">GESHI_LANG_ROOT</a> in geshi.php</div>
+							<div class="index-item-description">The language file directory for GeSHi</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_LINK</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_LINK">GESHI_LINK</a> in geshi.php</div>
+							<div class="index-item-description">Links in the source in the :link state</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_NORMAL_LINE_NUMBERS</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_NORMAL_LINE_NUMBERS">GESHI_NORMAL_LINE_NUMBERS</a> in geshi.php</div>
+							<div class="index-item-description">Use normal line numbers when building the result</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_NO_LINE_NUMBERS</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_NO_LINE_NUMBERS">GESHI_NO_LINE_NUMBERS</a> in geshi.php</div>
+							<div class="index-item-description">Use no line numbers when building the result</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_ROOT</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_ROOT">GESHI_ROOT</a> in geshi.php</div>
+							<div class="index-item-description">The root directory for GeSHi</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_SECURITY_PARANOID</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_SECURITY_PARANOID">GESHI_SECURITY_PARANOID</a> in geshi.php</div>
+							<div class="index-item-description">Tells GeSHi to be paranoid about security settings</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_START_IMPORTANT</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_START_IMPORTANT">GESHI_START_IMPORTANT</a> in geshi.php</div>
+							<div class="index-item-description">The starter for important parts of the source</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_VERSION</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_VERSION">GESHI_VERSION</a> in geshi.php</div>
+							<div class="index-item-description">The version of this GeSHi file</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Constant.png" alt="Constant" title="Constant" /></title>
+			<span class="const-title">GESHI_VISITED</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/_geshi.php.html#defineGESHI_VISITED">GESHI_VISITED</a> in geshi.php</div>
+							<div class="index-item-description">Links in the source in the :visited state</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">get_language_name</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodget_language_name">GeSHi::get_language_name()</a> in geshi.php</div>
+							<div class="index-item-description">Gets a human-readable language name (thanks to Simon Patterson  for the idea :))</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">get_language_name_from_extension</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodget_language_name_from_extension">GeSHi::get_language_name_from_extension()</a> in geshi.php</div>
+							<div class="index-item-description">Given a file extension, this method returns either a valid geshi language  name, or the empty string if it couldn't be found</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">get_multiline_span</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodget_multiline_span">GeSHi::get_multiline_span()</a> in geshi.php</div>
+							<div class="index-item-description">Get current setting for multiline spans, see GeSHi-&gt;enable_multiline_span().</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">get_real_tab_width</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodget_real_tab_width">GeSHi::get_real_tab_width()</a> in geshi.php</div>
+							<div class="index-item-description">Returns the tab width to use, based on the current language and user  preference</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">get_stylesheet</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodget_stylesheet">GeSHi::get_stylesheet()</a> in geshi.php</div>
+							<div class="index-item-description">Returns a stylesheet for the highlighted code. If $economy mode  is true, we only return the stylesheet declarations that matter for  this code block instead of the whole thing</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">get_time</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodget_time">GeSHi::get_time()</a> in geshi.php</div>
+							<div class="index-item-description">Gets the time taken to parse the code</div>
+					</dd>
+		</dl>
+	<a name="h"></a>
+	<div class="index-letter-section">
+		<div style="float: left" class="index-letter-title">h</div>
+		<div style="float: right"><a href="#top">top</a></div>
+		<div style="clear: both"></div>
+	</div>
+	<dl>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">highlight_lines_extra</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodhighlight_lines_extra">GeSHi::highlight_lines_extra()</a> in geshi.php</div>
+							<div class="index-item-description">Specifies which lines to highlight extra</div>
+					</dd>
+		</dl>
+	<a name="l"></a>
+	<div class="index-letter-section">
+		<div style="float: left" class="index-letter-title">l</div>
+		<div style="float: right"><a href="#top">top</a></div>
+		<div style="clear: both"></div>
+	</div>
+	<dl>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">load_from_file</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodload_from_file">GeSHi::load_from_file()</a> in geshi.php</div>
+							<div class="index-item-description">Given a file name, this method loads its contents in, and attempts</div>
+					</dd>
+		</dl>
+	<a name="o"></a>
+	<div class="index-letter-section">
+		<div style="float: left" class="index-letter-title">o</div>
+		<div style="float: right"><a href="#top">top</a></div>
+		<div style="clear: both"></div>
+	</div>
+	<dl>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">optimize_keyword_group</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodoptimize_keyword_group">GeSHi::optimize_keyword_group()</a> in geshi.php</div>
+							<div class="index-item-description">compile optimized regexp list for keyword group</div>
+					</dd>
+		</dl>
+	<a name="p"></a>
+	<div class="index-letter-section">
+		<div style="float: left" class="index-letter-title">p</div>
+		<div style="float: right"><a href="#top">top</a></div>
+		<div style="clear: both"></div>
+	</div>
+	<dl>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">parse_code</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodparse_code">GeSHi::parse_code()</a> in geshi.php</div>
+							<div class="index-item-description">Returns the code in $this-&gt;source, highlighted and surrounded by the  nessecary HTML.</div>
+					</dd>
+		</dl>
+	<a name="r"></a>
+	<div class="index-letter-section">
+		<div style="float: left" class="index-letter-title">r</div>
+		<div style="float: right"><a href="#top">top</a></div>
+		<div style="clear: both"></div>
+	</div>
+	<dl>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">remove_keyword</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodremove_keyword">GeSHi::remove_keyword()</a> in geshi.php</div>
+							<div class="index-item-description">Removes a keyword from a keyword group</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">remove_keyword_group</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodremove_keyword_group">GeSHi::remove_keyword_group()</a> in geshi.php</div>
+							<div class="index-item-description">Removes a keyword group</div>
+					</dd>
+		</dl>
+	<a name="s"></a>
+	<div class="index-letter-section">
+		<div style="float: left" class="index-letter-title">s</div>
+		<div style="float: right"><a href="#top">top</a></div>
+		<div style="clear: both"></div>
+	</div>
+	<dl>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_brackets_highlighting</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_brackets_highlighting">GeSHi::set_brackets_highlighting()</a> in geshi.php</div>
+							<div class="index-item-description">Turns highlighting on/off for brackets</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_brackets_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_brackets_style">GeSHi::set_brackets_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the styles for brackets. If $preserve_defaults is  true, then styles are merged with the default styles, with the  user defined styles having priority</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_case_keywords</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_case_keywords">GeSHi::set_case_keywords()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the case that keywords should use when found. Use the constants:</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_case_sensitivity</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_case_sensitivity">GeSHi::set_case_sensitivity()</a> in geshi.php</div>
+							<div class="index-item-description">Sets whether a set of keywords are checked for in a case sensitive manner</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_code_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_code_style">GeSHi::set_code_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the style for the actual code. This should be a string</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_comments_highlighting</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_comments_highlighting">GeSHi::set_comments_highlighting()</a> in geshi.php</div>
+							<div class="index-item-description">Turns highlighting on/off for comment groups</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_comments_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_comments_style">GeSHi::set_comments_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the styles for comment groups.  If $preserve_defaults is  true, then styles are merged with the default styles, with the  user defined styles having priority</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_encoding</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_encoding">GeSHi::set_encoding()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the encoding used for htmlspecialchars(), for international  support.</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_escape_characters_highlighting</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_escape_characters_highlighting">GeSHi::set_escape_characters_highlighting()</a> in geshi.php</div>
+							<div class="index-item-description">Turns highlighting on/off for escaped characters</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_escape_characters_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_escape_characters_style">GeSHi::set_escape_characters_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the styles for escaped characters. If $preserve_defaults is  true, then styles are merged with the default styles, with the  user defined styles having priority</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_footer_content</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_footer_content">GeSHi::set_footer_content()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the content of the footer block</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_footer_content_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_footer_content_style">GeSHi::set_footer_content_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the style for the footer content</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_header_content</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_header_content">GeSHi::set_header_content()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the content of the header block</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_header_content_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_header_content_style">GeSHi::set_header_content_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the style for the header content</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_header_type</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_header_type">GeSHi::set_header_type()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the type of header to be used.</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_highlight_lines_extra_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_highlight_lines_extra_style">GeSHi::set_highlight_lines_extra_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the style for extra-highlighted lines</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_important_styles</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_important_styles">GeSHi::set_important_styles()</a> in geshi.php</div>
+							<div class="index-item-description">Sets styles for important parts of the code</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_keyword_group_highlighting</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_keyword_group_highlighting">GeSHi::set_keyword_group_highlighting()</a> in geshi.php</div>
+							<div class="index-item-description">Turns highlighting on/off for a keyword group</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_keyword_group_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_keyword_group_style">GeSHi::set_keyword_group_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the style for a keyword group. If $preserve_defaults is  true, then styles are merged with the default styles, with the  user defined styles having priority</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_language</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_language">GeSHi::set_language()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the language for this object</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_language_path</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_language_path">GeSHi::set_language_path()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the path to the directory containing the language files. Note  that this path is relative to the directory of the script that included  geshi.php, NOT geshi.php itself.</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_line_ending</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_line_ending">GeSHi::set_line_ending()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the line-ending</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_line_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_line_style">GeSHi::set_line_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the styles for the line numbers.</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_link_styles</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_link_styles">GeSHi::set_link_styles()</a> in geshi.php</div>
+							<div class="index-item-description">Sets styles for links in code</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_link_target</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_link_target">GeSHi::set_link_target()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the target for links in code</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_methods_highlighting</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_methods_highlighting">GeSHi::set_methods_highlighting()</a> in geshi.php</div>
+							<div class="index-item-description">Turns highlighting on/off for methods</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_methods_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_methods_style">GeSHi::set_methods_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the styles for methods. $key is a number that references the</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_numbers_highlighting</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_numbers_highlighting">GeSHi::set_numbers_highlighting()</a> in geshi.php</div>
+							<div class="index-item-description">Turns highlighting on/off for numbers</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_numbers_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_numbers_style">GeSHi::set_numbers_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the styles for numbers. If $preserve_defaults is  true, then styles are merged with the default styles, with the  user defined styles having priority</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_overall_class</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_overall_class">GeSHi::set_overall_class()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the overall classname for this block of code. This  class can then be used in a stylesheet to style this object's  output</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_overall_id</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_overall_id">GeSHi::set_overall_id()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the overall id for this block of code. This id can then  be used in a stylesheet to style this object's output</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_overall_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_overall_style">GeSHi::set_overall_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the styles for the code that will be outputted  when this object is parsed. The style should be a  string of valid stylesheet declarations</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_regexps_highlighting</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_regexps_highlighting">GeSHi::set_regexps_highlighting()</a> in geshi.php</div>
+							<div class="index-item-description">Turns highlighting on/off for regexps</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_regexps_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_regexps_style">GeSHi::set_regexps_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the styles for regexps. If $preserve_defaults is  true, then styles are merged with the default styles, with the  user defined styles having priority</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_source</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_source">GeSHi::set_source()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the source code for this object</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_strings_highlighting</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_strings_highlighting">GeSHi::set_strings_highlighting()</a> in geshi.php</div>
+							<div class="index-item-description">Turns highlighting on/off for strings</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_strings_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_strings_style">GeSHi::set_strings_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the styles for strings. If $preserve_defaults is  true, then styles are merged with the default styles, with the  user defined styles having priority</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_symbols_highlighting</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_symbols_highlighting">GeSHi::set_symbols_highlighting()</a> in geshi.php</div>
+							<div class="index-item-description">Turns highlighting on/off for symbols</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_symbols_style</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_symbols_style">GeSHi::set_symbols_style()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the styles for symbols. If $preserve_defaults is  true, then styles are merged with the default styles, with the  user defined styles having priority</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_tab_width</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_tab_width">GeSHi::set_tab_width()</a> in geshi.php</div>
+							<div class="index-item-description">Sets how many spaces a tab is substituted for</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_url_for_keyword_group</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_url_for_keyword_group">GeSHi::set_url_for_keyword_group()</a> in geshi.php</div>
+							<div class="index-item-description">Sets the base URL to be used for keywords</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">set_use_language_tab_width</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodset_use_language_tab_width">GeSHi::set_use_language_tab_width()</a> in geshi.php</div>
+							<div class="index-item-description">Sets whether or not to use tab-stop width specifed by language</div>
+					</dd>
+			<dt class="field">
+						<img src="media/images/Method.png" alt="Method" title="Method" /></title>
+			<span class="method-title">start_line_numbers_at</span>
+					</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details"><a href="geshi/core/GeSHi.html#methodstart_line_numbers_at">GeSHi::start_line_numbers_at()</a> in geshi.php</div>
+							<div class="index-item-description">Sets what number line numbers should start at. Should  be a positive integer, and will be converted to one.</div>
+					</dd>
+		</dl>
+
+<div class="index-letter-menu">
+	<a class="index-letter" href="elementindex_geshi.html#a">a</a>
+	<a class="index-letter" href="elementindex_geshi.html#d">d</a>
+	<a class="index-letter" href="elementindex_geshi.html#e">e</a>
+	<a class="index-letter" href="elementindex_geshi.html#g">g</a>
+	<a class="index-letter" href="elementindex_geshi.html#h">h</a>
+	<a class="index-letter" href="elementindex_geshi.html#l">l</a>
+	<a class="index-letter" href="elementindex_geshi.html#o">o</a>
+	<a class="index-letter" href="elementindex_geshi.html#p">p</a>
+	<a class="index-letter" href="elementindex_geshi.html#r">r</a>
+	<a class="index-letter" href="elementindex_geshi.html#s">s</a>
+</div>	</body>
+</html>

+ 20 - 0
lib/geshi/docs/api/errors.html

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+  <html xmlns="http://www.w3.org/1999/xhtml">
+		<head>
+			<!-- template designed by Marco Von Ballmoos -->
+			<title>phpDocumentor Parser Errors and Warnings</title>
+			<link rel="stylesheet" href="media/stylesheet.css" />
+			<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
+		</head>
+		<body>
+						<a href="#Post-parsing">Post-parsing</a><br>
+<a name="geshi.php"></a>
+<h1>geshi.php</h1>
+<h2>Errors:</h2><br>
+<b>Error on line 569</b> - DocBlock has multiple @access tags, illegal. ignoring additional tag "@access private"<br>
+	<p class="notes" id="credit">
+		Documentation generated on Thu, 25 Dec 2008 14:34:53 +0100 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.2</a>
+	</p>
+	</body>
+</html>

File diff suppressed because it is too large
+ 2676 - 0
lib/geshi/docs/api/geshi/core/GeSHi.html


File diff suppressed because it is too large
+ 478 - 0
lib/geshi/docs/api/geshi/core/_geshi.php.html


+ 24 - 0
lib/geshi/docs/api/index.html

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html 
+     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//FR"
+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
+   <html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<!-- Generated by phpDocumentor on Thu, 25 Dec 2008 14:34:34 +0100  -->
+  <title>GeSHi 1.0.8</title>
+  <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
+</head>
+
+<FRAMESET rows='120,*'>
+	<FRAME src='packages.html' name='left_top' frameborder="1" bordercolor="#999999">
+	<FRAMESET cols='25%,*'>
+		<FRAME src='li_geshi.html' name='left_bottom' frameborder="1" bordercolor="#999999">
+		<FRAME src='blank.html' name='right' frameborder="1" bordercolor="#999999">
+	</FRAMESET>
+	<NOFRAMES>
+		<H2>Frame Alert</H2>
+		<P>This document is designed to be viewed using the frames feature.
+		If you see this message, you are using a non-frame-capable web client.</P>
+	</NOFRAMES>
+</FRAMESET>
+</HTML>

+ 46 - 0
lib/geshi/docs/api/li_geshi.html

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+  <html xmlns="http://www.w3.org/1999/xhtml">
+		<head>
+			<!-- template designed by Marco Von Ballmoos -->
+			<title></title>
+			<link rel="stylesheet" href="media/stylesheet.css" />
+			<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
+		</head>
+		<body>
+						<div class="package-title">geshi</div>
+<div class="package-details">
+			
+	<dl class="tree">
+		
+		<dt class="folder-title">Description</dt>
+		<dd>
+			<a href='classtrees_geshi.html' target='right'>Class trees</a><br />
+			<a href='elementindex_geshi.html' target='right'>Index of elements</a><br />
+							<a href="todolist.html" target="right">Todo List</a><br />
+					</dd>
+	
+							
+							
+																												
+						
+							
+											
+				<dt class="sub-package"><img class="tree-icon" src="media/images/package.png" alt="Sub-package">core</dt>
+				<dd>
+					<dl class="tree">
+																			<dt class="folder-title"><img class="tree-icon" src="media/images/class_folder.png" alt=" ">Classes</dt>
+															<dd><img class="tree-icon" src="media/images/Class.png" alt="Class"><a href='geshi/core/GeSHi.html' target='right'>GeSHi</a></dd>
+																										<dt class="folder-title"><img class="tree-icon" src="media/images/function_folder.png" alt=" ">Functions</dt>
+															<dd><img class="tree-icon" src="media/images/Function.png" alt="Function"><a href='geshi/core/_geshi.php.html#functiongeshi_highlight' target='right'>geshi_highlight</a></dd>
+																										<dt class="folder-title"><img class="tree-icon" src="media/images/folder.png" alt=" ">Files</dt>
+															<dd><img class="tree-icon" src="media/images/Page.png" alt="File"><a href='geshi/core/_geshi.php.html' target='right'>geshi.php</a></dd>
+																		</dl>
+				</dd>
+								
+						
+			</dl>
+</div>
+<p class="notes"><a href="http://www.phpdoc.org" target="_blank">phpDocumentor v <span class="field">1.4.2</span></a></p>
+</BODY>
+</HTML>

+ 33 - 0
lib/geshi/docs/api/media/banner.css

@@ -0,0 +1,33 @@
+body 
+{ 
+	background-color: #EEEEEE; 
+	margin: 0px; 
+	padding: 0px;
+}
+
+/* Banner (top bar) classes */
+
+.banner {  }
+
+.banner-menu 
+{
+	text-align: right;
+	clear: both;
+	padding: .5em;
+	border-top: 2px solid #AAAAAA;	
+}
+
+.banner-title 
+{ 
+	text-align: right; 
+	font-size: 20pt; 
+	font-weight: bold; 
+	margin: .2em;
+}
+
+.package-selector 
+{ 
+	background-color: #DDDDDD; 
+	border: 1px solid #AAAAAA; 
+	color: #000090;
+}

BIN
lib/geshi/docs/api/media/images/AbstractClass.png


BIN
lib/geshi/docs/api/media/images/AbstractClass_logo.png


BIN
lib/geshi/docs/api/media/images/AbstractMethod.png


BIN
lib/geshi/docs/api/media/images/AbstractPrivateClass.png


BIN
lib/geshi/docs/api/media/images/AbstractPrivateClass_logo.png


BIN
lib/geshi/docs/api/media/images/AbstractPrivateMethod.png


BIN
lib/geshi/docs/api/media/images/Class.png


BIN
lib/geshi/docs/api/media/images/Class_logo.png


BIN
lib/geshi/docs/api/media/images/Constant.png


BIN
lib/geshi/docs/api/media/images/Constructor.png


BIN
lib/geshi/docs/api/media/images/Destructor.png


BIN
lib/geshi/docs/api/media/images/Function.png


BIN
lib/geshi/docs/api/media/images/Global.png


BIN
lib/geshi/docs/api/media/images/I.png


BIN
lib/geshi/docs/api/media/images/Index.png


BIN
lib/geshi/docs/api/media/images/Interface.png


BIN
lib/geshi/docs/api/media/images/Interface_logo.png


BIN
lib/geshi/docs/api/media/images/L.png


BIN
lib/geshi/docs/api/media/images/Lminus.png


BIN
lib/geshi/docs/api/media/images/Lplus.png


BIN
lib/geshi/docs/api/media/images/Method.png


BIN
lib/geshi/docs/api/media/images/Page.png


BIN
lib/geshi/docs/api/media/images/Page_logo.png


BIN
lib/geshi/docs/api/media/images/PrivateClass.png


BIN
lib/geshi/docs/api/media/images/PrivateClass_logo.png


BIN
lib/geshi/docs/api/media/images/PrivateMethod.png


BIN
lib/geshi/docs/api/media/images/PrivateVariable.png


BIN
lib/geshi/docs/api/media/images/StaticMethod.png


BIN
lib/geshi/docs/api/media/images/StaticVariable.png


BIN
lib/geshi/docs/api/media/images/T.png


BIN
lib/geshi/docs/api/media/images/Tminus.png


BIN
lib/geshi/docs/api/media/images/Tplus.png


BIN
lib/geshi/docs/api/media/images/Variable.png


BIN
lib/geshi/docs/api/media/images/blank.png


BIN
lib/geshi/docs/api/media/images/class_folder.png


BIN
lib/geshi/docs/api/media/images/empty.png


BIN
lib/geshi/docs/api/media/images/file.png


BIN
lib/geshi/docs/api/media/images/folder.png


BIN
lib/geshi/docs/api/media/images/function_folder.png


BIN
lib/geshi/docs/api/media/images/next_button.png


BIN
lib/geshi/docs/api/media/images/next_button_disabled.png


BIN
lib/geshi/docs/api/media/images/package.png


BIN
lib/geshi/docs/api/media/images/package_folder.png


BIN
lib/geshi/docs/api/media/images/previous_button.png


BIN
lib/geshi/docs/api/media/images/previous_button_disabled.png


BIN
lib/geshi/docs/api/media/images/private_class_logo.png


BIN
lib/geshi/docs/api/media/images/tutorial.png


BIN
lib/geshi/docs/api/media/images/tutorial_folder.png


BIN
lib/geshi/docs/api/media/images/up_button.png


+ 146 - 0
lib/geshi/docs/api/media/stylesheet.css

@@ -0,0 +1,146 @@
+a { color: #000090; text-decoration: none; }
+a:hover, a:active, a:focus { color: highlighttext; background-color: highlight; text-decoration: none; }
+
+body { background: #FFFFFF; }
+body, table { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; }
+
+a img { border: 0px; }
+
+/* Page layout/boxes */
+
+.info-box {  }
+.info-box-title { margin: 1em 0em 0em 0em; font-weight: normal; font-size: 14pt; color: #999999; border-bottom: 2px solid #999999; }
+.info-box-body { border: 1px solid #999999; padding: .5em; }
+.nav-bar { font-size: 8pt; white-space: nowrap; text-align: right; padding: .2em; margin: 0em 0em 1em 0em; }
+
+.oddrow { background-color: #F8F8F8; border: 1px solid #AAAAAA; padding: .5em; margin-bottom: 1em}
+.evenrow { border: 1px solid #AAAAAA; padding: .5em; margin-bottom: 1em}
+
+.page-body { max-width: 800px; margin: auto; }
+.tree { white-space: nowrap; font: icon }
+.tree dd { margin-left: 19px }
+.tree dl { margin: 0px }
+.tree-icon { 	vertical-align: middle; border: 0px; margin-right: 3px }
+
+/* Index formatting classes */
+
+.index-item-body { margin-top: .5em; margin-bottom: .5em}
+.index-item-description { margin-top: .25em }
+.index-item-details { font-weight: normal; font-style: italic; font-size: 8pt }
+.index-letter-section { background-color: #EEEEEE; border: 1px dotted #999999; padding: .5em; margin-bottom: 1em}
+.index-letter-title { font-size: 12pt; font-weight: bold }
+.index-letter-menu { text-align: center; margin: 1em }
+.index-letter { font-size: 12pt }
+
+/* Docbook classes */
+
+.description {}
+.short-description { font-weight: bold; color: #666666; }
+.tags {	padding-left: 0em; margin-left: 3em; color: #666666; list-style-type: square; }
+.parameters {	padding-left: 0em; margin-left: 3em; color: #014fbe; list-style-type: square; }
+.redefinitions { font-size: 8pt; padding-left: 0em; margin-left: 2em; }
+.package { font-weight: bold; }
+.package-title { font-weight: bold; font-size: 14pt; border-bottom: 1px solid black }
+.package-details { font-size: 85%; }
+.sub-package { font-weight: bold; }
+.tutorial { border-width: thin; border-color: #0066ff; }
+.tutorial-nav-box { width: 100%; border: 1px solid #999999; background-color: #F8F8F8; }
+.folder-title { font-style: italic; font-family: Verdana, Arial, Helvetica, sans-serif }
+
+/* Generic formatting */
+
+.field { font-weight: bold; }
+.detail { font-size: 8pt; }
+.notes { font-style: italic; font-size: 8pt; }
+.separator { background-color: #999999; height: 2px; }
+.warning {  color: #FF6600; }
+.disabled { font-style: italic; color: #999999; }
+
+/* Code elements */
+
+.line-number {  }
+
+.class-table { width: 100%; }
+.class-table-header { border-bottom: 1px dotted #666666; text-align: left}
+.class-name { color: #0000AA; font-weight: bold; }
+
+.method-summary { color: #009000; padding-left: 1em; font-size: 8pt; }
+.method-header { }
+.method-definition { margin-bottom: .2em }
+.method-title { color: #009000; font-weight: bold; }
+.method-name { font-weight: bold; }
+.method-signature { font-size: 85%; color: #666666; margin: .5em 0em }
+.method-result { font-style: italic; }
+
+.var-summary { padding-left: 1em; font-size: 8pt; }
+.var-header { }
+.var-title { color: #014fbe; margin-bottom: .3em }
+.var-type { font-style: italic; }
+.var-name { font-weight: bold; }
+.var-default {}
+.var-description { font-weight: normal; color: #000000; }
+
+.include-title { color: #014fbe;}
+.include-type { font-style: italic; }
+.include-name { font-weight: bold; }
+
+.const-title { color: #FF6600; }
+.const-name { font-weight: bold; }
+
+/* Syntax highlighting */
+
+.src-code { font-family: 'Courier New', Courier, monospace; font-weight: normal; }
+.src-line { font-family: 'Courier New', Courier, monospace; font-weight: normal; }
+
+.src-code a:link { padding: 1px; text-decoration: underline; color: #0000DD; }
+.src-code a:visited { text-decoration: underline; color: #0000DD; }
+.src-code a:active { background-color: #FFFF66; color: #008000; }
+.src-code a:hover { background-color: #FFFF66; text-decoration: overline underline; color: #008000; }
+
+.src-comm { color: #666666; }
+.src-id { color: #FF6600; font-style: italic; }
+.src-inc { color: #0000AA; font-weight: bold; }
+.src-key { color: #0000AA; font-weight: bold; }
+.src-num { color: #CC0000; }
+.src-str { color: #CC0000; }
+.src-sym { }
+.src-var { }
+
+.src-php { font-weight: bold; }
+
+.src-doc { color: #666666; }
+.src-doc-close-template { color: #666666 }
+.src-doc-coretag { color: #008000; }
+.src-doc-inlinetag {}
+.src-doc-internal {}
+.src-doc-tag { color: #0080CC; }
+.src-doc-template { color: #666666 }
+.src-doc-type { font-style: italic; color: #444444 }
+.src-doc-var { color: #444444 }
+
+.tute-tag { color: #009999 }
+.tute-attribute-name { color: #0000FF }
+.tute-attribute-value { color: #0099FF }
+.tute-entity { font-weight: bold; }
+.tute-comment { font-style: italic }
+.tute-inline-tag { color: #636311; font-weight: bold }
+
+/* tutorial */
+
+.authors {  }
+.author { font-style: italic; font-weight: bold }
+.author-blurb { margin: .5em 0em .5em 2em; font-size: 85%; font-weight: normal; font-style: normal }
+.example { border: 1px dashed #999999; background-color: #EEEEEE; padding: .5em; }
+*[class="example"] { line-height : 1.0em; }
+.listing { border: 1px dashed #999999; background-color: #EEEEEE; padding: .5em; white-space: nowrap; }
+*[class="listing"] { line-height : 1.0em; }
+.release-info { font-size: 85%; font-style: italic; margin: 1em 0em }
+.ref-title-box {  }
+.ref-title {  }
+.ref-purpose { font-style: italic; color: #666666 }
+.ref-synopsis {  }
+.title { font-weight: bold; border-bottom: 1px solid #999999; color: #999999;  }
+.cmd-synopsis { margin: 1em 0em }
+.cmd-title { font-weight: bold }
+.toc { margin-left: 2em; padding-left: 0em }
+

+ 29 - 0
lib/geshi/docs/api/packages.html

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+  <html xmlns="http://www.w3.org/1999/xhtml">
+		<head>
+			<!-- template designed by Marco Von Ballmoos -->
+			<title></title>
+			<link rel="stylesheet" href="media/stylesheet.css" />
+			<link rel="stylesheet" href="media/banner.css" />
+			<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
+		</head>
+		<body>
+			<div class="banner">
+				<div class="banner-title">geshi</div>
+				<div class="banner-menu">
+					<form>
+						<table cellpadding="0" cellspacing="0" style="width: 100%">
+							<tr>
+								<td>
+																	</td>
+								<td style="width: 2em">&nbsp;</td>
+								<td style="text-align: right">
+																	</td>
+							</tr>
+						</table>
+					</form>
+				</div>
+			</div>
+		</body>
+	</html>

+ 42 - 0
lib/geshi/docs/api/todolist.html

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+  <html xmlns="http://www.w3.org/1999/xhtml">
+		<head>
+			<!-- template designed by Marco Von Ballmoos -->
+			<title>Todo List</title>
+			<link rel="stylesheet" href="media/stylesheet.css" />
+			<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
+		</head>
+		<body>
+						<div align="center"><h1>Todo List</h1></div>
+<h2>geshi</h2>
+<h3><a href="geshi/core/GeSHi.html#methoddisable_highlighting">GeSHi::disable_highlighting()</a></h3>
+<ul>
+    <li>Rewrite with array traversal</li>
+</ul>
+<h3><a href="geshi/core/GeSHi.html#methodenable_highlighting">GeSHi::enable_highlighting()</a></h3>
+<ul>
+    <li>Rewrite with array traversal</li>
+</ul>
+<h3><a href="geshi/core/GeSHi.html#methodenable_important_blocks">GeSHi::enable_important_blocks()</a></h3>
+<ul>
+    <li>REMOVE THIS SHIZ FROM GESHI!</li>
+</ul>
+<h3><a href="geshi/core/GeSHi.html#methodget_language_name_from_extension">GeSHi::get_language_name_from_extension()</a></h3>
+<ul>
+    <li>Re-think about how this method works (maybe make it private and/or make it        a extension-&gt;lang lookup?)</li>
+    <li>static?</li>
+</ul>
+<h3><a href="geshi/core/GeSHi.html#methodhighlight_lines_extra">GeSHi::highlight_lines_extra()</a></h3>
+<ul>
+    <li>Some data replication here that could be cut down on</li>
+</ul>
+<h3><a href="geshi/core/GeSHi.html#methodload_from_file">GeSHi::load_from_file()</a></h3>
+<ul>
+    <li>Complete rethink of this and above method</li>
+</ul>
+	<p class="notes" id="credit">
+		Documentation generated on Thu, 25 Dec 2008 14:34:53 +0100 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.2</a>
+	</p>
+	</body>
+</html>

File diff suppressed because it is too large
+ 4077 - 0
lib/geshi/docs/geshi-doc.html


File diff suppressed because it is too large
+ 1741 - 0
lib/geshi/docs/geshi-doc.txt


+ 90 - 0
lib/geshi/docs/phpdoc.ini

@@ -0,0 +1,90 @@
+;; phpDocumentor parse configuration file
+;;
+;; This file is designed to cut down on repetitive typing on the command-line or web interface
+;; You can copy this file to create a number of configuration files that can be used with the
+;; command-line switch -c, as in phpdoc -c default.ini or phpdoc -c myini.ini.  The web
+;; interface will automatically generate a list of .ini files that can be used.
+;;
+;; default.ini is used to generate the online manual at http://www.phpdoc.org/docs
+;;
+;; ALL .ini files must be in the user subdirectory of phpDocumentor with an extension of .ini
+;;
+;; Copyright 2002, Greg Beaver <cellog@users.sourceforge.net>
+;;
+;; WARNING: do not change the name of any command-line parameters, phpDocumentor will ignore them
+
+[Parse Data]
+;; title of all the documentation
+;; legal values: any string
+title = GeSHi 1.0.8
+
+;; parse files that start with a . like .bash_profile
+;; legal values: true, false
+hidden = false
+
+;; show elements marked @access private in documentation by setting this to on
+;; legal values: on, off
+parseprivate = off
+
+;; parse with javadoc-like description (first sentence is always the short description)
+;; legal values: on, off
+javadocdesc = off
+
+;; add any custom @tags separated by commas here
+;; legal values: any legal tagname separated by commas.
+customtags = note
+
+;; This is only used by the XML:DocBook/peardoc2 converter
+defaultcategoryname = Documentation
+
+;; what is the main package?
+;; legal values: alphanumeric string plus - and _
+defaultpackagename = core
+
+;; output any parsing information?  set to on for cron jobs
+;; legal values: on
+;quiet = on
+
+;; parse a PEAR-style repository.  Do not turn this on if your project does
+;; not have a parent directory named "pear"
+;; legal values: on/off
+;pear = on
+
+;; where should the documentation be written?
+;; legal values: a legal path
+target = api
+
+;; limit output to the specified packages, even if others are parsed
+;; legal values: package names separated by commas
+;packageoutput = package1,package2
+
+;; comma-separated list of files to parse
+;; legal values: paths separated by commas
+filename = ../geshi.php
+
+;; comma-separated list of directories to parse
+;; legal values: directory paths separated by commas
+;directory = /path1,/path2,.,..,subdirectory
+;directory = /home/jeichorn/cvs/pear
+;directory = geshi
+
+;; template base directory (the equivalent directory of <installdir>/phpDocumentor)
+;templatebase = /path/to/my/templates
+
+;; comma-separated list of files, directories or wildcards ? and * (any wildcard) to ignore
+;; legal values: any wildcard strings separated by commas
+;ignore = /path/to/ignore*,*list.php,myfile.php,subdirectory/
+ignore = /*.svn/*
+
+;; comma-separated list of Converters to use in outputformat:Convertername:templatedirectory format
+;; legal values: HTML:frames:default,HTML:frames:l0l33t,HTML:frames:phpdoc.de,HTML:frames:phphtmllib,
+;;               HTML:frames:earthli,
+;;               HTML:frames:DOM/default,HTML:frames:DOM/l0l33t,HTML:frames:DOM/phpdoc.de,
+;;               HTML:frames:DOM/phphtmllib,HTML:frames:DOM/earthli
+;;               HTML:Smarty:default,HTML:Smarty:PHP,HTML:Smarty:HandS
+;;               PDF:default:default,CHM:default:default,XML:DocBook/peardoc2:default
+output=HTML:frames:earthli
+
+;; turn this option on if you want highlighted source code for every file
+;; legal values: on/off
+sourcecode = on

File diff suppressed because it is too large
+ 4775 - 0
lib/geshi/geshi.php


+ 139 - 0
lib/geshi/geshi/4cs.php

@@ -0,0 +1,139 @@
+<?php
+/*************************************************************************************
+ * 4cs.php
+ * ------
+ * Author: Jason Curl (jason.curl@continental-corporation.com)
+ * Copyright: (c) 2009 Jason Curl
+ * Release Version: 1.0.8.11
+ * Date Started: 2009/09/05
+ *
+ * 4CS language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2009/09/05
+ *   -  First Release
+ *
+ * TODO (updated 2009/09/01)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'GADV 4CS',
+    'COMMENT_SINGLE' => array(1 => "//"),
+    'COMMENT_MULTI' => array(),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array('"'),
+    'ESCAPE_CHAR' => '',
+    'KEYWORDS' => array(
+        1 => array(
+            'All', 'AllMatches', 'And', 'And_Filters', 'As', 'Asc', 'BasedOn',
+            'BestMatch', 'Block', 'Buffer', 'ByRef', 'ByVal', 'Call', 'Channel',
+            'Chr', 'Clear', 'Close', 'Confirm', 'Const', 'Continue', 'Cos',
+            'Critical', 'Declare', 'Default', 'DefaultChannel', 'DefaultDelayTime',
+            'DefaultReceiveMode', 'DefaultResponseTime', '#Define', 'DelayTime',
+            'Delete', 'Div', 'Else', '#Else', 'ElseIf', '#ElseIf', 'End', 'EndCritical',
+            'EndInlineC', 'EndFunction', 'EndIf', '#EndIf', 'EndInputList',
+            'EndLocalChannel', 'EndScenario', 'EndSub', 'EndWhile', 'Error',
+            'ErrorLevelOff', 'ErrorLevelOn', 'ErrorLevelSet', 'ErrorLevelSetRaw',
+            'Event', 'EventMode', 'EventOff', 'EventOn', 'EventSet', 'EventSetRaw',
+            'Execute', 'Exit', 'Exp', 'FileClose', 'FilterClear', 'FileEOF', 'FileOpen',
+            'FileRead', 'FileSize', 'FileWrite', 'FilterAdd', 'FilterMode',
+            'FilterOff', 'FilterOn', 'For', 'Format', 'Function', 'GoOnline', 'GoTo',
+            'Handle', 'Hide', 'If', '#If', '#IfDef', '#IfNDef', 'Ignore', '#Include',
+            'InlineC', 'Input', 'InputItem', 'InputList', 'Kill', 'LBound', 'LocalChannel',
+            'Local', 'Log', 'Log10', 'LogOff', 'LogOn', 'Loop', 'Message', 'Mod',
+            'MonitorChannel', 'MostFormat', 'MostMessage', 'Named', 'Never', 'Next',
+            'NoOrder', 'Not', 'Nothing', 'NoWait', 'Numeric', 'OnError', 'OnEvent',
+            'Or', 'Or_Filters', 'Order', 'Pass', 'Pow', 'Prototype', 'Quit', 'Raise',
+            'Random', 'Receive', 'ReceiveMode', 'ReceiveRaw', 'Redim', 'Remote', 'Repeat',
+            'Repeated', 'ResponseTime', 'Resume', 'ResumeCritical', 'RT_Common',
+            'RT_Dll_Call', 'RT_FILEIO', 'RT_General', 'RT_HardwareAccess',
+            'RT_MessageVariableAccess', 'RT_Scenario', 'RT_VariableAccess', 'Runtime',
+            'Scenario', 'ScenarioEnd', 'ScenarioStart', 'ScenarioStatus', 'ScenarioTerminate',
+            'Send', 'SendRaw', 'Set', 'SetError', 'Sin', 'Single', 'Show', 'Start',
+            'StartCritical', 'Starts', 'Static', 'Step', 'Stop', 'String', 'Sub',
+            'System_Error', 'TerminateAllChilds', 'Terminates', 'Then', 'Throw', 'TimeOut',
+            'To', 'TooLate', 'Trunc', 'UBound', 'Unexpected', 'Until', 'User_Error',
+            'View', 'Wait', 'Warning', 'While', 'XOr'
+            ),
+        2 => array(
+            'alias', 'winapi', 'long', 'char', 'double', 'float', 'int', 'short', 'lib'
+            )
+        ),
+    'SYMBOLS' => array(
+        '=', ':=', '<', '>', '<>'
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => false,
+        2 => false
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #0000C0; font-weight: bold;',
+            2 => 'color: #808080;'
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #008000;'
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #000080;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #800080;'
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #cc66cc;'
+            ),
+        'METHODS' => array(
+            1 => 'color: #66cc66;'
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #000080;'
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #000099;'
+            ),
+        'SCRIPT' => array(
+            ),
+        'REGEXPS' => array(
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => ''
+        ),
+    'OOLANG' => true,
+    'OBJECT_SPLITTERS' => array(
+        1 => '.'
+        ),
+    'REGEXPS' => array(
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        )
+);
+
+?>

+ 230 - 0
lib/geshi/geshi/6502acme.php

@@ -0,0 +1,230 @@
+<?php
+/*************************************************************************************
+ * 6502acme.php
+ * -------
+ * Author: Warren Willmey
+ * Copyright: (c) 2010 Warren Willmey.
+ * Release Version: 1.0.8.11
+ * Date Started: 2010/05/26
+ *
+ * MOS 6502 (more specifically 6510) ACME Cross Assembler 0.93 by Marco Baye language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2010/07/22
+ *  -  First Release
+ *
+ * TODO (updated 2010/07/22)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'MOS 6502 (6510) ACME Cross Assembler format',
+    'COMMENT_SINGLE' => array(1 => ';'),
+    'COMMENT_MULTI' => array(),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array("'", '"'),
+    'ESCAPE_CHAR' => '',
+    'KEYWORDS' => array(
+        /* 6502/6510 Opcodes. */
+        1 => array(
+            'adc', 'and', 'asl', 'bcc', 'bcs', 'beq', 'bit', 'bmi',
+            'bne', 'bpl', 'brk', 'bvc', 'bvs', 'clc', 'cld', 'cli',
+            'clv', 'cmp', 'cpx', 'cpy', 'dec', 'dex', 'dey', 'eor',
+            'inc', 'inx', 'iny', 'jmp', 'jsr', 'lda', 'ldx', 'ldy',
+            'lsr', 'nop', 'ora', 'pha', 'php', 'pla', 'plp', 'rol',
+            'ror', 'rti', 'rts', 'sbc', 'sec', 'sed', 'sei', 'sta',
+            'stx', 'sty', 'tax', 'tay', 'tsx', 'txa', 'txs', 'tya',
+            ),
+        /* Index Registers, yes the 6502 has other registers by they are only
+        * accessable by specific opcodes. The 65816 also has access to the stack pointer S. */
+        2 => array(
+            'x', 'y', 's'
+            ),
+        /* Directives or "pseudo opcodes" as defined by ACME 0.93 file AllPOs.txt. */
+        3 => array(
+            '!8', '!08', '!by', '!byte',
+            '!16', '!wo', '!word',
+            '!24', '!32',
+            '!fi', '!fill',
+            '!align',
+            '!ct', '!convtab',
+            '!tx', '!text',
+            '!pet',
+            '!raw',
+            '!scrxor',
+            '!to',
+            '!source',
+            '!bin', '!binary',
+            '!zn', '!zone',
+            '!sl',
+            '!svl',
+            '!sal',
+            '!if', '!ifdef',
+            '!for',
+            '!set',
+            '!do', 'while', 'until',
+            '!eof', '!endoffile',
+            '!warn', '!error', '!serious',
+            '!macro',
+//            , '*='        // Not a valid keyword (uses both * and = signs) moved to symbols instead.
+            '!initmem',
+            '!pseudopc',
+            '!cpu',
+            '!al', '!as', '!rl', '!rs',
+            ),
+
+        /* 6502/6510 undocumented opcodes (often referred to as illegal instructions).
+        *  These are present in the 6502/6510 but NOT in the newer CMOS revisions of the 65C02 or 65816.
+        *  As they are undocumented instructions there are no "official" names for them, there are also
+        *  several more that mainly perform various forms of crash and are not supported by ACME 0.93.
+        */
+        4 => array(
+            'anc', 'arr', 'asr', 'dcp', 'dop', 'isc', 'jam', 'lax',
+            'rla', 'rra', 'sax', 'sbx', 'slo', 'sre', 'top',
+            ),
+        /* 65c02 instructions, MOS added a few (much needed) instructions in the CMOS version of the 6502, but stupidly removed the undocumented/illegal opcodes.
+        *  ACME 0.93 does not support the rmb0-7 and smb0-7 instructions (they are currently rem'ed out).  */
+        5 => array(
+            'bra', 'phx', 'phy', 'plx', 'ply', 'stz', 'trb', 'tsb'
+            ),
+        /* 65816 instructions. */
+        6 => array(
+            'brl', 'cop', 'jml', 'jsl', 'mvn', 'mvp', 'pea', 'pei',
+            'per', 'phb', 'phd', 'phk', 'plb', 'pld', 'rep', 'rtl',
+            'sep', 'tcd', 'tcs', 'tdc', 'tsc', 'txy', 'tyx', 'wdm',
+            'xba', 'xce',
+            ),
+        /* Deprecated directives or "pseudo opcodes" as defined by ACME 0.93 file AllPOs.txt. */
+        7 => array(
+            '!cbm',
+            '!sz', '!subzone',
+            '!realpc',
+            ),
+        /* Math functions, some are aliases for the symbols. */
+        8 => array(
+            'not', 'div', 'mod', 'xor', 'or', 'sin', 'cos', 'tan',
+            'arcsin', 'arccos', 'arctan', 'int', 'float',
+
+            ),
+
+        ),
+    'SYMBOLS' => array(
+//        '[', ']', '(', ')', '{', '}',    // These are already defined by GeSHi as BRACKETS.
+        '*=', '#', '!', '^', '-', '*', '/',
+        '%', '+', '-', '<<', '>>', '>>>',
+        '<', '>', '^', '<=', '<', '>=', '>', '!=',
+        '=', '&', '|', '<>',
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => false,
+        2 => false,
+        3 => false,
+        4 => false,
+        5 => false,
+        6 => false,
+        7 => false,
+        8 => false,
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #00f; font-weight:bold;',
+            2 => 'color: #00f; font-weight:bold;',
+            3 => 'color: #080; font-weight:bold;',
+            4 => 'color: #f00; font-weight:bold;',
+            5 => 'color: #80f; font-weight:bold;',
+            6 => 'color: #f08; font-weight:bold;',
+            7 => 'color: #a04; font-weight:bold; font-style: italic;',
+            8 => 'color: #000;',
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #999; font-style: italic;',
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #009; font-weight: bold;'
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #000;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #080;'
+            ),
+        'NUMBERS' => array(
+            GESHI_NUMBER_INT_BASIC          => 'color: #f00;',
+            GESHI_NUMBER_HEX_PREFIX_DOLLAR  => 'color: #f00;',
+            GESHI_NUMBER_HEX_PREFIX         => 'color: #f00;',
+            GESHI_NUMBER_BIN_PREFIX_PERCENT => 'color: #f00;',
+            GESHI_NUMBER_FLT_NONSCI         => 'color: #f00;',
+            ),
+        'METHODS' => array(
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #080;'
+            ),
+        'REGEXPS' => array(
+            0   => 'color: #f00;'
+            , 1 => 'color: #933;'
+            ),
+        'SCRIPT' => array(
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => '',
+        3 => '',
+        4 => '',
+        5 => '',
+        6 => '',
+        7 => '',
+        8 => '',
+        ),
+    'OOLANG' => false,
+    'OBJECT_SPLITTERS' => array(
+        ),
+    'NUMBERS' =>
+        GESHI_NUMBER_INT_BASIC |
+        GESHI_NUMBER_FLT_NONSCI |
+        GESHI_NUMBER_HEX_PREFIX_DOLLAR |
+        GESHI_NUMBER_HEX_PREFIX |
+        GESHI_NUMBER_BIN_PREFIX_PERCENT,
+        // AMCE Octal format not support and gets picked up as Decimal unfortunately.
+    'REGEXPS' => array(
+        //ACME .# Binary number format. e.g. %..##..##..##
+        0 => '\%[\.\#]{1,64}',
+        //ACME Local Labels
+        1 => '\.[_a-zA-Z][_a-zA-Z0-9]*',
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        ),
+    'TAB_WIDTH' => 8,
+    'PARSER_CONTROL' => array(
+        'NUMBERS' => array(
+            'PRECHECK_RX' => '/[\da-fA-F\.\$\%]/'
+            )
+        )
+);
+
+?>

+ 241 - 0
lib/geshi/geshi/6502kickass.php

@@ -0,0 +1,241 @@
+<?php
+/*************************************************************************************
+ * 6502kickass.php
+ * -------
+ * Author: Warren Willmey
+ * Copyright: (c) 2010 Warren Willmey.
+ * Release Version: 1.0.8.11
+ * Date Started: 2010/06/07
+ *
+ * MOS 6502 (6510) Kick Assembler 3.13 language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2010/07/22
+ *  -  First Release
+ *
+ * TODO (updated 2010/07/22)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'MOS 6502 (6510) Kick Assembler format',
+    'COMMENT_SINGLE' => array(1 => '//'),
+    'COMMENT_MULTI' => array('/*' => '*/'),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array("'", '"'),
+    'ESCAPE_CHAR' => '',
+    'KEYWORDS' => array(
+        /* 6502/6510 Opcodes including undocumented opcodes as Kick Assembler 3.13 does not make a distinction - they are ALL valid. */
+        1 => array(
+            'adc', 'ahx', 'alr', 'anc', 'anc2', 'and', 'arr', 'asl',
+            'axs', 'bcc', 'bcs', 'beq', 'bit', 'bmi', 'bne', 'bpl',
+            'brk', 'bvc', 'bvs', 'clc', 'cld', 'cli', 'clv', 'cmp',
+            'cpx', 'cpy', 'dcp', 'dec', 'dex', 'dey', 'eor', 'inc',
+            'inx', 'iny', 'isc', 'jmp', 'jsr', 'las', 'lax', 'lda',
+            'ldx', 'ldy', 'lsr', 'nop', 'ora', 'pha', 'php', 'pla',
+            'plp', 'rla', 'rol', 'ror', 'rra', 'rti', 'rts', 'sax',
+            'sbc', 'sbc2', 'sec', 'sed', 'sei', 'shx', 'shy', 'slo',
+            'sre', 'sta', 'stx', 'sty', 'tas', 'tax', 'tay', 'tsx',
+            'txa', 'txs', 'tya', 'xaa',
+            ),
+        /* DTV additional Opcodes. */
+        2 => array(
+            'bra', 'sac', 'sir'
+            ),
+        /* Index Registers, yes the 6502 has other registers by they are only
+        * accessable by specific opcodes. */
+        3 => array(
+            'x', 'y'
+            ),
+        /* Directives. */
+        4 => array(
+            '.pc', '.pseudopc', 'virtual', '.align', '.byte', '.word', '.text', '.fill',
+            '.import source', '.import binary', '.import c64', '.import text', '.import', '.print', '.printnow',
+            '.error', '.var', '.eval', '.const', '.eval const', '.enum', '.label', '.define', '.struct',
+            'if', '.for', '.macro', '.function', '.return', '.pseudocommand', '.namespace', '.filenamespace',
+            '.assert', '.asserterror',
+            ),
+        /* Kick Assembler 3.13 Functions/Operators. */
+        5 => array(
+            'size', 'charAt', 'substring', 'asNumber', 'asBoolean', 'toIntString', 'toBinaryString', 'toOctalString',
+            'toHexString', 'lock',                                       // String functions/operators.
+            'get', 'set', 'add', 'remove', 'shuffle',                    // List functions.
+            'put', 'keys',                                               // Hashtable functions.
+            'getType', 'getValue', 'CmdArgument',                        // Pseudo Commands functions.
+            'asmCommandSize',                                            // Opcode Constants functions.
+            'LoadBinary', 'getSize',
+            'LoadSid', 'getData',
+            'LoadPicture', 'width', 'height', 'getPixel', 'getSinglecolorByte', 'getMulticolorByte',
+            'createFile', 'writeln',
+            'cmdLineVars',
+            'getX', 'getY', 'getZ',                                             // Vector functions.
+            'RotationMatrix', 'ScaleMatrix', 'MoveMatrix', 'PerspectiveMatrix', // Matrix functions.
+
+            ),
+
+        /* Kick Assembler 3.13 Math Functions. */
+        6 => array(
+            'abs', 'acos', 'asin', 'atan', 'atan2', 'cbrt', 'ceil', 'cos', 'cosh',
+            'exp', 'expm1', 'floor', 'hypot', 'IEEEremainder', 'log', 'log10',
+            'log1p', 'max', 'min', 'pow', 'mod', 'random', 'round', 'signum',
+            'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'toDegrees', 'toRadians',
+            ),
+
+        /* Kick Assembler 3.13 Objects/Data Types. */
+        7 => array(
+            'List',          // List() Object.
+            'Hashtable',     // Hashtable() Object.
+            'Vector',        // Vector() Object.
+            'Matrix',        // Matrix() Object.
+            ),
+
+        /* Kick Assembler 3.13 Constants. */
+        8 => array(
+            'PI', 'E',                                                         // Math Constants.
+            'AT_ABSOLUTE' , 'AT_ABSOLUTEX' , 'AT_ABSOLUTEY' , 'AT_IMMEDIATE',  // Pseudo Commands Constants.
+            'AT_INDIRECT' , 'AT_IZEROPAGEX' , 'AT_IZEROPAGEY' , 'AT_NONE',
+            'BLACK', 'WHITE', 'RED', 'CYAN', 'PURPLE', 'GREEN', 'BLUE',        // Colour Constants.
+            'YELLOW', 'ORANGE', 'BROWN', 'LIGHT_RED', 'DARK_GRAY', 'GRAY',
+            'LIGHT_GREEN', 'LIGHT_BLUE', 'LIGHT_GRAY',
+            'C64FILE',                                                         // Template Tag names.
+            'BF_C64FILE', 'BF_BITMAP_SINGLECOLOR', 'BF_KOALA' , 'BF_FLI',      // Binary format constant
+            ),
+
+        ),
+    'SYMBOLS' => array(
+//        '[', ']', '(', ')', '{', '}',    // These are already defined by GeSHi as BRACKETS.
+        '-', '+', '-', '*', '/', '>', '<', '<<', '>>', '&', '|', '^', '=', '==',
+        '!=', '>=', '<=', '!', '&&', '||', '#',
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => false,
+        2 => false,
+        3 => false,
+        4 => true,
+        5 => true,
+        6 => true,
+        7 => true,
+        8 => true,
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #00f; font-weight:bold;',
+            2 => 'color: #00f; font-weight:bold;',
+            3 => 'color: #00f; font-weight:bold;',
+            4 => 'color: #080; font-weight:bold;',
+            5 => 'color: #80f; font-weight:bold;',
+            6 => 'color: #f08; font-weight:bold;',
+            7 => 'color: #a04; font-weight:bold; font-style: italic;',
+            8 => 'color: #f08; font-weight:bold;',
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #999; font-style: italic;',
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #009; font-weight: bold;'
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #000;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #080;'
+            ),
+        'NUMBERS' => array(
+            GESHI_NUMBER_INT_BASIC          => 'color: #f00;',
+            GESHI_NUMBER_HEX_PREFIX_DOLLAR  => 'color: #f00;',
+            GESHI_NUMBER_BIN_PREFIX_PERCENT => 'color: #f00;',
+            GESHI_NUMBER_FLT_NONSCI         => 'color: #f00;',
+            ),
+        'METHODS' => array(
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #080;'
+            ),
+        'REGEXPS' => array(
+            0 => 'color: #933;',
+            1 => 'color: #933;',
+            2 => 'color: #933;',
+            3 => 'color: #00f; font-weight:bold;',
+            ),
+        'SCRIPT' => array(
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => '',
+        3 => '',
+        4 => '',
+        5 => '',
+        6 => '',
+        7 => '',
+        8 => '',
+        ),
+    'OOLANG' => false,
+    'OBJECT_SPLITTERS' => array(
+        ),
+    'NUMBERS' =>
+        GESHI_NUMBER_INT_BASIC |
+        GESHI_NUMBER_FLT_NONSCI |
+        GESHI_NUMBER_HEX_PREFIX_DOLLAR |
+        GESHI_NUMBER_BIN_PREFIX_PERCENT,
+        // AMCE Octal format not support and gets picked up as Decimal unfortunately.
+    'REGEXPS' => array(
+        //Labels end with a collon.
+        0 => '[!]{0,1}[_a-zA-Z][_a-zA-Z0-9]*\:',
+        //Multi Labels (local labels) references start with ! and end with + or - for forward/backward reference.
+        1 => '![_a-zA-Z][_a-zA-Z0-9]*[+-]',
+        //Macros start with a colon :Macro.
+        2 => ':[_a-zA-Z][_a-zA-Z0-9]*',
+        // Opcode Constants, such as LDA_IMM, STA_IZPY are basically all 6502 opcodes
+        // in UPPER case followed by _underscore_ and the ADDRESS MODE.
+        // As you might imagine that is rather a lot ( 78 supported Opcodes * 12 Addressing modes = 936 variations)
+        // So I thought it better and easier to maintain as a regular expression.
+        // NOTE: The order of the Address Modes must be maintained or it wont work properly (eg. place ZP first and find out!)
+        3 => '[A-Z]{3}[2]?_(?:IMM|IND|IZPX|IZPY|ZPX|ZPY|ABSX|ABSY|REL|ABS|ZP)',
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        ),
+    'TAB_WIDTH' => 8,
+    'PARSER_CONTROL' => array(
+        'NUMBERS'  => array(
+            'PRECHECK_RX' => '/[\da-fA-F\.\$\%]/'
+            ),
+        'KEYWORDS' => array(
+            5 => array (
+                'DISALLOWED_BEFORE' => "(?<![a-zA-Z0-9\$_\|\;>|^&'\"])"
+                ),
+            6 => array (
+                'DISALLOWED_BEFORE' => "(?<![a-zA-Z0-9\$_\|\;>|^&'\"])"
+                ),
+            8 => array (
+                'DISALLOWED_BEFORE' => "(?<![a-zA-Z0-9\$_\|\;>|^&'\"])"
+                )
+            )
+        ),
+);
+
+?>

+ 189 - 0
lib/geshi/geshi/6502tasm.php

@@ -0,0 +1,189 @@
+<?php
+/*************************************************************************************
+ * 6502tasm.php
+ * -------
+ * Author: Warren Willmey
+ * Copyright: (c) 2010 Warren Willmey.
+ * Release Version: 1.0.8.11
+ * Date Started: 2010/06/02
+ *
+ * MOS 6502 (6510) TASM/64TASS (64TASS being the super set of TASM) language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2010/07/22
+ *  -  First Release
+ *
+ * TODO (updated 2010/07/22)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'MOS 6502 (6510) TASM/64TASS 1.46 Assembler format',
+    'COMMENT_SINGLE' => array(1 => ';'),
+    'COMMENT_MULTI' => array(),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array("'", '"'),
+    'ESCAPE_CHAR' => '',
+    'KEYWORDS' => array(
+        /* 6502/6510 Opcodes. */
+        1 => array(
+            'adc', 'and', 'asl', 'bcc', 'bcs', 'beq', 'bit', 'bmi',
+            'bne', 'bpl', 'brk', 'bvc', 'bvs', 'clc', 'cld', 'cli',
+            'clv', 'cmp', 'cpx', 'cpy', 'dec', 'dex', 'dey', 'eor',
+            'inc', 'inx', 'iny', 'jmp', 'jsr', 'lda', 'ldx', 'ldy',
+            'lsr', 'nop', 'ora', 'pha', 'php', 'pla', 'plp', 'rol',
+            'ror', 'rti', 'rts', 'sbc', 'sec', 'sed', 'sei', 'sta',
+            'stx', 'sty', 'tax', 'tay', 'tsx', 'txa', 'txs', 'tya',
+            ),
+        /* Index Registers, yes the 6502 has other registers by they are only
+        * accessable by specific opcodes. The 65816 also has access to the stack pointer S. */
+        2 => array(
+            'x', 'y', 's'
+            ),
+        /* Directives. */
+        3 => array(
+            '.al', '.align', '.as', '.assert', '.binary', '.byte', '.cerror', '.char',
+            '.comment', '.cpu', '.cwarn', '.databank', '.dpage', '.else', '.elsif',
+            '.enc', '.endc', '.endif', '.endm', '.endp', '.error', '.fi', '.fill',
+            '.for', '.here', '.if', '.ifeq', '.ifmi', '.ifne', '.ifpl',
+            '.include', '.int', '.logical', '.long', '.macro', '.next', '.null', '.offs',
+            '.page', '.pend', '.proc', '.rept', '.rta', '.shift', '.text', '.warn', '.word',
+            '.xl', '.xs',
+//            , '*='        // Not a valid keyword (uses both * and = signs) moved to symbols instead.
+            ),
+
+        /* 6502/6510 undocumented opcodes (often referred to as illegal instructions).
+        *  These are present in the 6502/6510 but NOT in the newer CMOS revisions of the 65C02 or 65816.
+        *  As they are undocumented instructions there are no "official" names for them, these are the names
+        *  used by 64TASS V1.46.
+        */
+        4 => array(
+            'ahx', 'alr', 'anc', 'ane', 'arr', 'asr', 'axs', 'dcm',
+            'dcp', 'ins', 'isb', 'isc', 'jam', 'lae', 'las', 'lax',
+            'lds', 'lxa', 'rla', 'rra', 'sax', 'sbx', 'sha', 'shs',
+            'shx', 'shy', 'slo', 'sre', 'tas', 'xaa',
+            ),
+        /* 65c02 instructions, MOS added a few (much needed) instructions in the
+        *  CMOS version of the 6502, but stupidly removed the undocumented/illegal opcodes.  */
+        5 => array(
+            'bra', 'dea', 'gra', 'ina', 'phx', 'phy', 'plx', 'ply',
+            'stz', 'trb', 'tsb',
+            ),
+        /* 65816 instructions. */
+        6 => array(
+            'brl', 'cop', 'jml', 'jsl', 'mvn', 'mvp', 'pea', 'pei',
+            'per', 'phb', 'phd', 'phk', 'plb', 'pld', 'rep', 'rtl',
+            'sep', 'stp', 'swa', 'tad', 'tcd', 'tcs', 'tda',
+            'tdc', 'tsa', 'tsc', 'txy', 'tyx', 'wai', 'xba', 'xce',
+            ),
+        /* Deprecated directives (or yet to be implemented). */
+        7 => array(
+            '.global', '.check'
+            ),
+        ),
+    'SYMBOLS' => array(
+//        '[', ']', '(', ')', '{', '}',    // These are already defined by GeSHi as BRACKETS.
+        '*=', '#', '<', '>', '`', '=', '<', '>',
+        '!=', '>=', '<=', '+', '-', '*', '/', '//', '|',
+        '^', '&', '<<', '>>', '-', '~', '!',
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => false,
+        2 => false,
+        3 => false,
+        4 => false,
+        5 => false,
+        6 => false,
+        7 => false,
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #00f; font-weight:bold;',
+            2 => 'color: #00f; font-weight:bold;',
+            3 => 'color: #080; font-weight:bold;',
+            4 => 'color: #f00; font-weight:bold;',
+            5 => 'color: #80f; font-weight:bold;',
+            6 => 'color: #f08; font-weight:bold;',
+            7 => 'color: #a04; font-weight:bold; font-style: italic;',
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #999; font-style: italic;',
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #009; font-weight: bold;'
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #000;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #080;'
+            ),
+        'NUMBERS' => array(
+            GESHI_NUMBER_INT_BASIC          => 'color: #f00;',
+            GESHI_NUMBER_HEX_PREFIX_DOLLAR  => 'color: #f00;',
+            GESHI_NUMBER_BIN_PREFIX_PERCENT => 'color: #f00;',
+            ),
+        'METHODS' => array(
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #080;'
+            ),
+        'REGEXPS' => array(
+            ),
+        'SCRIPT' => array(
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => '',
+        3 => '',
+        4 => '',
+        5 => '',
+        6 => '',
+        7 => '',
+        ),
+    'OOLANG' => false,
+    'OBJECT_SPLITTERS' => array(
+        ),
+    'NUMBERS' =>
+        GESHI_NUMBER_INT_BASIC |
+        GESHI_NUMBER_HEX_PREFIX_DOLLAR |
+        GESHI_NUMBER_BIN_PREFIX_PERCENT,
+        // AMCE Octal format not support and gets picked up as Decimal unfortunately.
+    'REGEXPS' => array(
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        ),
+    'TAB_WIDTH' => 8,
+    'PARSER_CONTROL' => array(
+        'NUMBERS' => array(
+            'PRECHECK_RX' => '/[\da-fA-F\.\$\%]/'
+            )
+        )
+);
+
+?>

+ 168 - 0
lib/geshi/geshi/68000devpac.php

@@ -0,0 +1,168 @@
+<?php
+/*************************************************************************************
+ * 68000devpac.php
+ * -------
+ * Author: Warren Willmey
+ * Copyright: (c) 2010 Warren Willmey.
+ * Release Version: 1.0.8.11
+ * Date Started: 2010/06/09
+ *
+ * Motorola 68000 - HiSoft Devpac ST 2 Assembler language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2010/07/22
+ *  -  First Release
+ *
+ * TODO (updated 2010/07/22)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'Motorola 68000 - HiSoft Devpac ST 2 Assembler format',
+    'COMMENT_SINGLE' => array(1 => ';'),
+    'COMMENT_MULTI' => array(),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array("'", '"'),
+    'ESCAPE_CHAR' => '',
+    'KEYWORDS' => array(
+        /* Directives. */
+        1 => array(
+            'end', 'include', 'incbin', 'opt', 'even', 'cnop', 'dc.b', 'dc.w',
+            'dc.l', 'ds.b', 'ds.w', 'ds.l', 'dcb.b', 'dcb.w', 'dcb.l',
+            'fail', 'output', '__g2', 'rept', 'endr', 'list', 'nolist', 'plen',
+            'llen', 'ttl', 'subttl', 'spc', 'page', 'listchar', 'format',
+            'equ', 'equr', 'set', 'reg', 'rs.b', 'rs.w', 'rs.l', 'rsreset',
+            'rsset', '__rs', 'ifeq', 'ifne', 'ifgt', 'ifge', 'iflt', 'ifle', 'endc',
+            'ifd', 'ifnd', 'ifc', 'ifnc', 'elseif', 'iif', 'macro', 'endm', 'mexit',
+            'narg', '\@', 'section', 'text', 'data', 'bss', 'xdef', 'xref', 'org',
+            'offset', '__lk', 'comment',
+            ),
+        /* 68000 Opcodes. */
+        2 => array(
+            'abcd',    'add', 'adda', 'addi', 'addq', 'addx',  'and', 'andi',
+            'asl',     'asr',  'bcc', 'bchg', 'bclr',  'bcs',  'beq',  'bge',
+            'bgt',     'bhi',  'ble',  'bls',  'blt',  'bmi',  'bne',  'bpl',
+            'bra',    'bset',  'bsr', 'btst',  'bvc',  'bvs',  'chk',  'clr',
+            'cmp',    'cmpa', 'cmpi', 'cmpm', 'dbcc', 'dbcs', 'dbeq',  'dbf',
+            'dbge',   'dbgt', 'dbhi', 'dble', 'dbls', 'dblt', 'dbmi', 'dbne',
+            'dbpl',   'dbra',  'dbt', 'dbvc', 'dbvs', 'divs', 'divu',  'eor',
+            'eori',    'exg',  'ext','illegal','jmp',  'jsr',  'lea', 'link',
+            'lsl',     'lsr', 'move','movea','movem','movep','moveq', 'muls',
+            'mulu',   'nbcd',  'neg', 'negx',  'nop',  'not',   'or',  'ori',
+            'pea',   'reset',  'rol',  'ror', 'roxl', 'roxr',  'rte',  'rtr',
+            'rts',    'sbcd',  'scc',  'scs',  'seq',   'sf',  'sge',  'sgt',
+            'shi',     'sle',  'sls',  'slt',  'smi',  'sne',  'spl',   'st',
+            'stop',    'sub', 'suba', 'subi', 'subq', 'subx',  'svc',  'svs',
+            'swap',    'tas', 'trap','trapv',  'tst', 'unlk',
+            ),
+        /* oprand sizes. */
+        3 => array(
+            'b', 'w', 'l' , 's'
+            ),
+        /* 68000 Registers. */
+        4 => array(
+            'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7',
+            'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'sp', 'usp', 'ssp',
+            'pc', 'ccr', 'sr',
+            ),
+        ),
+    'SYMBOLS' => array(
+//        '[', ']', '(', ')', '{', '}',    // These are already defined by GeSHi as BRACKETS.
+        '+', '-', '~', '<<', '>>', '&',
+        '!', '^', '*', '/', '=', '<', '>',
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => false,
+        2 => false,
+        3 => false,
+        4 => false,
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #f08; font-weight:bold;',
+            2 => 'color: #00f; font-weight:bold;',
+            3 => 'color: #00f; font-weight:bold;',
+            4 => 'color: #080; font-weight:bold;',
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #999; font-style: italic;',
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #009; font-weight: bold;'
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #000;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #080;'
+            ),
+        'NUMBERS' => array(
+            GESHI_NUMBER_INT_BASIC          => 'color: #f00;',
+            GESHI_NUMBER_HEX_PREFIX_DOLLAR  => 'color: #f00;',
+            GESHI_NUMBER_BIN_PREFIX_PERCENT => 'color: #f00;',
+            GESHI_NUMBER_OCT_PREFIX_AT      => 'color: #f00;',
+            ),
+        'METHODS' => array(
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #080;'
+            ),
+        'REGEXPS' => array(
+            0 => 'color: #933;'
+            ),
+        'SCRIPT' => array(
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => '',
+        3 => '',
+        4 => '',
+        ),
+    'OOLANG' => false,
+    'OBJECT_SPLITTERS' => array(
+        ),
+    'NUMBERS' =>
+        GESHI_NUMBER_INT_BASIC |
+        GESHI_NUMBER_HEX_PREFIX_DOLLAR |
+        GESHI_NUMBER_OCT_PREFIX_AT |
+        GESHI_NUMBER_BIN_PREFIX_PERCENT,
+    'REGEXPS' => array(
+        //Labels may end in a colon.
+        0 => '(?<=\A\x20|\r|\n|^)[\._a-zA-Z][\._a-zA-Z0-9]*[\:]?[\s]'
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        ),
+    'TAB_WIDTH' => 8,
+    'PARSER_CONTROL' => array(
+        'NUMBERS' => array(
+            'PRECHECK_RX' => '/[\da-fA-F\.\$\%\@]/'
+            )
+        )
+);
+
+?>

File diff suppressed because it is too large
+ 1409 - 0
lib/geshi/geshi/abap.php


+ 197 - 0
lib/geshi/geshi/actionscript.php

@@ -0,0 +1,197 @@
+<?php
+/*************************************************************************************
+ * actionscript.php
+ * ----------------
+ * Author: Steffen Krause (Steffen.krause@muse.de)
+ * Copyright: (c) 2004 Steffen Krause, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.8.11
+ * Date Started: 2004/06/20
+ *
+ * Actionscript language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'ActionScript',
+    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+    'COMMENT_MULTI' => array('/*' => '*/'),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array("'", '"'),
+    'ESCAPE_CHAR' => '\\',
+    'KEYWORDS' => array(
+        1 => array(
+            '#include', 'for', 'foreach', 'each', 'if', 'elseif', 'else', 'while', 'do', 'dowhile',
+            'endwhile', 'endif', 'switch', 'case', 'endswitch', 'return', 'break', 'continue', 'in'
+            ),
+        2 => array(
+            'null', 'false', 'true', 'var',
+            'default', 'function', 'class',
+            'new', '_global'
+            ),
+        3 => array(
+            '#endinitclip', '#initclip', '__proto__', '_accProps', '_alpha', '_currentframe',
+            '_droptarget', '_focusrect', '_framesloaded', '_height', '_highquality', '_lockroot',
+            '_name', '_parent', '_quality', '_root', '_rotation', '_soundbuftime', '_target', '_totalframes',
+            '_url', '_visible', '_width', '_x', '_xmouse', '_xscale', '_y', '_ymouse', '_yscale', 'abs',
+            'Accessibility', 'acos', 'activityLevel', 'add', 'addListener', 'addPage', 'addProperty',
+            'addRequestHeader', 'align', 'allowDomain', 'allowInsecureDomain', 'and', 'appendChild',
+            'apply', 'Arguments', 'Array', 'asfunction', 'asin', 'atan', 'atan2', 'attachAudio', 'attachMovie',
+            'attachSound', 'attachVideo', 'attributes', 'autosize', 'avHardwareDisable', 'background',
+            'backgroundColor', 'BACKSPACE', 'bandwidth', 'beginFill', 'beginGradientFill', 'blockIndent',
+            'bold', 'Boolean', 'border', 'borderColor', 'bottomScroll', 'bufferLength', 'bufferTime',
+            'builtInItems', 'bullet', 'Button', 'bytesLoaded', 'bytesTotal', 'call', 'callee', 'caller',
+            'Camera', 'capabilities', 'CAPSLOCK', 'caption', 'catch', 'ceil', 'charAt', 'charCodeAt',
+            'childNodes', 'chr', 'clear', 'clearInterval', 'cloneNode', 'close', 'Color', 'concat',
+            'connect', 'condenseWhite', 'constructor', 'contentType', 'ContextMenu', 'ContextMenuItem',
+            'CONTROL', 'copy', 'cos', 'createElement', 'createEmptyMovieClip', 'createTextField',
+            'createTextNode', 'currentFps', 'curveTo', 'CustomActions', 'customItems', 'data', 'Date',
+            'deblocking', 'delete', 'DELETEKEY', 'docTypeDecl', 'domain', 'DOWN',
+            'duplicateMovieClip', 'duration', 'dynamic', 'E', 'embedFonts', 'enabled',
+            'END', 'endFill', 'ENTER', 'eq', 'Error', 'ESCAPE(Konstante)', 'escape(Funktion)', 'eval',
+            'exactSettings', 'exp', 'extends', 'finally', 'findText', 'firstChild', 'floor',
+            'flush', 'focusEnabled', 'font', 'fps', 'fromCharCode', 'fscommand',
+            'gain', 'ge', 'get', 'getAscii', 'getBeginIndex', 'getBounds', 'getBytesLoaded', 'getBytesTotal',
+            'getCaretIndex', 'getCode', 'getCount', 'getDate', 'getDay', 'getDepth', 'getEndIndex', 'getFocus',
+            'getFontList', 'getFullYear', 'getHours', 'getInstanceAtDepth', 'getLocal', 'getMilliseconds',
+            'getMinutes', 'getMonth', 'getNewTextFormat', 'getNextHighestDepth', 'getPan', 'getProgress',
+            'getProperty', 'getRGB', 'getSeconds', 'getSelected', 'getSelectedText', 'getSize', 'getStyle',
+            'getStyleNames', 'getSWFVersion', 'getText', 'getTextExtent', 'getTextFormat', 'getTextSnapshot',
+            'getTime', 'getTimer', 'getTimezoneOffset', 'getTransform', 'getURL', 'getUTCDate', 'getUTCDay',
+            'getUTCFullYear', 'getUTCHours', 'getUTCMilliseconds', 'getUTCMinutes', 'getUTCMonth', 'getUTCSeconds',
+            'getVersion', 'getVolume', 'getYear', 'globalToLocal', 'goto', 'gotoAndPlay', 'gotoAndStop',
+            'hasAccessibility', 'hasAudio', 'hasAudioEncoder', 'hasChildNodes', 'hasEmbeddedVideo', 'hasMP3',
+            'hasPrinting', 'hasScreenBroadcast', 'hasScreenPlayback', 'hasStreamingAudio', 'hasStreamingVideo',
+            'hasVideoEncoder', 'height', 'hide', 'hideBuiltInItems', 'hitArea', 'hitTest', 'hitTestTextNearPos',
+            'HOME', 'hscroll', 'html', 'htmlText', 'ID3', 'ifFrameLoaded', 'ignoreWhite', 'implements',
+            'import', 'indent', 'index', 'indexOf', 'Infinity', '-Infinity', 'INSERT', 'insertBefore', 'install',
+            'instanceof', 'int', 'interface', 'isActive', 'isDebugger', 'isDown', 'isFinite', 'isNaN', 'isToggled',
+            'italic', 'join', 'Key', 'language', 'lastChild', 'lastIndexOf', 'le', 'leading', 'LEFT', 'leftMargin',
+            'length', 'level', 'lineStyle', 'lineTo', 'list', 'LN10', 'LN2', 'load', 'loadClip', 'loaded', 'loadMovie',
+            'loadMovieNum', 'loadSound', 'loadVariables', 'loadVariablesNum', 'LoadVars', 'LocalConnection',
+            'localFileReadDisable', 'localToGlobal', 'log', 'LOG10E', 'LOG2E', 'manufacturer', 'Math', 'max',
+            'MAX_VALUE', 'maxChars', 'maxhscroll', 'maxscroll', 'mbchr', 'mblength', 'mbord', 'mbsubstring', 'menu',
+            'message', 'Microphone', 'min', 'MIN_VALUE', 'MMExecute', 'motionLevel', 'motionTimeOut', 'Mouse',
+            'mouseWheelEnabled', 'moveTo', 'Movieclip', 'MovieClipLoader', 'multiline', 'muted', 'name', 'names', 'NaN',
+            'ne', 'NEGATIVE_INFINITY', 'NetConnection', 'NetStream', 'newline', 'nextFrame',
+            'nextScene', 'nextSibling', 'nodeName', 'nodeType', 'nodeValue', 'not', 'Number', 'Object',
+            'on', 'onActivity', 'onChanged', 'onClipEvent', 'onClose', 'onConnect', 'onData', 'onDragOut',
+            'onDragOver', 'onEnterFrame', 'onID3', 'onKeyDown', 'onKeyUp', 'onKillFocus', 'onLoad', 'onLoadComplete',
+            'onLoadError', 'onLoadInit', 'onLoadProgress', 'onLoadStart', 'onMouseDown', 'onMouseMove', 'onMouseUp',
+            'onMouseWheel', 'onPress', 'onRelease', 'onReleaseOutside', 'onResize', 'onRollOut', 'onRollOver',
+            'onScroller', 'onSelect', 'onSetFocus', 'onSoundComplete', 'onStatus', 'onUnload', 'onUpdate', 'onXML',
+            'or(logischesOR)', 'ord', 'os', 'parentNode', 'parseCSS', 'parseFloat', 'parseInt', 'parseXML', 'password',
+            'pause', 'PGDN', 'PGUP', 'PI', 'pixelAspectRatio', 'play', 'playerType', 'pop', 'position',
+            'POSITIVE_INFINITY', 'pow', 'prevFrame', 'previousSibling', 'prevScene', 'print', 'printAsBitmap',
+            'printAsBitmapNum', 'PrintJob', 'printNum', 'private', 'prototype', 'public', 'push', 'quality',
+            'random', 'rate', 'registerClass', 'removeListener', 'removeMovieClip', 'removeNode', 'removeTextField',
+            'replaceSel', 'replaceText', 'resolutionX', 'resolutionY', 'restrict', 'reverse', 'RIGHT',
+            'rightMargin', 'round', 'scaleMode', 'screenColor', 'screenDPI', 'screenResolutionX', 'screenResolutionY',
+            'scroll', 'seek', 'selectable', 'Selection', 'send', 'sendAndLoad', 'separatorBefore', 'serverString',
+            'set', 'setvariable', 'setBufferTime', 'setClipboard', 'setDate', 'setFocus', 'setFullYear', 'setGain',
+            'setHours', 'setInterval', 'setMask', 'setMilliseconds', 'setMinutes', 'setMode', 'setMonth',
+            'setMotionLevel', 'setNewTextFormat', 'setPan', 'setProperty', 'setQuality', 'setRate', 'setRGB',
+            'setSeconds', 'setSelectColor', 'setSelected', 'setSelection', 'setSilenceLevel', 'setStyle',
+            'setTextFormat', 'setTime', 'setTransform', 'setUseEchoSuppression', 'setUTCDate', 'setUTCFullYear',
+            'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', 'setUTCMonth', 'setUTCSeconds', 'setVolume',
+            'setYear', 'SharedObject', 'SHIFT(Konstante)', 'shift(Methode)', 'show', 'showMenu', 'showSettings',
+            'silenceLevel', 'silenceTimeout', 'sin', 'size', 'slice', 'smoothing', 'sort', 'sortOn', 'Sound', 'SPACE',
+            'splice', 'split', 'sqrt', 'SQRT1_2', 'SQRT2', 'Stage', 'start', 'startDrag', 'static', 'status', 'stop',
+            'stopAllSounds', 'stopDrag', 'String', 'StyleSheet(Klasse)', 'styleSheet(Eigenschaft)', 'substr',
+            'substring', 'super', 'swapDepths', 'System', 'TAB', 'tabChildren', 'tabEnabled', 'tabIndex',
+            'tabStops', 'tan', 'target', 'targetPath', 'tellTarget', 'text', 'textColor', 'TextField', 'TextFormat',
+            'textHeight', 'TextSnapshot', 'textWidth', 'this', 'throw', 'time', 'toggleHighQuality', 'toLowerCase',
+            'toString', 'toUpperCase', 'trace', 'trackAsMenu', 'try', 'type', 'typeof', 'undefined',
+            'underline', 'unescape', 'uninstall', 'unloadClip', 'unloadMovie', 'unLoadMovieNum', 'unshift', 'unwatch',
+            'UP', 'updateAfterEvent', 'updateProperties', 'url', 'useCodePage', 'useEchoSuppression', 'useHandCursor',
+            'UTC', 'valueOf', 'variable', 'version', 'Video', 'visible', 'void', 'watch', 'width',
+            'with', 'wordwrap', 'XML', 'xmlDecl', 'XMLNode', 'XMLSocket'
+            )
+        ),
+    'SYMBOLS' => array(
+        '(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', '>'
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => false,
+        2 => false,
+        3 => false,
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #b1b100;',
+            2 => 'color: #000000; font-weight: bold;',
+            3 => 'color: #0066CC;'
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #808080; font-style: italic;',
+            2 => 'color: #808080; font-style: italic;',
+            'MULTI' => 'color: #808080; font-style: italic;'
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #000099; font-weight: bold;'
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #66cc66;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #ff0000;'
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #cc66cc;'
+            ),
+        'METHODS' => array(
+            1 => 'color: #006600;'
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #66cc66;'
+            ),
+        'REGEXPS' => array(
+            ),
+        'SCRIPT' => array(
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => '',
+        3 => ''
+        ),
+    'OOLANG' => true,
+    'OBJECT_SPLITTERS' => array(
+        1 => '.'
+        ),
+    'REGEXPS' => array(
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(),
+    'HIGHLIGHT_STRICT_BLOCK' => array()
+);
+
+?>

+ 473 - 0
lib/geshi/geshi/actionscript3.php

@@ -0,0 +1,473 @@
+<?php
+/*************************************************************************************
+ * actionscript3.php
+ * ----------------
+ * Author: Jordi Boggiano (j.boggiano@seld.be)
+ * Copyright: (c) 2007 Jordi Boggiano (http://www.seld.be/), Benny Baumann (http://qbnz.com/highlighter)
+ * Release Version: 1.0.8.11
+ * Date Started: 2007/11/26
+ *
+ * ActionScript3 language file for GeSHi.
+ *
+ * All keywords scraped from the Flex 2.0.1 Documentation
+ *
+ * The default style is based on FlexBuilder2 coloring, with the addition of class, package, method and
+ * constant names that are highlighted to help identifying problem when used on public pastebins.
+ *
+ * For styling, keywords data from 0 to 1 (accessible through .kw1, etc.) are described here :
+ *
+ *   1 : operators
+ *   2 : 'var' keyword
+ *   3 : 'function' keyword
+ *   4 : 'class' and 'package' keywords
+ *   5 : all flash.* class names plus Top Level classes, mx are excluded
+ *   6 : all flash.* package names, mx are excluded
+ *   7 : valid flash method names and properties (there is no type checks sadly, for example String().x will be highlighted as 'x' is valid, but obviously strings don't have a x property)
+ *   8 : valid flash constant names (again, no type check)
+ *
+ *
+ * CHANGES
+ * -------
+ * 2007/12/06 (1.0.7.22)
+ *  -  Added the 'this' keyword (oops)
+ *
+ * TODO (updated 2007/11/30)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'ActionScript 3',
+    'COMMENT_SINGLE' => array(1 => '//'),
+    'COMMENT_MULTI' => array('/*' => '*/'),
+    'COMMENT_REGEXP' => array(
+        //Regular expressions
+        2 => "/(?<=[\\s^])(s|tr|y)\\/(?!\s)(?:\\\\.|(?!\n)[^\\/\\\\])+(?<!\s)\\/(?!\s)(?:\\\\.|(?!\n)[^\\/\\\\])*(?<!\s)\\/[msixpogcde]*(?=[\\s$\\.\\;])|(?<=[\\s^(=])(m|q[qrwx]?)?\\/(?!\s)(?:\\\\.|(?!\n)[^\\/\\\\])+(?<!\s)\\/[msixpogc]*(?=[\\s$\\.\\,\\;\\)])/iU",
+        ),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array("'", '"'),
+    'ESCAPE_CHAR' => '\\',
+    'KEYWORDS' => array(
+        1 => array(
+            'with', 'while', 'void', 'undefined', 'typeof', 'try', 'true',
+            'throw', 'this', 'switch', 'super', 'set', 'return', 'public', 'protected',
+            'private', 'null', 'new', 'is', 'internal', 'instanceof', 'in',
+            'import', 'if', 'get', 'for', 'false', 'else', 'each', 'do',
+            'delete', 'default', 'continue', 'catch', 'case', 'break', 'as',
+            'extends', 'override'
+            ),
+        2 => array(
+            'var'
+            ),
+        3 => array(
+            'function'
+            ),
+        4 => array(
+            'class', 'package'
+            ),
+        6 => array(
+            'flash.xml', 'flash.utils', 'flash.ui', 'flash.text',
+            'flash.system', 'flash.profiler', 'flash.printing', 'flash.net',
+            'flash.media', 'flash.geom', 'flash.filters', 'flash.external',
+            'flash.events', 'flash.errors', 'flash.display',
+            'flash.accessibility'
+            ),
+        7 => array(
+            'zoom', 'year', 'y', 'xmlDecl', 'x', 'writeUnsignedInt',
+            'writeUTFBytes', 'writeUTF', 'writeShort', 'writeObject',
+            'writeMultiByte', 'writeInt', 'writeFloat', 'writeExternal',
+            'writeDynamicProperty', 'writeDynamicProperties', 'writeDouble',
+            'writeBytes', 'writeByte', 'writeBoolean', 'wordWrap',
+            'willTrigger', 'width', 'volume', 'visible', 'videoWidth',
+            'videoHeight', 'version', 'valueOf', 'value', 'usingTLS',
+            'useRichTextClipboard', 'useHandCursor', 'useEchoSuppression',
+            'useCodePage', 'url', 'uri', 'uploadCompleteData', 'upload',
+            'updateProperties', 'updateAfterEvent', 'upState', 'unshift',
+            'unlock', 'unload', 'union', 'unescapeMultiByte', 'unescape',
+            'underline', 'uncompress', 'type', 'ty', 'tx', 'transparent',
+            'translate', 'transformPoint', 'transform', 'trackAsMenu', 'track',
+            'trace', 'totalMemory', 'totalFrames', 'topLeft', 'top',
+            'togglePause', 'toXMLString', 'toUpperCase', 'toUTCString',
+            'toTimeString', 'toString', 'toPrecision', 'toLowerCase',
+            'toLocaleUpperCase', 'toLocaleTimeString', 'toLocaleString',
+            'toLocaleLowerCase', 'toLocaleDateString', 'toFixed',
+            'toExponential', 'toDateString', 'timezoneOffset', 'timerComplete',
+            'timer', 'time', 'threshold', 'thickness', 'textWidth',
+            'textSnapshot', 'textInput', 'textHeight', 'textColor', 'text',
+            'test', 'target', 'tan', 'tabStops', 'tabIndexChange', 'tabIndex',
+            'tabEnabledChange', 'tabEnabled', 'tabChildrenChange',
+            'tabChildren', 'sync', 'swfVersion', 'swapChildrenAt',
+            'swapChildren', 'subtract', 'substring', 'substr', 'styleSheet',
+            'styleNames', 'strength', 'stopPropagation',
+            'stopImmediatePropagation', 'stopDrag', 'stopAll', 'stop', 'status',
+            'startDrag', 'start', 'stageY', 'stageX', 'stageWidth',
+            'stageHeight', 'stageFocusRect', 'stage', 'sqrt', 'split', 'splice',
+            'source', 'soundTransform', 'soundComplete', 'sortOn', 'sort',
+            'songName', 'some', 'socketData', 'smoothing', 'slice', 'size',
+            'sin', 'silent', 'silenceTimeout', 'silenceLevel', 'showSettings',
+            'showRedrawRegions', 'showDefaultContextMenu', 'show', 'shortcut',
+            'shiftKey', 'shift', 'sharpness', 'sharedEvents', 'shadowColor',
+            'shadowAlpha', 'settings', 'setUseEchoSuppression', 'setUTCSeconds',
+            'setUTCMonth', 'setUTCMinutes', 'setUTCMilliseconds', 'setUTCHours',
+            'setUTCFullYear', 'setUTCDate', 'setTimeout', 'setTime',
+            'setTextFormat', 'setStyle', 'setSilenceLevel', 'setSettings',
+            'setSelection', 'setSelected', 'setSelectColor', 'setSeconds',
+            'setQuality', 'setPropertyIsEnumerable', 'setProperty', 'setPixels',
+            'setPixel32', 'setPixel', 'setNamespace', 'setName',
+            'setMotionLevel', 'setMonth', 'setMode', 'setMinutes',
+            'setMilliseconds', 'setLoopback', 'setLoopBack', 'setLocalName',
+            'setKeyFrameInterval', 'setInterval', 'setHours', 'setFullYear',
+            'setEmpty', 'setDirty', 'setDate', 'setCompositionString',
+            'setClipboard', 'setChildren', 'setChildIndex',
+            'setAdvancedAntiAliasingTable', 'serverString', 'separatorBefore',
+            'sendToURL', 'send', 'selectionEndIndex', 'selectionBeginIndex',
+            'selectable', 'select', 'seek', 'securityError', 'securityDomain',
+            'secondsUTC', 'seconds', 'search', 'scrollV', 'scrollRect',
+            'scrollH', 'scroll', 'screenResolutionY', 'screenResolutionX',
+            'screenDPI', 'screenColor', 'scenes', 'scaleY', 'scaleX',
+            'scaleMode', 'scale9Grid', 'scale', 'save', 'sandboxType',
+            'sameDomain', 'running', 'round', 'rotation', 'rotate', 'root',
+            'rollOver', 'rollOut', 'rightToRight', 'rightToLeft', 'rightPeak',
+            'rightMargin', 'right', 'rewind', 'reverse', 'resume', 'restrict',
+            'resize', 'reset', 'requestHeaders', 'replaceText',
+            'replaceSelectedText', 'replace', 'repeatCount', 'render',
+            'removedFromStage', 'removed', 'removeNode', 'removeNamespace',
+            'removeEventListener', 'removeChildAt', 'removeChild',
+            'relatedObject', 'registerFont', 'registerClassAlias', 'redOffset',
+            'redMultiplier', 'rect', 'receiveVideo', 'receiveAudio',
+            'readUnsignedShort', 'readUnsignedInt', 'readUnsignedByte',
+            'readUTFBytes', 'readUTF', 'readShort', 'readObject',
+            'readMultiByte', 'readInt', 'readFloat', 'readExternal',
+            'readDouble', 'readBytes', 'readByte', 'readBoolean', 'ratios',
+            'rate', 'random', 'quality', 'push', 'publish', 'proxyType',
+            'prototype', 'propertyIsEnumerable', 'progress',
+            'processingInstructions', 'printAsBitmap', 'print',
+            'previousSibling', 'preventDefault', 'prevScene', 'prevFrame',
+            'prettyPrinting', 'prettyIndent', 'preserveAlpha', 'prependChild',
+            'prefix', 'pow', 'position', 'pop', 'polar', 'playerType', 'play',
+            'pixelSnapping', 'pixelDissolve', 'pixelBounds', 'pixelAspectRatio',
+            'perlinNoise', 'pause', 'parseXML', 'parseInt', 'parseFloat',
+            'parseCSS', 'parse', 'parentNode', 'parentDomain',
+            'parentAllowsChild', 'parent', 'parameters', 'paperWidth',
+            'paperHeight', 'pan', 'paletteMap', 'pageWidth', 'pageHeight',
+            'overState', 'outsideCutoff', 'os', 'orientation', 'open',
+            'opaqueBackground', 'onPlayStatus', 'onMetaData', 'onCuePoint',
+            'offsetPoint', 'offset', 'objectID', 'objectEncoding', 'numLock',
+            'numLines', 'numFrames', 'numChildren', 'normalize', 'noise',
+            'nodeValue', 'nodeType', 'nodeName', 'nodeKind', 'noAutoLabeling',
+            'nextValue', 'nextSibling', 'nextScene', 'nextNameIndex',
+            'nextName', 'nextFrame', 'netStatus', 'navigateToURL',
+            'namespaceURI', 'namespaceDeclarations', 'namespace', 'names',
+            'name', 'muted', 'multiline', 'moveTo', 'mouseY', 'mouseX',
+            'mouseWheelEnabled', 'mouseWheel', 'mouseUp', 'mouseTarget',
+            'mouseOver', 'mouseOut', 'mouseMove', 'mouseLeave',
+            'mouseFocusChange', 'mouseEnabled', 'mouseDown', 'mouseChildren',
+            'motionTimeout', 'motionLevel', 'monthUTC', 'month',
+            'modificationDate', 'mode', 'minutesUTC', 'minutes', 'min',
+            'millisecondsUTC', 'milliseconds', 'method', 'message', 'merge',
+            'menuSelect', 'menuItemSelect', 'maxScrollV', 'maxScrollH',
+            'maxLevel', 'maxChars', 'max', 'matrixY', 'matrixX', 'matrix',
+            'match', 'mask', 'mapPoint', 'mapBitmap', 'map', 'manufacturer',
+            'macType', 'loopback', 'loop', 'log', 'lock', 'localeCompare',
+            'localY', 'localX', 'localToGlobal', 'localName',
+            'localFileReadDisable', 'loaderURL', 'loaderInfo', 'loader',
+            'loadPolicyFile', 'loadBytes', 'load', 'liveDelay', 'link',
+            'lineTo', 'lineStyle', 'lineGradientStyle', 'level',
+            'letterSpacing', 'length', 'leftToRight', 'leftToLeft', 'leftPeak',
+            'leftMargin', 'left', 'leading', 'lastIndexOf', 'lastIndex',
+            'lastChild', 'language', 'labels', 'knockout', 'keyUp',
+            'keyLocation', 'keyFrameInterval', 'keyFocusChange', 'keyDown',
+            'keyCode', 'kerning', 'join', 'italic', 'isXMLName',
+            'isPrototypeOf', 'isNaN', 'isFocusInaccessible', 'isFinite',
+            'isEmpty', 'isDefaultPrevented', 'isDebugger', 'isBuffering',
+            'isAttribute', 'isAccessible', 'ioError', 'invert', 'invalidate',
+            'intersects', 'intersection', 'interpolate', 'insideCutoff',
+            'insertChildBefore', 'insertChildAfter', 'insertBefore', 'inner',
+            'init', 'info', 'inflatePoint', 'inflate', 'indexOf', 'index',
+            'indent', 'inScopeNamespaces', 'imeComposition', 'ime',
+            'ignoreWhitespace', 'ignoreWhite', 'ignoreProcessingInstructions',
+            'ignoreComments', 'ignoreCase', 'identity', 'idMap', 'id3',
+            'httpStatus', 'htmlText', 'hoursUTC', 'hours', 'hitTestTextNearPos',
+            'hitTestState', 'hitTestPoint', 'hitTestObject', 'hitTest',
+            'hitArea', 'highlightColor', 'highlightAlpha', 'hideObject',
+            'hideBuiltInItems', 'hide', 'height', 'hasVideoEncoder', 'hasTLS',
+            'hasStreamingVideo', 'hasStreamingAudio', 'hasSimpleContent',
+            'hasScreenPlayback', 'hasScreenBroadcast', 'hasProperty',
+            'hasPrinting', 'hasOwnProperty', 'hasMP3', 'hasIME', 'hasGlyphs',
+            'hasEventListener', 'hasEmbeddedVideo', 'hasDefinition',
+            'hasComplexContent', 'hasChildNodes', 'hasAudioEncoder', 'hasAudio',
+            'hasAccessibility', 'gridFitType', 'greenOffset', 'greenMultiplier',
+            'graphics', 'gotoAndStop', 'gotoAndPlay', 'globalToLocal', 'global',
+            'getUTCSeconds', 'getUTCMonth', 'getUTCMinutes',
+            'getUTCMilliseconds', 'getUTCHours', 'getUTCFullYear', 'getUTCDay',
+            'getUTCDate', 'getTimezoneOffset', 'getTimer', 'getTime',
+            'getTextRunInfo', 'getTextFormat', 'getText', 'getStyle',
+            'getStackTrace', 'getSelectedText', 'getSelected', 'getSeconds',
+            'getRemote', 'getRect', 'getQualifiedSuperclassName',
+            'getQualifiedClassName', 'getProperty', 'getPrefixForNamespace',
+            'getPixels', 'getPixel32', 'getPixel', 'getParagraphLength',
+            'getObjectsUnderPoint', 'getNamespaceForPrefix', 'getMonth',
+            'getMinutes', 'getMilliseconds', 'getMicrophone', 'getLocal',
+            'getLineText', 'getLineOffset', 'getLineMetrics', 'getLineLength',
+            'getLineIndexOfChar', 'getLineIndexAtPoint', 'getImageReference',
+            'getHours', 'getFullYear', 'getFirstCharInParagraph',
+            'getDescendants', 'getDefinitionByName', 'getDefinition', 'getDay',
+            'getDate', 'getColorBoundsRect', 'getClassByAlias', 'getChildIndex',
+            'getChildByName', 'getChildAt', 'getCharIndexAtPoint',
+            'getCharBoundaries', 'getCamera', 'getBounds', 'genre',
+            'generateFilterRect', 'gain', 'fullYearUTC', 'fullYear',
+            'fullScreen', 'fscommand', 'fromCharCode', 'framesLoaded',
+            'frameRate', 'frame', 'fps', 'forwardAndBack', 'formatToString',
+            'forceSimple', 'forEach', 'fontType', 'fontStyle', 'fontSize',
+            'fontName', 'font', 'focusRect', 'focusOut', 'focusIn', 'focus',
+            'flush', 'floor', 'floodFill', 'firstChild', 'findText', 'filters',
+            'filter', 'fillRect', 'fileList', 'extension', 'extended', 'exp',
+            'exec', 'exactSettings', 'every', 'eventPhase', 'escapeMultiByte',
+            'escape', 'errorID', 'error', 'equals', 'enumerateFonts',
+            'enterFrame', 'endian', 'endFill', 'encodeURIComponent',
+            'encodeURI', 'enabled', 'embedFonts', 'elements',
+            'dynamicPropertyWriter', 'dropTarget', 'drawRoundRect', 'drawRect',
+            'drawEllipse', 'drawCircle', 'draw', 'download', 'downState',
+            'doubleClickEnabled', 'doubleClick', 'dotall', 'domain',
+            'docTypeDecl', 'doConversion', 'divisor', 'distance', 'dispose',
+            'displayState', 'displayMode', 'displayAsPassword', 'dispatchEvent',
+            'description', 'describeType', 'descent', 'descendants',
+            'deltaTransformPoint', 'delta', 'deleteProperty', 'delay',
+            'defaultTextFormat', 'defaultSettings', 'defaultObjectEncoding',
+            'decodeURIComponent', 'decodeURI', 'decode', 'deblocking',
+            'deactivate', 'dayUTC', 'day', 'dateUTC', 'date', 'dataFormat',
+            'data', 'd', 'customItems', 'curveTo', 'currentTarget',
+            'currentScene', 'currentLabels', 'currentLabel', 'currentFrame',
+            'currentFPS', 'currentDomain', 'currentCount', 'ctrlKey', 'creator',
+            'creationDate', 'createTextNode', 'createGradientBox',
+            'createElement', 'createBox', 'cos', 'copyPixels', 'copyChannel',
+            'copy', 'conversionMode', 'contextMenuOwner', 'contextMenu',
+            'contentType', 'contentLoaderInfo', 'content', 'containsRect',
+            'containsPoint', 'contains', 'constructor', 'connectedProxyType',
+            'connected', 'connect', 'condenseWhite', 'concatenatedMatrix',
+            'concatenatedColorTransform', 'concat', 'computeSpectrum',
+            'compress', 'componentY', 'componentX', 'complete', 'compare',
+            'comments', 'comment', 'colors', 'colorTransform', 'color', 'code',
+            'close', 'cloneNode', 'clone', 'client', 'click', 'clearTimeout',
+            'clearInterval', 'clear', 'clamp', 'children', 'childNodes',
+            'childIndex', 'childAllowsParent', 'child', 'checkPolicyFile',
+            'charCount', 'charCodeAt', 'charCode', 'charAt', 'changeList',
+            'change', 'ceil', 'caretIndex', 'caption', 'capsLock', 'cancelable',
+            'cancel', 'callee', 'callProperty', 'call', 'cacheAsBitmap', 'c',
+            'bytesTotal', 'bytesLoaded', 'bytesAvailable', 'buttonMode',
+            'buttonDown', 'bullet', 'builtInItems', 'bufferTime',
+            'bufferLength', 'bubbles', 'browse', 'bottomScrollV', 'bottomRight',
+            'bottom', 'borderColor', 'border', 'bold', 'blurY', 'blurX',
+            'blueOffset', 'blueMultiplier', 'blockIndent', 'blendMode',
+            'bitmapData', 'bias', 'beginGradientFill', 'beginFill',
+            'beginBitmapFill', 'bandwidth', 'backgroundColor', 'background',
+            'b', 'available', 'avHardwareDisable', 'autoSize', 'attributes',
+            'attribute', 'attachNetStream', 'attachCamera', 'attachAudio',
+            'atan2', 'atan', 'asyncError', 'asin', 'ascent', 'artist',
+            'areSoundsInaccessible', 'areInaccessibleObjectsUnderPoint',
+            'applyFilter', 'apply', 'applicationDomain', 'appendText',
+            'appendChild', 'antiAliasType', 'angle', 'alwaysShowSelection',
+            'altKey', 'alphas', 'alphaOffset', 'alphaMultiplier', 'alpha',
+            'allowInsecureDomain', 'allowDomain', 'align', 'album',
+            'addedToStage', 'added', 'addPage', 'addNamespace', 'addHeader',
+            'addEventListener', 'addChildAt', 'addChild', 'addCallback', 'add',
+            'activityLevel', 'activity', 'active', 'activating', 'activate',
+            'actionScriptVersion', 'acos', 'accessibilityProperties', 'abs'
+            ),
+        8 => array(
+            'WRAP', 'VERTICAL', 'VARIABLES',
+            'UTC', 'UPLOAD_COMPLETE_DATA', 'UP', 'UNLOAD', 'UNKNOWN',
+            'UNIQUESORT', 'TOP_RIGHT', 'TOP_LEFT', 'TOP', 'TIMER_COMPLETE',
+            'TIMER', 'TEXT_NODE', 'TEXT_INPUT', 'TEXT', 'TAB_INDEX_CHANGE',
+            'TAB_ENABLED_CHANGE', 'TAB_CHILDREN_CHANGE', 'TAB', 'SYNC',
+            'SUBTRACT', 'SUBPIXEL', 'STATUS', 'STANDARD', 'SQUARE', 'SQRT2',
+            'SQRT1_2', 'SPACE', 'SOUND_COMPLETE', 'SOCKET_DATA', 'SHOW_ALL',
+            'SHIFT', 'SETTINGS_MANAGER', 'SELECT', 'SECURITY_ERROR', 'SCROLL',
+            'SCREEN', 'ROUND', 'ROLL_OVER', 'ROLL_OUT', 'RIGHT', 'RGB',
+            'RETURNINDEXEDARRAY', 'RESIZE', 'REPEAT', 'RENDER',
+            'REMOVED_FROM_STAGE', 'REMOVED', 'REMOTE', 'REGULAR', 'REFLECT',
+            'RED', 'RADIAL', 'PROGRESS', 'PRIVACY', 'POST', 'POSITIVE_INFINITY',
+            'PORTRAIT', 'PIXEL', 'PI', 'PENDING', 'PAGE_UP', 'PAGE_DOWN', 'PAD',
+            'OVERLAY', 'OUTER', 'OPEN', 'NaN', 'NUM_PAD', 'NUMPAD_SUBTRACT',
+            'NUMPAD_MULTIPLY', 'NUMPAD_ENTER', 'NUMPAD_DIVIDE',
+            'NUMPAD_DECIMAL', 'NUMPAD_ADD', 'NUMPAD_9', 'NUMPAD_8', 'NUMPAD_7',
+            'NUMPAD_6', 'NUMPAD_5', 'NUMPAD_4', 'NUMPAD_3', 'NUMPAD_2',
+            'NUMPAD_1', 'NUMPAD_0', 'NUMERIC', 'NO_SCALE', 'NO_BORDER',
+            'NORMAL', 'NONE', 'NEVER', 'NET_STATUS', 'NEGATIVE_INFINITY',
+            'MULTIPLY', 'MOUSE_WHEEL', 'MOUSE_UP', 'MOUSE_OVER', 'MOUSE_OUT',
+            'MOUSE_MOVE', 'MOUSE_LEAVE', 'MOUSE_FOCUS_CHANGE', 'MOUSE_DOWN',
+            'MITER', 'MIN_VALUE', 'MICROPHONE', 'MENU_SELECT',
+            'MENU_ITEM_SELECT', 'MEDIUM', 'MAX_VALUE', 'LOW', 'LOG2E', 'LOG10E',
+            'LOCAL_WITH_NETWORK', 'LOCAL_WITH_FILE', 'LOCAL_TRUSTED',
+            'LOCAL_STORAGE', 'LN2', 'LN10', 'LITTLE_ENDIAN', 'LINK',
+            'LINEAR_RGB', 'LINEAR', 'LIGHT_COLOR', 'LIGHTEN', 'LEFT', 'LCD',
+            'LAYER', 'LANDSCAPE', 'KOREAN', 'KEY_UP', 'KEY_FOCUS_CHANGE',
+            'KEY_DOWN', 'JUSTIFY', 'JAPANESE_KATAKANA_HALF',
+            'JAPANESE_KATAKANA_FULL', 'JAPANESE_HIRAGANA', 'Infinity', 'ITALIC',
+            'IO_ERROR', 'INVERT', 'INSERT', 'INPUT', 'INNER', 'INIT',
+            'IME_COMPOSITION', 'IGNORE', 'ID3', 'HTTP_STATUS', 'HORIZONTAL',
+            'HOME', 'HIGH', 'HARDLIGHT', 'GREEN', 'GET', 'FULLSCREEN', 'FULL',
+            'FOCUS_OUT', 'FOCUS_IN', 'FLUSHED', 'FLASH9', 'FLASH8', 'FLASH7',
+            'FLASH6', 'FLASH5', 'FLASH4', 'FLASH3', 'FLASH2', 'FLASH1', 'F9',
+            'F8', 'F7', 'F6', 'F5', 'F4', 'F3', 'F2', 'F15', 'F14', 'F13',
+            'F12', 'F11', 'F10', 'F1', 'EXACT_FIT', 'ESCAPE', 'ERROR', 'ERASE',
+            'ENTER_FRAME', 'ENTER', 'END', 'EMBEDDED', 'ELEMENT_NODE', 'E',
+            'DYNAMIC', 'DOWN', 'DOUBLE_CLICK', 'DIFFERENCE', 'DEVICE',
+            'DESCENDING', 'DELETE', 'DEFAULT', 'DEACTIVATE', 'DATA',
+            'DARK_COLOR', 'DARKEN', 'CRT', 'CONTROL', 'CONNECT', 'COMPLETE',
+            'COLOR', 'CLOSE', 'CLICK', 'CLAMP', 'CHINESE', 'CHANGE', 'CENTER',
+            'CASEINSENSITIVE', 'CAPTURING_PHASE', 'CAPS_LOCK', 'CANCEL',
+            'CAMERA', 'BUBBLING_PHASE', 'BOTTOM_RIGHT', 'BOTTOM_LEFT', 'BOTTOM',
+            'BOLD_ITALIC', 'BOLD', 'BLUE', 'BINARY', 'BIG_ENDIAN', 'BEVEL',
+            'BEST', 'BACKSPACE', 'AUTO', 'AT_TARGET', 'ASYNC_ERROR', 'AMF3',
+            'AMF0', 'ALWAYS', 'ALPHANUMERIC_HALF', 'ALPHANUMERIC_FULL', 'ALPHA',
+            'ADVANCED', 'ADDED_TO_STAGE', 'ADDED', 'ADD', 'ACTIVITY',
+            'ACTIONSCRIPT3', 'ACTIONSCRIPT2'
+            ),
+        //FIX: Must be last in order to avoid conflicts with keywords present
+        //in other keyword groups, that might get highlighted as part of the URL.
+        //I know this is not a proper work-around, but should do just fine.
+        5 => array(
+            'uint', 'int', 'arguments', 'XMLSocket', 'XMLNodeType', 'XMLNode',
+            'XMLList', 'XMLDocument', 'XML', 'Video', 'VerifyError',
+            'URLVariables', 'URLStream', 'URLRequestMethod', 'URLRequestHeader',
+            'URLRequest', 'URLLoaderDataFormat', 'URLLoader', 'URIError',
+            'TypeError', 'Transform', 'TimerEvent', 'Timer', 'TextSnapshot',
+            'TextRenderer', 'TextLineMetrics', 'TextFormatAlign', 'TextFormat',
+            'TextFieldType', 'TextFieldAutoSize', 'TextField', 'TextEvent',
+            'TextDisplayMode', 'TextColorType', 'System', 'SyntaxError',
+            'SyncEvent', 'StyleSheet', 'String', 'StatusEvent', 'StaticText',
+            'StageScaleMode', 'StageQuality', 'StageAlign', 'Stage',
+            'StackOverflowError', 'Sprite', 'SpreadMethod', 'SoundTransform',
+            'SoundMixer', 'SoundLoaderContext', 'SoundChannel', 'Sound',
+            'Socket', 'SimpleButton', 'SharedObjectFlushStatus', 'SharedObject',
+            'Shape', 'SecurityPanel', 'SecurityErrorEvent', 'SecurityError',
+            'SecurityDomain', 'Security', 'ScriptTimeoutError', 'Scene',
+            'SWFVersion', 'Responder', 'RegExp', 'ReferenceError', 'Rectangle',
+            'RangeError', 'QName', 'Proxy', 'ProgressEvent',
+            'PrintJobOrientation', 'PrintJobOptions', 'PrintJob', 'Point',
+            'PixelSnapping', 'ObjectEncoding', 'Object', 'Number', 'NetStream',
+            'NetStatusEvent', 'NetConnection', 'Namespace', 'MovieClip',
+            'MouseEvent', 'Mouse', 'MorphShape', 'Microphone', 'MemoryError',
+            'Matrix', 'Math', 'LocalConnection', 'LoaderInfo', 'LoaderContext',
+            'Loader', 'LineScaleMode', 'KeyboardEvent', 'Keyboard',
+            'KeyLocation', 'JointStyle', 'InvalidSWFError',
+            'InterpolationMethod', 'InteractiveObject', 'IllegalOperationError',
+            'IOErrorEvent', 'IOError', 'IMEEvent', 'IMEConversionMode', 'IME',
+            'IExternalizable', 'IEventDispatcher', 'IDynamicPropertyWriter',
+            'IDynamicPropertyOutput', 'IDataOutput', 'IDataInput', 'ID3Info',
+            'IBitmapDrawable', 'HTTPStatusEvent', 'GridFitType', 'Graphics',
+            'GradientType', 'GradientGlowFilter', 'GradientBevelFilter',
+            'GlowFilter', 'Function', 'FrameLabel', 'FontType', 'FontStyle',
+            'Font', 'FocusEvent', 'FileReferenceList', 'FileReference',
+            'FileFilter', 'ExternalInterface', 'EventPhase', 'EventDispatcher',
+            'Event', 'EvalError', 'ErrorEvent', 'Error', 'Endian', 'EOFError',
+            'DropShadowFilter', 'DisplayObjectContainer', 'DisplayObject',
+            'DisplacementMapFilterMode', 'DisplacementMapFilter', 'Dictionary',
+            'DefinitionError', 'Date', 'DataEvent', 'ConvolutionFilter',
+            'ContextMenuItem', 'ContextMenuEvent', 'ContextMenuBuiltInItems',
+            'ContextMenu', 'ColorTransform', 'ColorMatrixFilter', 'Class',
+            'CapsStyle', 'Capabilities', 'Camera', 'CSMSettings', 'ByteArray',
+            'Boolean', 'BlurFilter', 'BlendMode', 'BitmapFilterType',
+            'BitmapFilterQuality', 'BitmapFilter', 'BitmapDataChannel',
+            'BitmapData', 'Bitmap', 'BevelFilter', 'AsyncErrorEvent', 'Array',
+            'ArgumentError', 'ApplicationDomain', 'AntiAliasType',
+            'ActivityEvent', 'ActionScriptVersion', 'AccessibilityProperties',
+            'Accessibility', 'AVM1Movie'
+            )
+        ),
+    'SYMBOLS' => array(
+        '(', ')', '[', ']', '{', '}', '!', '%', '&', '*', '|', '/', '<', '>', '^', '-', '+', '~', '?', ':', ';', '.', ','
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => true,
+        2 => true,
+        3 => true,
+        4 => true,
+        5 => true,
+        6 => true,
+        7 => true,
+        8 => true
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #0033ff; font-weight: bold;',
+            2 => 'color: #6699cc; font-weight: bold;',
+            3 => 'color: #339966; font-weight: bold;',
+            4 => 'color: #9900cc; font-weight: bold;',
+            5 => 'color: #004993;',
+            6 => 'color: #004993;',
+            7 => 'color: #004993;',
+            8 => 'color: #004993;'
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #009900; font-style: italic;',
+            2 => 'color: #009966; font-style: italic;',
+            'MULTI' => 'color: #3f5fbf;'
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => ''
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #000000;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #990000;'
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #000000; font-weight:bold;'
+            ),
+        'METHODS' => array(
+            0 => 'color: #000000;',
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #000066; font-weight: bold;'
+            ),
+        'REGEXPS' => array(
+            ),
+        'SCRIPT' => array(
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => '',
+        3 => '',
+        4 => '',
+        5 => 'http://www.google.com/search?q={FNAMEL}%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:{FNAMEL}.html',
+        6 => '',
+        7 => '',
+        8 => ''
+        ),
+    'OOLANG' => false,//Save some time as OO identifiers aren't used
+    'OBJECT_SPLITTERS' => array(
+        // commented out because it's not very relevant for AS, as all properties, methods and constants are dot-accessed.
+        // I believe it's preferable to have package highlighting for example, which is not possible with this enabled.
+        // 0 => '.'
+        ),
+    'REGEXPS' => array(
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(),
+    'HIGHLIGHT_STRICT_BLOCK' => array()
+);
+
+?>

+ 135 - 0
lib/geshi/geshi/ada.php

@@ -0,0 +1,135 @@
+<?php
+/*************************************************************************************
+ * ada.php
+ * -------
+ * Author: Tux (tux@inmail.cz)
+ * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.8.11
+ * Date Started: 2004/07/29
+ *
+ * Ada language file for GeSHi.
+ * Words are from SciTe configuration file
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.2)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.1)
+ *   -  Removed apostrophe as string delimiter
+ *   -  Added URL support
+ * 2004/08/05 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'Ada',
+    'COMMENT_SINGLE' => array(1 => '--'),
+    'COMMENT_MULTI' => array('/*' => '*/'),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array('"'),
+    'ESCAPE_CHAR' => '\\',
+    'KEYWORDS' => array(
+        1 => array(
+            'begin', 'declare', 'do', 'else', 'elsif', 'exception', 'for', 'if',
+            'is', 'loop', 'while', 'then', 'end', 'select', 'case', 'until',
+            'goto', 'return'
+            ),
+        2 => array(
+            'abs', 'and', 'at', 'mod', 'not', 'or', 'rem', 'xor'
+            ),
+        3 => array(
+            'abort', 'abstract', 'accept', 'access', 'aliased', 'all', 'array',
+            'body', 'constant', 'delay', 'delta', 'digits', 'entry', 'exit',
+            'function', 'generic', 'in', 'interface', 'limited', 'new', 'null',
+            'of', 'others', 'out', 'overriding', 'package', 'pragma', 'private',
+            'procedure', 'protected', 'raise', 'range', 'record', 'renames',
+            'requeue', 'reverse', 'separate', 'subtype', 'synchronized',
+            'tagged', 'task', 'terminate', 'type', 'use', 'when', 'with'
+            )
+        ),
+    'SYMBOLS' => array(
+        '(', ')'
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => false,
+        2 => false,
+        3 => false,
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #00007f;',
+            2 => 'color: #0000ff;',
+            3 => 'color: #46aa03; font-weight:bold;',
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #66cc66;'
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #adadad; font-style: italic;',
+            'MULTI' => 'color: #808080; font-style: italic;'
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #000099; font-weight: bold;'
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #66cc66;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #7f007f;'
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #ff0000;'
+            ),
+        'METHODS' => array(
+            1 => 'color: #202020;'
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #66cc66;'
+            ),
+        'REGEXPS' => array(
+            ),
+        'SCRIPT' => array(
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => '',
+        3 => ''
+        ),
+    'OOLANG' => true,
+    'OBJECT_SPLITTERS' => array(
+        1 => '.'
+        ),
+    'REGEXPS' => array(
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        )
+);
+
+?>

File diff suppressed because it is too large
+ 329 - 0
lib/geshi/geshi/algol68.php


+ 483 - 0
lib/geshi/geshi/apache.php

@@ -0,0 +1,483 @@
+<?php
+/*************************************************************************************
+ * apache.php
+ * ----------
+ * Author: Tux (tux@inmail.cz)
+ * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.8.11
+ * Date Started: 2004/29/07
+ *
+ * Apache language file for GeSHi.
+ * Words are from SciTe configuration file
+ *
+ * CHANGES
+ * -------
+ * 2008/17/06 (1.0.8)
+ *  -  Added support for apache configuration sections (milian)
+ *  -  Added missing php keywords (milian)
+ *  -  Added some more keywords
+ *  -  Disabled highlighting of brackets by default
+ * 2004/11/27 (1.0.2)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.1)
+ *   -  Added support for URLs
+ * 2004/08/05 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/07/29)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'Apache configuration',
+    'COMMENT_SINGLE' => array(1 => '#'),
+    'COMMENT_MULTI' => array(),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array("'", '"'),
+    'ESCAPE_CHAR' => '\\',
+    'KEYWORDS' => array(
+        /*keywords*/
+        1 => array(
+            //core.c
+            'AcceptFilter','AcceptPathInfo','AccessConfig','AccessFileName',
+            'AddDefaultCharset','AddOutputFilterByType','AllowEncodedSlashes',
+            'AllowOverride','AuthName','AuthType','ContentDigest',
+            'CoreDumpDirectory','DefaultType','DocumentRoot','EnableMMAP',
+            'EnableSendfile','ErrorDocument','ErrorLog','FileETag','ForceType',
+            'HostnameLookups','Include','LimitInternalRecursion',
+            'LimitRequestBody','LimitRequestFields','LimitRequestFieldsize',
+            'LimitRequestLine','LimitXMLRequestBody','LogLevel','MaxMemFree',
+            'MaxRequestsPerChild','NameVirtualHost','Options','PidFile','Port',
+            'Protocol','Require','RLimitCPU','RLimitMEM','RLimitNPROC',
+            'Satisfy','ScoreBoardFile','ServerAdmin','ServerAlias','ServerName',
+            'ServerPath','ServerRoot','ServerSignature','ServerTokens',
+            'SetHandler','SetInputFilter','SetOutputFilter','ThreadStackSize',
+            'Timeout','TraceEnable','UseCanonicalName',
+            'UseCanonicalPhysicalPort',
+
+            //http_core.c
+            'KeepAlive','KeepAliveTimeout','MaxKeepAliveRequests',
+
+            //mod_actions.c
+            'Action','Script',
+
+            //mod_alias.c
+            'Alias','AliasMatch','Redirect','RedirectMatch','RedirectPermanent',
+            'RedirectTemp','ScriptAlias','ScriptAliasMatch',
+
+            //mod_asis.c
+
+            //mod_auth_basic.c
+            'AuthBasicAuthoritative','AuthBasicProvider',
+
+            //mod_auth_digest.c
+            'AuthDigestAlgorithm','AuthDigestDomain','AuthDigestNcCheck',
+            'AuthDigestNonceFormat','AuthDigestNonceLifetime',
+            'AuthDigestProvider','AuthDigestQop','AuthDigestShmemSize',
+
+            //mod_authn_alias.c
+
+            //mod_authn_anon.c
+            'Anonymous','Anonymous_LogEmail','Anonymous_MustGiveEmail',
+            'Anonymous_NoUserId','Anonymous_VerifyEmail',
+
+            //mod_authn_dbd.c
+            'AuthDBDUserPWQuery','AuthDBDUserRealmQuery',
+
+            //mod_authn_dbm.c
+            'AuthDBMType','AuthDBMUserFile',
+
+            //mod_authn_default.c
+            'AuthDefaultAuthoritative',
+
+            //mod_authn_file.c
+            'AuthUserFile',
+
+            //mod_authnz_ldap.c
+            'AuthLDAPBindDN','AuthLDAPBindPassword','AuthLDAPCharsetConfig',
+            'AuthLDAPCompareDNOnServer','AuthLDAPDereferenceAliases',
+            'AuthLDAPGroupAttribute','AuthLDAPGroupAttributeIsDN',
+            'AuthLDAPRemoteUserAttribute','AuthLDAPRemoteUserIsDN',
+            'AuthLDAPURL','AuthzLDAPAuthoritative',
+
+            //mod_authz_dbm.c
+            'AuthDBMGroupFile','AuthzDBMAuthoritative','AuthzDBMType',
+
+            //mod_authz_default.c
+            'AuthzDefaultAuthoritative',
+
+            //mod_authz_groupfile.c
+            'AuthGroupFile','AuthzGroupFileAuthoritative',
+
+            //mod_authz_host.c
+            'Allow','Deny','Order',
+
+            //mod_authz_owner.c
+            'AuthzOwnerAuthoritative',
+
+            //mod_authz_svn.c
+            'AuthzForceUsernameCase','AuthzSVNAccessFile','AuthzSVNAnonymous',
+            'AuthzSVNAuthoritative','AuthzSVNNoAuthWhenAnonymousAllowed',
+
+            //mod_authz_user.c
+            'AuthzUserAuthoritative',
+
+            //mod_autoindex.c
+            'AddAlt','AddAltByEncoding','AddAltByType','AddDescription',
+            'AddIcon','AddIconByEncoding','AddIconByType','DefaultIcon',
+            'FancyIndexing','HeaderName','IndexHeadInsert','IndexIgnore',
+            'IndexOptions','IndexOrderDefault','IndexStyleSheet','ReadmeName',
+
+            //mod_bt.c
+            'Tracker','TrackerDetailURL','TrackerFlags','TrackerHashMaxAge',
+            'TrackerHashMinAge','TrackerHashWatermark','TrackerHome',
+            'TrackerReturnInterval','TrackerReturnMax',
+            'TrackerReturnPeerFactor','TrackerReturnPeers','TrackerRootInclude',
+            'TrackerStyleSheet',
+
+            //mod_bw.c
+            'BandWidth','BandWidthError','BandWidthModule','BandWidthPacket',
+            'ForceBandWidthModule','LargeFileLimit','MaxConnection',
+            'MinBandWidth',
+
+            //mod_cache.c
+            'CacheDefaultExpire','CacheDisable','CacheEnable',
+            'CacheIgnoreCacheControl','CacheIgnoreHeaders',
+            'CacheIgnoreNoLastMod','CacheIgnoreQueryString',
+            'CacheLastModifiedFactor','CacheMaxExpire','CacheStoreNoStore',
+            'CacheStorePrivate',
+
+            //mod_cern_meta.c
+            'MetaDir','MetaFiles','MetaSuffix',
+
+            //mod_cgi.c
+            'ScriptLog','ScriptLogBuffer','ScriptLogLength',
+
+            //mod_charset_lite.c
+            'CharsetDefault','CharsetOptions','CharsetSourceEnc',
+
+            //mod_dav.c
+            'DAV','DAVDepthInfinity','DAVMinTimeout',
+
+            //mod_dav_fs.c
+            'DAVLockDB',
+
+            //mod_dav_lock.c
+            'DAVGenericLockDB',
+
+            //mod_dav_svn.c
+            'SVNActivitiesDB','SVNAllowBulkUpdates','SVNAutoversioning',
+            'SVNIndexXSLT','SVNListParentPath','SVNMasterURI','SVNParentPath',
+            'SVNPath','SVNPathAuthz','SVNReposName','SVNSpecialURI',
+
+            //mod_dbd.c
+            'DBDExptime','DBDKeep','DBDMax','DBDMin','DBDParams','DBDPersist',
+            'DBDPrepareSQL','DBDriver',
+
+            //mod_deflate.c
+            'DeflateBufferSize','DeflateCompressionLevel','DeflateFilterNote',
+            'DeflateMemLevel','DeflateWindowSize',
+
+            //mod_dir.c
+            'DirectoryIndex','DirectorySlash',
+
+            //mod_disk_cache.c
+            'CacheDirLength','CacheDirLevels','CacheMaxFileSize',
+            'CacheMinFileSize','CacheRoot',
+
+            //mod_dumpio.c
+            'DumpIOInput','DumpIOLogLevel','DumpIOOutput',
+
+            //mod_env.c
+            'PassEnv','SetEnv','UnsetEnv',
+
+            //mod_expires.c
+            'ExpiresActive','ExpiresByType','ExpiresDefault',
+
+            //mod_ext_filter.c
+            'ExtFilterDefine','ExtFilterOptions',
+
+            //mod_file_cache.c
+            'cachefile','mmapfile',
+
+            //mod_filter.c
+            'FilterChain','FilterDeclare','FilterProtocol','FilterProvider',
+            'FilterTrace',
+
+            //mod_gnutls.c
+            'GnuTLSCache','GnuTLSCacheTimeout','GnuTLSCertificateFile',
+            'GnuTLSKeyFile','GnuTLSPGPCertificateFile','GnuTLSPGPKeyFile',
+            'GnuTLSClientVerify','GnuTLSClientCAFile','GnuTLSPGPKeyringFile',
+            'GnuTLSEnable','GnuTLSDHFile','GnuTLSRSAFile','GnuTLSSRPPasswdFile',
+            'GnuTLSSRPPasswdConfFile','GnuTLSPriorities',
+            'GnuTLSExportCertificates',
+
+            //mod_headers.c
+            'Header','RequestHeader',
+
+            //mod_imagemap.c
+            'ImapBase','ImapDefault','ImapMenu',
+
+            //mod_include.c
+            'SSIAccessEnable','SSIEndTag','SSIErrorMsg','SSIStartTag',
+            'SSITimeFormat','SSIUndefinedEcho','XBitHack',
+
+            //mod_ident.c
+            'IdentityCheck','IdentityCheckTimeout',
+
+            //mod_info.c
+            'AddModuleInfo',
+
+            //mod_isapi.c
+            'ISAPIAppendLogToErrors','ISAPIAppendLogToQuery','ISAPICacheFile',
+            'ISAPIFakeAsync','ISAPILogNotSupported','ISAPIReadAheadBuffer',
+
+            //mod_log_config.c
+            'BufferedLogs','CookieLog','CustomLog','LogFormat','TransferLog',
+
+            //mod_log_forensic.c
+            'ForensicLog',
+
+            //mod_log_rotate.c
+            'RotateInterval','RotateLogs','RotateLogsLocalTime',
+
+            //mod_logio.c
+
+            //mod_mem_cache.c
+            'MCacheMaxObjectCount','MCacheMaxObjectSize',
+            'MCacheMaxStreamingBuffer','MCacheMinObjectSize',
+            'MCacheRemovalAlgorithm','MCacheSize',
+
+            //mod_mime.c
+            'AddCharset','AddEncoding','AddHandler','AddInputFilter',
+            'AddLanguage','AddOutputFilter','AddType','DefaultLanguage',
+            'ModMimeUsePathInfo','MultiviewsMatch','RemoveCharset',
+            'RemoveEncoding','RemoveHandler','RemoveInputFilter',
+            'RemoveLanguage','RemoveOutputFilter','RemoveType','TypesConfig',
+
+            //mod_mime_magic.c
+            'MimeMagicFile',
+
+            //mod_negotiation.c
+            'CacheNegotiatedDocs','ForceLanguagePriority','LanguagePriority',
+
+            //mod_php5.c
+            'php_admin_flag','php_admin_value','php_flag','php_value',
+            'PHPINIDir',
+
+            //mod_proxy.c
+            'AllowCONNECT','BalancerMember','NoProxy','ProxyBadHeader',
+            'ProxyBlock','ProxyDomain','ProxyErrorOverride',
+            'ProxyFtpDirCharset','ProxyIOBufferSize','ProxyMaxForwards',
+            'ProxyPass','ProxyPassInterpolateEnv','ProxyPassMatch',
+            'ProxyPassReverse','ProxyPassReverseCookieDomain',
+            'ProxyPassReverseCookiePath','ProxyPreserveHost',
+            'ProxyReceiveBufferSize','ProxyRemote','ProxyRemoteMatch',
+            'ProxyRequests','ProxySet','ProxyStatus','ProxyTimeout','ProxyVia',
+
+            //mod_proxy_ajp.c
+
+            //mod_proxy_balancer.c
+
+            //mod_proxy_connect.c
+
+            //mod_proxy_ftp.c
+
+            //mod_proxy_http.c
+
+            //mod_rewrite.c
+            'RewriteBase','RewriteCond','RewriteEngine','RewriteLock',
+            'RewriteLog','RewriteLogLevel','RewriteMap','RewriteOptions',
+            'RewriteRule',
+
+            //mod_setenvif.c
+            'BrowserMatch','BrowserMatchNoCase','SetEnvIf','SetEnvIfNoCase',
+
+            //mod_so.c
+            'LoadFile','LoadModule',
+
+            //mod_speling.c
+            'CheckCaseOnly','CheckSpelling',
+
+            //mod_ssl.c
+            'SSLCACertificateFile','SSLCACertificatePath','SSLCADNRequestFile',
+            'SSLCADNRequestPath','SSLCARevocationFile','SSLCARevocationPath',
+            'SSLCertificateChainFile','SSLCertificateFile',
+            'SSLCertificateKeyFile','SSLCipherSuite','SSLCryptoDevice',
+            'SSLEngine','SSLHonorCipherOrder','SSLMutex','SSLOptions',
+            'SSLPassPhraseDialog','SSLProtocol','SSLProxyCACertificateFile',
+            'SSLProxyCACertificatePath','SSLProxyCARevocationFile',
+            'SSLProxyCARevocationPath','SSLProxyCipherSuite','SSLProxyEngine',
+            'SSLProxyMachineCertificateFile','SSLProxyMachineCertificatePath',
+            'SSLProxyProtocol','SSLProxyVerify','SSLProxyVerifyDepth',
+            'SSLRandomSeed','SSLRenegBufferSize','SSLRequire','SSLRequireSSL',
+            'SSLSessionCache','SSLSessionCacheTimeout','SSLUserName',
+            'SSLVerifyClient','SSLVerifyDepth',
+
+            //mod_status.c
+            'ExtendedStatus','SeeRequestTail',
+
+            //mod_substitute.c
+            'Substitute',
+
+            //mod_suexec.c
+            'SuexecUserGroup',
+
+            //mod_unique_id.c
+
+            //mod_upload_progress
+            'ReportUploads', 'TrackUploads', 'UploadProgressSharedMemorySize',
+
+            //mod_userdir.c
+            'UserDir',
+
+            //mod_usertrack.c
+            'CookieDomain','CookieExpires','CookieName','CookieStyle',
+            'CookieTracking',
+
+            //mod_version.c
+
+            //mod_vhost_alias.c
+            'VirtualDocumentRoot','VirtualDocumentRootIP',
+            'VirtualScriptAlias','VirtualScriptAliasIP',
+
+            //mod_view.c
+            'ViewEnable',
+
+            //mod_win32.c
+            'ScriptInterpreterSource',
+
+            //mpm_winnt.c
+            'Listen','ListenBacklog','ReceiveBufferSize','SendBufferSize',
+            'ThreadLimit','ThreadsPerChild','Win32DisableAcceptEx',
+
+            //mpm_common.c
+            'AcceptMutex','AddModule','ClearModuleList','EnableExceptionHook',
+            'Group','LockFile','MaxClients','MaxSpareServers','MaxSpareThreads',
+            'MinSpareServers','MinSpareThreads','ServerLimit','StartServers',
+            'StartThreads','User',
+
+            //util_ldap.c
+            'LDAPCacheEntries','LDAPCacheTTL','LDAPConnectionTimeout',
+            'LDAPOpCacheEntries','LDAPOpCacheTTL','LDAPSharedCacheFile',
+            'LDAPSharedCacheSize','LDAPTrustedClientCert',
+            'LDAPTrustedGlobalCert','LDAPTrustedMode','LDAPVerifyServerCert',
+
+            //Unknown Mods ...
+            'AgentLog','BindAddress','bs2000account','CacheForceCompletion',
+            'CacheGCInterval','CacheSize','NoCache','qsc','RefererIgnore',
+            'RefererLog','Resourceconfig','ServerType','SingleListen'
+            ),
+        /*keywords 2*/
+        2 => array(
+            'all','on','off','standalone','inetd','indexes',
+            'force-response-1.0','downgrade-1.0','nokeepalive',
+            'includes','followsymlinks','none',
+            'x-compress','x-gzip'
+        ),
+        /*keywords 3*/
+        3 => array(
+            //core.c
+            'Directory','DirectoryMatch','Files','FilesMatch','IfDefine',
+            'IfModule','Limit','LimitExcept','Location','LocationMatch',
+            'VirtualHost',
+
+            //mod_authn_alias.c
+            'AuthnProviderAlias',
+
+            //mod_proxy.c
+            'Proxy','ProxyMatch',
+
+            //mod_version.c
+            'IfVersion'
+        )
+    ),
+    'SYMBOLS' => array(
+        '+', '-'
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => false,
+        2 => false,
+        3 => false,
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #00007f;',
+            2 => 'color: #0000ff;',
+            3 => 'color: #000000; font-weight:bold;',
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #adadad; font-style: italic;',
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #000099; font-weight: bold;'
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #339933;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #7f007f;'
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #ff0000;'
+            ),
+        'METHODS' => array(
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #008000;'
+            ),
+        'REGEXPS' => array(
+            ),
+        'SCRIPT' => array(
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => '',
+        3 => ''
+        ),
+    'OOLANG' => false,
+    'OBJECT_SPLITTERS' => array(
+        ),
+    'REGEXPS' => array(
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        ),
+    'PARSER_CONTROL' => array(
+        'ENABLE_FLAGS' => array(
+            'BRACKETS' => GESHI_NEVER,
+            'SYMBOLS' => GESHI_NEVER
+        ),
+        'KEYWORDS' => array(
+            3 => array(
+                'DISALLOWED_BEFORE' => '(?<=&lt;|&lt;\/)',
+                'DISALLOWED_AFTER' => '(?=\s|\/|&gt;)',
+            )
+        )
+    )
+);
+
+?>

+ 157 - 0
lib/geshi/geshi/applescript.php

@@ -0,0 +1,157 @@
+<?php
+/*************************************************************************************
+ * applescript.php
+ * --------
+ * Author: Stephan Klimek (http://www.initware.org)
+ * Copyright: Stephan Klimek (http://www.initware.org)
+ * Release Version: 1.0.8.11
+ * Date Started: 2005/07/20
+ *
+ * AppleScript language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2008/05/23 (1.0.7.22)
+ *  -  Added description of extra language features (SF#1970248)
+ *
+ * TODO
+ * -------------------------
+ * URL settings to references
+ *
+ **************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'AppleScript',
+    'COMMENT_SINGLE' => array(1 => '--'),
+    'COMMENT_MULTI' => array( '(*' => '*)'),
+    'COMMENT_REGEXP' => array(
+        2 => '/(?<=[a-z])\'/i',
+        3 => '/(?<![a-z])\'.*?\'/i',
+        ),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array('"'),
+    'ESCAPE_CHAR' => '\\',
+    'KEYWORDS' => array(
+        1 => array(
+            'application','close','count','delete','duplicate','exists','launch','make','move','open',
+            'print','quit','reopen','run','save','saving', 'idle', 'path to', 'number', 'alias', 'list', 'text', 'string',
+            'integer', 'it','me','version','pi','result','space','tab','anything','case','diacriticals','expansion',
+            'hyphens','punctuation','bold','condensed','expanded','hidden','italic','outline','plain',
+            'shadow','strikethrough','subscript','superscript','underline','ask','no','yes','false', 'id',
+            'true','weekday','monday','mon','tuesday','tue','wednesday','wed','thursday','thu','friday',
+            'fri','saturday','sat','sunday','sun','month','january','jan','february','feb','march',
+            'mar','april','apr','may','june','jun','july','jul','august','aug','september', 'quote', 'do JavaScript',
+            'sep','october','oct','november','nov','december','dec','minutes','hours', 'name', 'default answer',
+            'days','weeks', 'folder', 'folders', 'file', 'files', 'window', 'eject', 'disk', 'reveal', 'sleep',
+            'shut down', 'restart', 'display dialog', 'buttons', 'invisibles', 'item', 'items', 'delimiters', 'offset of',
+            'AppleScript\'s', 'choose file', 'choose folder', 'choose from list', 'beep', 'contents', 'do shell script',
+            'paragraph', 'paragraphs', 'missing value', 'quoted form', 'desktop', 'POSIX path', 'POSIX file',
+            'activate', 'document', 'adding', 'receiving', 'content', 'new', 'properties', 'info for', 'bounds',
+            'selection', 'extension', 'into', 'onto', 'by', 'between', 'against', 'set the clipboard to', 'the clipboard'
+            ),
+        2 => array(
+            'each','some','every','whose','where','index','first','second','third','fourth',
+            'fifth','sixth','seventh','eighth','ninth','tenth','last','front','back','st','nd',
+            'rd','th','middle','named','through','thru','before','after','beginning','the', 'as',
+            'div','mod','and','not','or','contains','equal','equals','isnt', 'less', 'greater'
+            ),
+        3 => array(
+            'script','property','prop','end','to','set','global','local','on','of',
+            'in','given','with','without','return','continue','tell','if','then','else','repeat',
+            'times','while','until','from','exit','try','error','considering','ignoring','timeout',
+            'transaction','my','get','put','is', 'copy'
+            )
+        ),
+    'SYMBOLS' => array(
+        ')','+','-','^','*','/','&','<','>=','<','<=','=','�'
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => false,
+        2 => false,
+        3 => false,
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #0066ff;',
+            2 => 'color: #ff0033;',
+            3 => 'color: #ff0033; font-weight: bold;'
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #808080; font-style: italic;',
+            2 => '',
+            3 => 'color: #ff0000;',
+            'MULTI' => 'color: #808080; font-style: italic;'
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #000000; font-weight: bold;'
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #000000;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #009900;'
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #000000;'
+            ),
+        'METHODS' => array(
+            1 => 'color: #006600;',
+            2 => 'color: #006600;'
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #000000;'
+            ),
+        'REGEXPS' => array(
+            0 => 'color: #339933;',
+            4 => 'color: #0066ff;',
+            ),
+        'SCRIPT' => array(
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => '',
+        3 => ''
+        ),
+    'OOLANG' => true,
+    'OBJECT_SPLITTERS' => array(
+        1 => ',+-=&lt;&gt;/?^&amp;*'
+        ),
+    'REGEXPS' => array(
+        //Variables
+        0 => '[\\$%@]+[a-zA-Z_][a-zA-Z0-9_]*',
+        //File descriptors
+        4 => '&lt;[a-zA-Z_][a-zA-Z0-9_]*&gt;',
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        ),
+    'PARSER_CONTROL' => array(
+        'KEYWORDS' => array(
+            'SPACE_AS_WHITESPACE' => true
+            )
+        )
+);
+
+?>

+ 148 - 0
lib/geshi/geshi/apt_sources.php

@@ -0,0 +1,148 @@
+<?php
+/*************************************************************************************
+ * apt_sources.php
+ * ----------
+ * Author: Milian Wolff (mail@milianw.de)
+ * Copyright: (c) 2008 Milian Wolff (http://milianw.de)
+ * Release Version: 1.0.8.11
+ * Date Started: 2008/06/17
+ *
+ * Apt sources.list language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2008/06/17 (1.0.8)
+ *  -  Initial import
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'Apt sources',
+    'COMMENT_SINGLE' => array(1 => '#'),
+    'COMMENT_MULTI' => array(),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array(),
+    'ESCAPE_CHAR' => '\\',
+    'KEYWORDS' => array(
+        /*keywords*/
+        1 => array(
+            'deb-src', 'deb'
+            ),
+        2 => array(
+            //Generic
+            'stable', 'old-stable', 'testing', 'testing-proposed-updates',
+            'unstable', 'unstable-proposed-updates', 'experimental',
+            'non-US', 'security', 'volatile', 'volatile-sloppy',
+            'apt-build',
+            'stable/updates',
+            //Debian
+            'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato', 'woody', 'sarge',
+            'etch', 'lenny', 'wheezy', 'sid',
+            //Ubuntu
+            'warty', 'warty-updates', 'warty-security', 'warty-proposed', 'warty-backports',
+            'hoary', 'hoary-updates', 'hoary-security', 'hoary-proposed', 'hoary-backports',
+            'breezy', 'breezy-updates', 'breezy-security', 'breezy-proposed', 'breezy-backports',
+            'dapper', 'dapper-updates', 'dapper-security', 'dapper-proposed', 'dapper-backports',
+            'edgy', 'edgy-updates', 'edgy-security', 'edgy-proposed', 'edgy-backports',
+            'feisty', 'feisty-updates', 'feisty-security', 'feisty-proposed', 'feisty-backports',
+            'gutsy', 'gutsy-updates', 'gutsy-security', 'gutsy-proposed', 'gutsy-backports',
+            'hardy', 'hardy-updates', 'hardy-security', 'hardy-proposed', 'hardy-backports',
+            'intrepid', 'intrepid-updates', 'intrepid-security', 'intrepid-proposed', 'intrepid-backports',
+            'jaunty', 'jaunty-updates', 'jaunty-security', 'jaunty-proposed', 'jaunty-backports',
+            'karmic', 'karmic-updates', 'karmic-security', 'karmic-proposed', 'karmic-backports',
+            'lucid', 'lucid-updates', 'lucid-security', 'lucid-proposed', 'lucid-backports',
+            'maverick', 'maverick-updates', 'maverick-security', 'maverick-proposed', 'maverick-backports'
+            ),
+        3 => array(
+            'main', 'restricted', 'preview', 'contrib', 'non-free',
+            'commercial', 'universe', 'multiverse'
+            )
+    ),
+    'REGEXPS' => array(
+        0 => "(((http|ftp):\/\/|file:\/)[^\s]+)|(cdrom:\[[^\]]*\][^\s]*)",
+        ),
+    'SYMBOLS' => array(
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => false,
+        2 => true,
+        3 => true
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #00007f;',
+            2 => 'color: #b1b100;',
+            3 => 'color: #b16000;'
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #adadad; font-style: italic;',
+            ),
+        'ESCAPE_CHAR' => array(
+            ),
+        'BRACKETS' => array(
+            ),
+        'STRINGS' => array(
+            ),
+        'NUMBERS' => array(
+            ),
+        'METHODS' => array(
+            ),
+        'SYMBOLS' => array(
+            ),
+        'REGEXPS' => array(
+            0 => 'color: #009900;',
+            ),
+        'SCRIPT' => array(
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => '',
+        3 => ''
+        ),
+    'OOLANG' => false,
+    'OBJECT_SPLITTERS' => array(
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        ),
+    'PARSER_CONTROL' => array(
+        'ENABLE_FLAGS' => array(
+            'NUMBERS' => GESHI_NEVER,
+            'METHODS' => GESHI_NEVER,
+            'SCRIPT' => GESHI_NEVER,
+            'SYMBOLS' => GESHI_NEVER,
+            'ESCAPE_CHAR' => GESHI_NEVER,
+            'BRACKETS' => GESHI_NEVER,
+            'STRINGS' => GESHI_NEVER,
+        ),
+        'KEYWORDS' => array(
+            'DISALLOWED_BEFORE' => '(?<![a-zA-Z0-9\$_\|\#;>|^\/])',
+            'DISALLOWED_AFTER' => '(?![a-zA-Z0-9_\|%\\-&\.])'
+        )
+    ),
+    'TAB_WIDTH' => 4
+);
+
+?>

File diff suppressed because it is too large
+ 3318 - 0
lib/geshi/geshi/arm.php


+ 603 - 0
lib/geshi/geshi/asm.php

@@ -0,0 +1,603 @@
+<?php
+/*************************************************************************************
+ * asm.php
+ * -------
+ * Author: Tux (tux@inmail.cz)
+ * Copyright: (c) 2004 Tux (http://tux.a4.cz/),
+ *                2004-2009 Nigel McNie (http://qbnz.com/highlighter),
+ *                2009-2011 Benny Baumann (http://qbnz.com/highlighter),
+ *                2011 Dennis Yurichev (dennis@conus.info),
+ *                2011 Marat Dukhan (mdukhan3.at.gatech.dot.edu)
+ * Release Version: 1.0.8.11
+ * Date Started: 2004/07/27
+ *
+ * x86 Assembler language file for GeSHi.
+ * Based on the following documents:
+ *   - "Intel64 and IA-32 Architectures Programmer's Reference Manual
+ *       Volume 2 (2A & 2B): Instructions Set Reference, A-Z",
+ *       Order Number 25383-039US, May 2011
+ *   - "Intel Advanced Vector Extensions Programming Reference",
+ *       Order Number 319433-011, June 2011
+ *   - "AMD64 Architecture Programmer's Manual Volume 3:
+ *       General-Purpose and System Instructions", Publication No. 24594,
+ *       Revision 3.15, November 2009
+ *   - "AMD64 Architecture Programmer's Manual Volume 4:
+ *       128-Bit and 256-Bit Media Instructions", Publication No. 26568,
+ *       Revision 3.12, May 2011
+ *   - "AMD64 Architecture Programmer's Manual Volume 5:
+ *       64-Bit Media and x87 Floating-Point Instructions",
+ *       Publication No. 26569, Revision 3.11, December 2009
+ *   - "AMD64 Technology Lightweight Profiling Specification",
+ *       Publication No. 43724, Revision 3.08, August 2010
+ *   - "Application Note 108: Cyrix Extended MMX Instruction Set"
+ *   - "VIA Padlock Programming Guide", 3rd May 2005
+ *   - http://en.wikipedia.org/wiki/X86_instruction_listings
+ *   - NASM 2.10rc8 Online Documenation at
+ *       http://www.nasm.us/xdoc/2.10rc8/html/nasmdoc0.html
+ * Color scheme is taken from SciTE. Previous versions of this file
+ * also used words from SciTE configuration file (based on NASM syntax)
+ *
+ * CHANGES
+ * -------
+ * 2011/10/07
+ *   -  Rearranged instructions and registers into groups
+ *   -  Updated to support the following extensions
+ *          - CMOV, BMI1, BMI2, TBM, FSGSBASE
+ *          - LZCNT, TZCNT, POPCNT, MOVBE, CRC32
+ *          - MMX, MMX+, EMMX
+ *          - 3dnow!, 3dnow!+, 3dnow! Geode, 3dnow! Prefetch
+ *          - SSE, SSE2, SSE3, SSSE3, SSE4A, SSE4.1, SSE4.2
+ *          - AVX, AVX2, XOP, FMA3, FMA4, CVT16
+ *          - VMX, SVM
+ *          - AES, PCLMULQDQ, Padlock, RDRAND
+ *   -  Updated NASM macros and directives
+ * 2010/07/01 (1.0.8.11)
+ *   -  Added MMX/SSE/new x86-64 registers, MMX/SSE (up to 4.2) instructions
+ * 2008/05/23 (1.0.7.22)
+ *   -  Added description of extra language features (SF#1970248)
+ * 2004/11/27 (1.0.2)
+ *   -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.1)
+ *   -  Added support for URLs
+ *   -  Added binary and hexadecimal regexps
+ * 2004/08/05 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'ASM',
+    'COMMENT_SINGLE' => array(1 => ';'),
+    'COMMENT_MULTI' => array(),
+    //Line address prefix suppression
+    'COMMENT_REGEXP' => array(2 => "/^(?:[0-9a-f]{0,4}:)?[0-9a-f]{4}(?:[0-9a-f]{4})?/mi"),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array("'", '"'),
+    'ESCAPE_CHAR' => '',
+    'KEYWORDS' => array(
+        /* General-Purpose */
+        1 => array(
+            /* BCD instructions */
+            'aaa','aad','aam','aas','daa','das',
+            /* Control flow instructions */
+            'ja','jae','jb','jbe','jc','je','jg','jge','jl','jle','jmp','jna',
+            'jnae','jnb','jnbe','jnc','jne','jng','jnge','jnl','jnle','jno','jnp','jns','jnz',
+            'jo','jp','jpe','jpo','js','jz','jcxz','jecxz','jrcxz','loop','loope','loopne',
+            'call','ret','enter','leave','syscall','sysenter','int','into',
+            /* Predicate instructions */
+            'seta','setae','setb','setbe','setc','sete','setg','setge','setl','setle','setna',
+            'setnae','setnb','setnbe','setnc','setne','setng','setnge','setnl','setnle','setno',
+            'setnp','setns','setnz','seto','setp','setpe','setpo','sets','setz','salc',
+            /* Conditional move instructions */
+            'cmovo','cmovno','cmovb','cmovc','cmovnae','cmovae','cmovnb','cmovnc','cmove','cmovz',
+            'cmovne','cmovnz','cmovbe','cmovna','cmova','cmovnbe','cmovs','cmovns','cmovp','cmovpe',
+            'cmovnp','cmovpo','cmovl','cmovnge','cmovge','cmovnl','cmovle','cmovng','cmovg','cmovnle',
+            /* ALU instructions */
+            'add','sub','adc','sbb','neg','cmp','inc','dec','and','or','xor','not','test',
+            'shl','shr','sal','sar','shld','shrd','rol','ror','rcl','rcr',
+            'cbw','cwd','cwde','cdq','cdqe','cqo','bsf','bsr','bt','btc','btr','bts',
+            'idiv','imul','div','mul','bswap','nop',
+            /* Memory instructions */
+            'lea','mov','movsx','movsxd','movzx','xlatb','bound','xchg','xadd','cmpxchg','cmpxchg8b','cmpxchg16b',
+            /* Stack instructions */
+            'push','pop','pusha','popa','pushad','popad','pushf','popf','pushfd','popfd','pushfq','popfq',
+            /* EFLAGS manipulations instructions */
+            'clc','cld','stc','std','cmc','lahf','sahf',
+            /* Prefix instructions */
+            'lock','rep','repe','repz','repne','repnz',
+            /* String instructions */
+            'cmps','cmpsb','cmpsw',/*'cmpsd',*/ 'cmpsq', /*CMPSD conflicts with the SSE2 instructions of the same name*/
+            'movs','movsb','movsw',/*'movsd',*/ 'movsq', /*MOVSD conflicts with the SSE2 instructions of the same name*/
+            'scas','scasb','scasw','scasd','scasq',
+            'stos','stosb','stosw','stosd','stosq',
+            'lods','lodsb','lodsw','lodsd','lodsq',
+            /* Information instructions */
+            'cpuid','rdtsc','rdtscp','rdpmc','xgetbv',
+            'sgdt','sidt','sldt','smsw','str','lar',
+            /* LWP instructions */
+            'llwpcb','slwpcb','lwpval','lwpins',
+            /* Instructions from miscellaneous extensions */
+            'crc32','popcnt','lzcnt','tzcnt','movbe','pclmulqdq','rdrand',
+            /* FSGSBASE instructions */
+            'rdfsbase','rdgsbase','wrfsbase','wrgsbase',
+            /* BMI1 instructions */
+            'andn','bextr','blsi','blsmk','blsr',
+            /* BMI2 instructions */
+            'bzhi','mulx','pdep','pext','rorx','sarx','shlx','shrx',
+            /* TBM instructions */
+            'blcfill','blci','blcic','blcmsk','blcs','blsfill','blsic','t1mskc','tzmsk',
+            /* Legacy instructions */
+            'arpl','ud2','lds','les','lfs','lgs','lss','lsl','verr','verw',
+            /* Privileged instructions */
+            'cli','sti','clts','hlt','rsm','in','insb','insw','insd',
+            'out','outsb','outsw','outsd','clflush','invd','invlpg','invpcid','wbinvd',
+            'iret','iretd','iretq','sysexit','sysret','lidt','lgdt','lldt','lmsw','ltr',
+            'monitor','mwait','rdmsr','wrmsr','swapgs',
+            'fxsave','fxsave64','fxrstor','fxrstor64',
+            'xsave','xsaveopt','xrstor','xsetbv','getsec',
+            /* VMX instructions */
+            'invept','invvpid','vmcall','vmclear','vmlaunch','vmresume',
+            'vmptrld','vmptrst','vmread','vmwrite','vmxoff','vmxon',
+            /* SVM (AMD-V) instructions */
+            'invlpga','skinit','clgi','stgi','vmload','vmsave','vmmcall','vmrun'
+            ),
+        /*FPU*/
+        2 => array(
+            'f2xm1','fabs','fadd','faddp','fbld','fbstp','fchs','fclex','fcom','fcomp','fcompp','fdecstp',
+            'fdisi','fdiv','fdivp','fdivr','fdivrp','feni','ffree','fiadd','ficom','ficomp','fidiv',
+            'fidivr','fild','fimul','fincstp','finit','fist','fistp','fisub','fisubr','fld','fld1',
+            'fldcw','fldenv','fldenvw','fldl2e','fldl2t','fldlg2','fldln2','fldpi','fldz','fmul',
+            'fmulp','fnclex','fndisi','fneni','fninit','fnop','fnsave','fnsavew','fnstcw','fnstenv',
+            'fnstenvw','fnstsw','fpatan','fprem','fptan','frndint','frstor','frstorw','fsave',
+            'fsavew','fscale','fsqrt','fst','fstcw','fstenv','fstenvw','fstp','fstsw','fsub','fsubp',
+            'fsubr','fsubrp','ftst','fwait','fxam','fxch','fxtract','fyl2x','fyl2xp1',
+            'fsetpm','fcos','fldenvd','fnsaved','fnstenvd','fprem1','frstord','fsaved','fsin','fsincos',
+            'fstenvd','fucom','fucomp','fucompp','ffreep',
+            /* FCMOV instructions */
+            'fcomi','fcomip','fucomi','fucomip',
+            'fcmovb','fcmove','fcmovbe','fcmovu','fcmovnb','fcmovne','fcmovnbe','fcmovnu',
+            /* SSE3 instructions */
+            'fisttp'
+            ),
+        /*SIMD*/
+        3 => array(
+            /* MMX instructions */
+            'movd','movq',
+            'paddb','paddw','paddd','paddsb','paddsw','paddusb','paddusw',
+            'psubb','psubw','psubd','psubsb','psubsw','psubusb','psubusw',
+            'pand','pandn','por','pxor',
+            'pcmpeqb','pcmpeqd','pcmpeqw','pcmpgtb','pcmpgtd','pcmpgtw',
+            'pmaddwd','pmulhw','pmullw',
+            'psllw','pslld','psllq','psrlw','psrld','psrlq','psraw','psrad',
+            'packuswb','packsswb','packssdw',
+            'punpcklbw','punpcklwd','punpckldq','punpckhbw','punpckhwd','punpckhdq',
+            'emms',
+            /* MMX+ instructions */
+            'pavgb','pavgw',
+            'pextrw','pinsrw','pmovmskb',
+            'pmaxsw','pmaxub','pminsw','pminub',
+            'pmulhuw','psadbw','pshufw',
+            'prefetchnta','prefetcht0','prefetcht1','prefetcht2',
+            'maskmovq','movntq','sfence',
+            /* EMMX instructions (only available on Cyrix MediaGXm) */
+            'paddsiw','psubsiw',
+            /*'pmulhrw',*/'pmachriw','pmulhriw', /* PMULHRW conflicts with the 3dnow! instruction of the same name */
+            'pmagw','pdistib','paveb',
+            'pmvzb','pmvnzb','pmvlzb','pmvgezb',
+            /* 3dnow! instructions! */
+            'pfacc','pfadd','pfsub','pfsubr','pfmul',
+            'pfcmpeq','pfcmpge','pfcmpgt',
+            'pfmax','pfmin',
+            'pfrcp','pfrcpit1','pfrcpit2','pfrsqit1','pfrsqrt',
+            'pi2fd','pf2id',
+            'pavgusb','pmulhrw',
+            'femms',
+            /* 3dnow!+ instructions */
+            'pfnacc','pfpnacc','pi2fw','pf2iw','pswapd',
+            /* 3dnow! Geode instructions */
+            'pfrsqrtv','pfrcpv',
+            /* 3dnow! Prefetch instructions */
+            'prefetch','prefetchw',
+            /* SSE instructions */
+            'addss','addps','subss','subps',
+            'mulss','mulps','divss','divps','sqrtss','sqrtps',
+            'rcpss','rcpps','rsqrtss','rsqrtps',
+            'maxss','maxps','minss','minps',
+            'cmpss','comiss','ucomiss','cmpps',
+            'cmpeqss','cmpltss','cmpless','cmpunordss','cmpneqss','cmpnltss','cmpnless','cmpordss',
+            'cmpeqps','cmpltps','cmpleps','cmpunordps','cmpneqps','cmpnltps','cmpnleps','cmpordps',
+            'andnps','andps','orps','xorps',
+            'cvtsi2ss','cvtss2si','cvttss2si',
+            'cvtpi2ps','cvtps2pi','cvttps2pi',
+            'movss','movlps','movhps','movlhps','movhlps','movaps','movups','movntps','movmskps',
+            'shufps','unpckhps','unpcklps',
+            'ldmxcsr','stmxcsr',
+            /* SSE2 instructions */
+            'addpd','addsd','subpd','subsd',
+            'mulsd','mulpd','divsd','divpd','sqrtsd','sqrtpd',
+            'maxsd','maxpd','minsd','minpd',
+            'cmpsd','comisd','ucomisd','cmppd',
+            'cmpeqsd','cmpltsd','cmplesd','cmpunordsd','cmpneqsd','cmpnltsd','cmpnlesd','cmpordsd',
+            'cmpeqpd','cmpltpd','cmplepd','cmpunordpd','cmpneqpd','cmpnltpd','cmpnlepd','cmpordpd',
+            'andnpd','andpd','orpd','xorpd',
+            'cvtsd2ss','cvtpd2ps','cvtss2sd','cvtps2pd',
+            'cvtdq2ps','cvtps2dq','cvttps2dq',
+            'cvtdq2pd','cvtpd2dq','cvttpd2dq',
+            'cvtsi2sd','cvtsd2si','cvttsd2si',
+            'cvtpi2pd','cvtpd2pi','cvttpd2pi',
+            'movsd','movlpd','movhpd','movapd','movupd','movntpd','movmskpd',
+            'shufpd','unpckhpd','unpcklpd',
+            'movnti','movdqa','movdqu','movntdq','maskmovdqu',
+            'movdq2q','movq2dq',
+            'paddq','psubq','pmuludq',
+            'pslldq','psrldq',
+            'punpcklqdq','punpckhqdq',
+            'pshufhw','pshuflw','pshufd',
+            'lfence','mfence',
+            /* SSE3 instructions */
+            'addsubps','addsubpd',
+            'haddps','haddpd','hsubps','hsubpd',
+            'movsldup','movshdup','movddup',
+            'lddqu',
+            /* SSSE3 instructions */
+            'psignb','psignw','psignd',
+            'pabsb','pabsw','pabsd',
+            'palignr','pshufb',
+            'pmulhrsw','pmaddubsw',
+            'phaddw','phaddd','phaddsw',
+            'phsubw','phsubd','phsubsw',
+            /* SSE4A instructions */
+            'extrq','insertq','movntsd','movntss',
+            /* SSE4.1 instructions */
+            'mpsadbw','phminposuw',
+            'pmuldq','pmulld',
+            'dpps','dppd',
+            'blendps','blendpd','blendvps','blendvpd','pblendvb','pblendw',
+            'pmaxsb','pmaxuw','pmaxsd','pmaxud','pminsb','pminuw','pminsd','pminud',
+            'roundps','roundss','roundpd','roundsd',
+            'insertps','pinsrb','pinsrd','pinsrq',
+            'extractps','pextrb','pextrd','pextrq',
+            'pmovsxbw','pmovsxbd','pmovsxbq','pmovsxwd','pmovsxwq','pmovsxdq',
+            'pmovzxbw','pmovzxbd','pmovzxbq','pmovzxwd','pmovzxwq','pmovzxdq',
+            'ptest',
+            'pcmpeqq',
+            'packusdw',
+            'movntdqa',
+            /* SSE4.2 instructions */
+            'pcmpgtq',
+            'pcmpestri','pcmpestrm','pcmpistri','pcmpistrm',
+            /* AES instructions */
+            'aesenc','aesenclast','aesdec','aesdeclast','aeskeygenassist','aesimc',
+            /* VIA Padlock instructions */
+            'xcryptcbc','xcryptcfb','xcryptctr','xcryptecb','xcryptofb',
+            'xsha1','xsha256','montmul','xstore',
+            /* AVX instructions */
+            'vaddss','vaddps','vaddsd','vaddpd','vsubss','vsubps','vsubsd','vsubpd',
+            'vaddsubps','vaddsubpd',
+            'vhaddps','vhaddpd','vhsubps','vhsubpd',
+            'vmulss','vmulps','vmulsd','vmulpd',
+            'vmaxss','vmaxps','vmaxsd','vmaxpd','vminss','vminps','vminsd','vminpd',
+            'vandps','vandpd','vandnps','vandnpd','vorps','vorpd','vxorps','vxorpd',
+            'vblendps','vblendpd','vblendvps','vblendvpd',
+            'vcmpss','vcomiss','vucomiss','vcmpsd','vcomisd','vucomisd','vcmpps','vcmppd',
+            'vcmpeqss','vcmpltss','vcmpless','vcmpunordss','vcmpneqss','vcmpnltss','vcmpnless','vcmpordss',
+            'vcmpeq_uqss','vcmpngess','vcmpngtss','vcmpfalsess','vcmpneq_oqss','vcmpgess','vcmpgtss','vcmptruess',
+            'vcmpeq_osss','vcmplt_oqss','vcmple_oqss','vcmpunord_sss','vcmpneq_usss','vcmpnlt_uqss','vcmpnle_uqss','vcmpord_sss',
+            'vcmpeq_usss','vcmpnge_uqss','vcmpngt_uqss','vcmpfalse_osss','vcmpneq_osss','vcmpge_oqss','vcmpgt_oqss','vcmptrue_usss',
+            'vcmpeqps','vcmpltps','vcmpleps','vcmpunordps','vcmpneqps','vcmpnltps','vcmpnleps','vcmpordps',
+            'vcmpeq_uqps','vcmpngeps','vcmpngtps','vcmpfalseps','vcmpneq_oqps','vcmpgeps','vcmpgtps','vcmptrueps',
+            'vcmpeq_osps','vcmplt_oqps','vcmple_oqps','vcmpunord_sps','vcmpneq_usps','vcmpnlt_uqps','vcmpnle_uqps','vcmpord_sps',
+            'vcmpeq_usps','vcmpnge_uqps','vcmpngt_uqps','vcmpfalse_osps','vcmpneq_osps','vcmpge_oqps','vcmpgt_oqps','vcmptrue_usps',
+            'vcmpeqsd','vcmpltsd','vcmplesd','vcmpunordsd','vcmpneqsd','vcmpnltsd','vcmpnlesd','vcmpordsd',
+            'vcmpeq_uqsd','vcmpngesd','vcmpngtsd','vcmpfalsesd','vcmpneq_oqsd','vcmpgesd','vcmpgtsd','vcmptruesd',
+            'vcmpeq_ossd','vcmplt_oqsd','vcmple_oqsd','vcmpunord_ssd','vcmpneq_ussd','vcmpnlt_uqsd','vcmpnle_uqsd','vcmpord_ssd',
+            'vcmpeq_ussd','vcmpnge_uqsd','vcmpngt_uqsd','vcmpfalse_ossd','vcmpneq_ossd','vcmpge_oqsd','vcmpgt_oqsd','vcmptrue_ussd',
+            'vcmpeqpd','vcmpltpd','vcmplepd','vcmpunordpd','vcmpneqpd','vcmpnltpd','vcmpnlepd','vcmpordpd',
+            'vcmpeq_uqpd','vcmpngepd','vcmpngtpd','vcmpfalsepd','vcmpneq_oqpd','vcmpgepd','vcmpgtpd','vcmptruepd',
+            'vcmpeq_ospd','vcmplt_oqpd','vcmple_oqpd','vcmpunord_spd','vcmpneq_uspd','vcmpnlt_uqpd','vcmpnle_uqpd','vcmpord_spd',
+            'vcmpeq_uspd','vcmpnge_uqpd','vcmpngt_uqpd','vcmpfalse_ospd','vcmpneq_ospd','vcmpge_oqpd','vcmpgt_oqpd','vcmptrue_uspd',
+            'vcvtsd2ss','vcvtpd2ps','vcvtss2sd','vcvtps2pd',
+            'vcvtsi2ss','vcvtss2si','vcvttss2si',
+            'vcvtpi2ps','vcvtps2pi','vcvttps2pi',
+            'vcvtdq2ps','vcvtps2dq','vcvttps2dq',
+            'vcvtdq2pd','vcvtpd2dq','vcvttpd2dq',
+            'vcvtsi2sd','vcvtsd2si','vcvttsd2si',
+            'vcvtpi2pd','vcvtpd2pi','vcvttpd2pi',
+            'vdivss','vdivps','vdivsd','vdivpd','vsqrtss','vsqrtps','vsqrtsd','vsqrtpd',
+            'vdpps','vdppd',
+            'vmaskmovps','vmaskmovpd',
+            'vmovss','vmovsd','vmovaps','vmovapd','vmovups','vmovupd','vmovntps','vmovntpd',
+            'vmovhlps','vmovlhps','vmovlps','vmovlpd','vmovhps','vmovhpd',
+            'vmovsldup','vmovshdup','vmovddup',
+            'vmovmskps','vmovmskpd',
+            'vroundss','vroundps','vroundsd','vroundpd',
+            'vrcpss','vrcpps','vrsqrtss','vrsqrtps',
+            'vunpcklps','vunpckhps','vunpcklpd','vunpckhpd',
+            'vbroadcastss','vbroadcastsd','vbroadcastf128',
+            'vextractps','vinsertps','vextractf128','vinsertf128',
+            'vshufps','vshufpd','vpermilps','vpermilpd','vperm2f128',
+            'vtestps','vtestpd',
+            'vpaddb','vpaddusb','vpaddsb','vpaddw','vpaddusw','vpaddsw','vpaddd','vpaddq',
+            'vpsubb','vpsubusb','vpsubsb','vpsubw','vpsubusw','vpsubsw','vpsubd','vpsubq',
+            'vphaddw','vphaddsw','vphaddd','vphsubw','vphsubsw','vphsubd',
+            'vpsllw','vpslld','vpsllq','vpsrlw','vpsrld','vpsrlq','vpsraw','vpsrad',
+            'vpand','vpandn','vpor','vpxor',
+            'vpblendwb','vpblendw',
+            'vpsignb','vpsignw','vpsignd',
+            'vpavgb','vpavgw',
+            'vpabsb','vpabsw','vpabsd',
+            'vmovd','vmovq','vmovdqa','vmovdqu','vlddqu','vmovntdq','vmovntdqa','vmaskmovdqu',
+            'vpmovsxbw','vpmovsxbd','vpmovsxbq','vpmovsxwd','vpmovsxwq','vpmovsxdq',
+            'vpmovzxbw','vpmovzxbd','vpmovzxbq','vpmovzxwd','vpmovzxwq','vpmovzxdq',
+            'vpackuswb','vpacksswb','vpackusdw','vpackssdw',
+            'vpcmpeqb','vpcmpeqw','vpcmpeqd','vpcmpeqq','vpcmpgtb','vpcmpgtw','vpcmpgtd','vpcmpgtq',
+            'vpmaddubsw','vpmaddwd',
+            'vpmullw','vpmulhuw','vpmulhw','vpmulhrsw','vpmulld','vpmuludq','vpmuldq',
+            'vpmaxub','vpmaxsb','vpmaxuw','vpmaxsw','vpmaxud','vpmaxsd',
+            'vpminub','vpminsb','vpminuw','vpminsw','vpminud','vpminsd',
+            'vpmovmskb','vptest',
+            'vpunpcklbw','vpunpcklwd','vpunpckldq','vpunpcklqdq',
+            'vpunpckhbw','vpunpckhwd','vpunpckhdq','vpunpckhqdq',
+            'vpslldq','vpsrldq','vpalignr',
+            'vpshufb','vpshuflw','vpshufhw','vpshufd',
+            'vpextrb','vpextrw','vpextrd','vpextrq','vpinsrb','vpinsrw','vpinsrd','vpinsrq',
+            'vpsadbw','vmpsadbw','vphminposuw',
+            'vpcmpestri','vpcmpestrm','vpcmpistri','vpcmpistrm',
+            'vpclmulqdq','vaesenc','vaesenclast','vaesdec','vaesdeclast','vaeskeygenassist','vaesimc',
+            'vldmxcsr','vstmxcsr','vzeroall','vzeroupper',
+            /* AVX2 instructions */
+            'vbroadcasti128','vpbroadcastb','vpbroadcastw','vpbroadcastd','vpbroadcastq',
+            'vpblendd',
+            'vpermd','vpermq','vperm2i128',
+            'vextracti128','vinserti128',
+            'vpmaskmovd','vpmaskmovq',
+            'vpsllvd','vpsllvq','vpsravd','vpsrlvd',
+            'vpgatherdd','vpgatherqd','vgatherdq','vgatherqq',
+            'vpermps','vpermpd',
+            'vgatherdpd','vgatherqpd','vgatherdps','vgatherqps',
+            /* XOP instructions */
+            'vfrczss','vfrczps','vfrczsd','vfrczpd',
+            'vpermil2ps','vperlil2pd',
+            'vpcomub','vpcomb','vpcomuw','vpcomw','vpcomud','vpcomd','vpcomuq','vpcomq',
+            'vphaddubw','vphaddbw','vphaddubd','vphaddbd','vphaddubq','vphaddbq',
+            'vphadduwd','vphaddwd','vphadduwq','vphaddwq','vphaddudq','vphadddq',
+            'vphsubbw','vphsubwd','vphsubdq',
+            'vpmacsdd','vpmacssdd','vpmacsdql','vpmacssdql','vpmacsdqh','vpmacssdqh',
+            'vpmacsww','vpmacssww','vpmacswd','vpmacsswd',
+            'vpmadcswd','vpmadcsswd',
+            'vpcmov','vpperm',
+            'vprotb','vprotw','vprotd','vprotq',
+            'vpshab','vpshaw','vpshad','vpshaq',
+            'vpshlb','vpshlw','vpshld','vpshlq',
+            /* CVT16 instructions */
+            'vcvtph2ps','vcvtps2ph',
+            /* FMA4 instructions */
+            'vfmaddss','vfmaddps','vfmaddsd','vfmaddpd',
+            'vfmsubss','vfmsubps','vfmsubsd','vfmsubpd',
+            'vnfmaddss','vnfmaddps','vnfmaddsd','vnfmaddpd',
+            'vnfmsubss','vnfmsubps','vnfmsubsd','vnfmsubpd',
+            'vfmaddsubps','vfmaddsubpd','vfmsubaddps','vfmsubaddpd',
+            /* FMA3 instructions */
+            'vfmadd132ss','vfmadd213ss','vfmadd231ss',
+            'vfmadd132ps','vfmadd213ps','vfmadd231ps',
+            'vfmadd132sd','vfmadd213sd','vfmadd231sd',
+            'vfmadd132pd','vfmadd213pd','vfmadd231pd',
+            'vfmaddsub132ps','vfmaddsub213ps','vfmaddsub231ps',
+            'vfmaddsub132pd','vfmaddsub213pd','vfmaddsub231pd',
+            'vfmsubadd132ps','vfmsubadd213ps','vfmsubadd231ps',
+            'vfmsubadd132pd','vfmsubadd213pd','vfmsubadd231pd',
+            'vfmsub132ss','vfmsub213ss','vfmsub231ss',
+            'vfmsub132ps','vfmsub213ps','vfmsub231ps',
+            'vfmsub132sd','vfmsub213sd','vfmsub231sd',
+            'vfmsub132pd','vfmsub213pd','vfmsub231pd',
+            'vfnmadd132ss','vfnmadd213ss','vfnmadd231ss',
+            'vfnmadd132ps','vfnmadd213ps','vfnmadd231ps',
+            'vfnmadd132sd','vfnmadd213sd','vfnmadd231sd',
+            'vfnmadd132pd','vfnmadd213pd','vfnmadd231pd',
+            'vfnmsub132ss','vfnmsub213ss','vfnmsub231ss',
+            'vfnmsub132ps','vfnmsub213ps','vfnmsub231ps',
+            'vfnmsub132sd','vfnmsub213sd','vfnmsub231sd',
+            'vfnmsub132pd','vfnmsub213pd','vfnmsub231pd'
+            ),
+        /*registers*/
+        4 => array(
+            /* General-Purpose Registers */
+            'al','ah','bl','bh','cl','ch','dl','dh','sil','dil','bpl','spl',
+            'r8b','r9b','r10b','r11b','r12b','r13b','r14b','r15b',
+            'ax','bx','cx','dx','si','di','bp','sp',
+            'r8w','r9w','r10w','r11w','r12w','r13w','r14w','r15w',
+            'eax','ebx','ecx','edx','esi','edi','ebp','esp',
+            'r8d','r9d','r10d','r11d','r12d','r13d','r14d','r15d',
+            'rax','rcx','rdx','rbx','rsp','rbp','rsi','rdi',
+            'r8','r9','r10','r11','r12','r13','r14','r15',
+            /* Debug Registers */
+            'dr0','dr1','dr2','dr3','dr6','dr7',
+            /* Control Registers */
+            'cr0','cr2','cr3','cr4','cr8',
+            /* Test Registers (Supported on Intel 486 only) */
+            'tr3','tr4','tr5','tr6','tr7',
+            /* Segment Registers */
+            'cs','ds','es','fs','gs','ss',
+            /* FPU Registers */
+            'st','st0','st1','st2','st3','st4','st5','st6','st7',
+            /* MMX Registers */
+            'mm0','mm1','mm2','mm3','mm4','mm5','mm6','mm7',
+            /* SSE Registers */
+            'xmm0','xmm1','xmm2','xmm3','xmm4','xmm5','xmm6','xmm7',
+            'xmm8','xmm9','xmm10','xmm11','xmm12','xmm13','xmm14','xmm15',
+            /* AVX Registers */
+            'ymm0','ymm1','ymm2','ymm3','ymm4','ymm5','ymm6','ymm7',
+            'ymm8','ymm9','ymm10','ymm11','ymm12','ymm13','ymm14','ymm15'
+            ),
+        /*Directive*/
+        5 => array(
+            'db','dw','dd','dq','dt','do','dy',
+            'resb','resw','resd','resq','rest','reso','resy','incbin','equ','times','safeseh',
+            '__utf16__','__utf32__',
+            'default','cpu','float','start','imagebase','osabi',
+            '..start','..imagebase','..gotpc','..gotoff','..gottpoff','..got','..plt','..sym','..tlsie',
+            'section','segment','__sect__','group','absolute',
+            '.bss','.comment','.data','.lbss','.ldata','.lrodata','.rdata','.rodata','.tbss','.tdata','.text',
+            'alloc','bss','code','exec','data','noalloc','nobits','noexec','nowrite','progbits','rdata','tls','write',
+            'private','public','common','stack','overlay','class',
+            'extern','global','import','export',
+            '%define','%idefine','%xdefine','%ixdefine','%assign','%undef',
+            '%defstr','%idefstr','%deftok','%ideftok',
+            '%strcat','%strlen','%substr',
+            '%macro','%imacro','%rmacro','%exitmacro','%endmacro','%unmacro',
+            '%if','%ifn','%elif','%elifn','%else','%endif',
+            '%ifdef','%ifndef','%elifdef','%elifndef',
+            '%ifmacro','%ifnmacro','%elifmacro','%elifnmacro',
+            '%ifctx','%ifnctx','%elifctx','%elifnctx',
+            '%ifidn','%ifnidn','%elifidn','%elifnidn',
+            '%ifidni','%ifnidni','%elifidni','%elifnidni',
+            '%ifid','%ifnid','%elifid','%elifnid',
+            '%ifnum','%ifnnum','%elifnum','%elifnnum',
+            '%ifstr','%ifnstr','%elifstr','%elifnstr',
+            '%iftoken','%ifntoken','%eliftoken','%elifntoken',
+            '%ifempty','%ifnempty','%elifempty','%elifnempty',
+            '%ifenv','%ifnenv','%elifenv','%elifnenv',
+            '%rep','%exitrep','%endrep',
+            '%while','%exitwhile','%endwhile',
+            '%include','%pathsearch','%depend','%use',
+            '%push','%pop','%repl','%arg','%local','%stacksize','flat','flat64','large','small',
+            '%error','%warning','%fatal',
+            '%00','.nolist','%rotate','%line','%!','%final','%clear',
+            'struc','endstruc','istruc','at','iend',
+            'align','alignb','sectalign',
+            'bits','use16','use32','use64',
+            '__nasm_major__','__nasm_minor__','__nasm_subminor__','___nasm_patchlevel__',
+            '__nasm_version_id__','__nasm_ver__',
+            '__file__','__line__','__pass__','__bits__','__output_format__',
+            '__date__','__time__','__date_num__','__time_num__','__posix_time__',
+            '__utc_date__','__utc_time__','__utc_date_num__','__utc_time_num__',
+            '__float_daz__','__float_round__','__float__',
+            /* Keywords from standard packages */
+            '__use_altreg__',
+            '__use_smartalign__','smartalign','__alignmode__',
+            '__use_fp__','__infinity__','__nan__','__qnan__','__snan__',
+            '__float8__','__float16__','__float32__','__float64__','__float80m__','__float80e__','__float128l__','__float128h__'
+            ),
+        /*Operands*/
+        6 => array(
+            'a16','a32','a64','o16','o32','o64','strict',
+            'byte','word','dword','qword','tword','oword','yword','nosplit',
+            '%0','%1','%2','%3','%4','%5','%6','%7','%8','%9',
+            'abs','rel',
+            'seg','wrt'
+            )
+        ),
+    'SYMBOLS' => array(
+        1 => array(
+                '[', ']', '(', ')',
+                '+', '-', '*', '/', '%',
+                '.', ',', ';', ':'
+            ),
+        2 => array(
+                '$','$$','%+','%?','%??'
+            )
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => false,
+        2 => false,
+        3 => false,
+        4 => false,
+        5 => false,
+        6 => false
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #00007f; font-weight: bold;',
+            2 => 'color: #0000ff;',
+            3 => 'color: #b00040;',
+            4 => 'color: #46aa03; font-weight: bold;',
+            5 => 'color: #0000ff; font-weight: bold;',
+            6 => 'color: #0000ff; font-weight: bold;'
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #666666; font-style: italic;',
+            2 => 'color: #adadad; font-style: italic;'
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #000099; font-weight: bold;'
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #009900; font-weight: bold;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #7f007f;'
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #ff0000;'
+            ),
+        'METHODS' => array(
+            ),
+        'SYMBOLS' => array(
+            1 => 'color: #339933;',
+            2 => 'color: #0000ff; font-weight: bold;'
+            ),
+        'REGEXPS' => array(
+            ),
+        'SCRIPT' => array(
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => '',
+        3 => '',
+        4 => '',
+        5 => '',
+        6 => ''
+        ),
+    'NUMBERS' =>
+        GESHI_NUMBER_BIN_PREFIX_PERCENT |
+        GESHI_NUMBER_BIN_SUFFIX |
+        GESHI_NUMBER_HEX_PREFIX |
+        GESHI_NUMBER_HEX_SUFFIX |
+        GESHI_NUMBER_OCT_SUFFIX |
+        GESHI_NUMBER_INT_BASIC |
+        GESHI_NUMBER_FLT_NONSCI |
+        GESHI_NUMBER_FLT_NONSCI_F |
+        GESHI_NUMBER_FLT_SCI_ZERO,
+    'OOLANG' => false,
+    'OBJECT_SPLITTERS' => array(
+        ),
+    'REGEXPS' => array(
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        ),
+    'TAB_WIDTH' => 8,
+    'PARSER_CONTROL' => array(
+        'KEYWORDS' => array(
+            'DISALLOWED_BEFORE' => "(?<![a-zA-Z0-9\$_\|\#>|^])",
+            'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_<\|%])"
+        )
+    )
+);
+
+?>

+ 0 - 0
lib/geshi/geshi/asp.php


Some files were not shown because too many files changed in this diff