plugins/geshi/geshi/dos.php
changeset 2 9e3258dfae15
parent 0 441963e5b07a
child 3 f3e2bbbd2155
--- a/plugins/geshi/geshi/dos.php	Sun Feb 10 19:00:04 2008 -0500
+++ b/plugins/geshi/geshi/dos.php	Fri May 29 19:30:59 2009 -0400
@@ -4,20 +4,21 @@
  * -------
  * Author: Alessandro Staltari (staltari@geocities.com)
  * Copyright: (c) 2005 Alessandro Staltari (http://www.geocities.com/SiliconValley/Vista/8155/)
- * Release Version: 1.0.7.20
+ * Release Version: 1.0.8.2
  * Date Started: 2005/07/05
  *
  * DOS language file for GeSHi.
  *
  * CHANGES
  * -------
+ * 2008/05/23 (1.0.7.22)
+ *   -  Added description of extra language features (SF#1970248)
  * 2005/07/05 (1.0.0)
  *  -  First Release
  *
  * TODO (updated 2005/07/05)
  * -------------------------
  *
- * - Find a way to higlight %*
  * - Highlight pipes and redirection (do we really need this?)
  * - Add missing keywords.
  * - Find a good hyperlink for keywords.
@@ -59,125 +60,139 @@
  ************************************************************************************/
 
 $language_data = array (
-	'LANG_NAME' => 'DOS',
-	'COMMENT_SINGLE' => array(1 =>'REM', 2 => '@REM'),
-	'COMMENT_MULTI' => array(),
-	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
-	'QUOTEMARKS' => array(),
-	'ESCAPE_CHAR' => '',
-	'KEYWORDS' => array(
-	    /* Flow control keywords */
-		1 => array(
-			'if', 'else', 'goto',
-			'for', 'in', 'do',
-			'call', 'exit'
-			),
-	    /* IF statement keywords */
-		2 => array(
-			'not', 'exist', 'errorlevel',
-			'defined',
-			'equ', 'neq', 'lss', 'leq', 'gtr', 'geq'
-			),
-	    /* Internal commands */
-		3 => array(
-			'shift',
-			'cd', 'dir', 'echo',
-			'setlocal', 'endlocal', 'set',
-			'pause'
-			),
-	    /* Special files */
-
-		4 => array(
-			'prn', 'nul', 'lpt3', 'lpt2', 'lpt1', 'con',
-			'com4', 'com3', 'com2', 'com1', 'aux'
-			)
-		),
-	'SYMBOLS' => array(
-		'(', ')'
-		),
-	'CASE_SENSITIVE' => array(
-		GESHI_COMMENTS => false,
-		1 => false
-		),
-	'STYLES' => array(
-		'KEYWORDS' => array(
-			1 => 'color: #00b100; font-weight: bold;',
-			2 => 'color: #000000; font-weight: bold;',
-			3 => 'color: #b1b100; font-weight: bold;',
-			4 => 'color: #0000ff; font-weight: bold;'
-			),
-		'COMMENTS' => array(
-			1 => 'color: #808080; font-style: italic;',
-			2 => 'color: #808080; font-style: italic;'
-			),
-		'ESCAPE_CHAR' => array(
-			),
-		'BRACKETS' => array(
-			0 => 'color: #66cc66;'
-			),
-		'STRINGS' => array(
-			0 => 'color: #ff0000;'
-			),
-		'NUMBERS' => array(
-/*			0 => 'color: #cc66cc;' */
-			),
-		'METHODS' => array(
-			),
-		'SYMBOLS' => array(
-			0 => 'color: #33cc33;',
-			1 => 'color: #33cc33;'
-			),
-		'SCRIPT' => array(
-			),
-		'REGEXPS' => array(
-			0 => 'color: #b100b1; font-weight: bold;',
-			1 => 'color: #448844;',
-			2 => 'color: #448888;'
-			)
-		),
-	'OOLANG' => false,
-	'OBJECT_SPLITTERS' => array(
-		),
+    'LANG_NAME' => 'DOS',
+    'COMMENT_SINGLE' => array(),
+    'COMMENT_MULTI' => array(),
+    //DOS comment lines
+    'COMMENT_REGEXP' => array(1 => "/^\s*@?REM.*$/mi"),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array(),
+    'ESCAPE_CHAR' => '',
+    'KEYWORDS' => array(
+        /* Flow control keywords */
+        1 => array(
+            'if', 'else', 'goto', 'shift',
+            'for', 'in', 'do',
+            'call', 'exit'
+            ),
+        /* IF statement keywords */
+        2 => array(
+            'not', 'exist', 'errorlevel',
+            'defined',
+            'equ', 'neq', 'lss', 'leq', 'gtr', 'geq'
+            ),
+        /* Internal commands */
+        3 => array(
+            'cd', 'md', 'rd', 'chdir', 'mkdir', 'rmdir', 'dir',
+            'del', 'copy', 'move', 'ren', 'rename',
+            'echo',
+            'setlocal', 'endlocal', 'set',
+            'pause',
+            'pushd', 'popd', 'title', 'verify'
+            ),
+        /* Special files */
+        4 => array(
+            'prn', 'nul', 'lpt3', 'lpt2', 'lpt1', 'con',
+            'com4', 'com3', 'com2', 'com1', 'aux'
+            )
+        ),
+    'SYMBOLS' => array(
+        '(', ')', '@', '%'
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => false,
+        2 => false,
+        3 => false,
+        4 => false
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #00b100; font-weight: bold;',
+            2 => 'color: #000000; font-weight: bold;',
+            3 => 'color: #b1b100; font-weight: bold;',
+            4 => 'color: #0000ff; font-weight: bold;'
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #808080; font-style: italic;'
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #ff0000; font-weight: bold;'
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #66cc66;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #ff0000;'
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #cc66cc;'
+            ),
+        'METHODS' => array(
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #33cc33;',
+            1 => 'color: #33cc33;'
+            ),
+        'SCRIPT' => array(
+            ),
+        'REGEXPS' => array(
+            0 => 'color: #b100b1; font-weight: bold;',
+            1 => 'color: #448844;',
+            2 => 'color: #448888;'
+            )
+        ),
+    'OOLANG' => false,
+    'OBJECT_SPLITTERS' => array(
+        ),
     'URLS' => array(
-         1 => 'http://www.ss64.com/nt/{FNAME}.html',
-         2 => 'http://www.ss64.com/nt/{FNAME}.html',
-         3 => 'http://www.ss64.com/nt/{FNAME}.html',
-         4 => 'http://www.ss64.com/nt/{FNAME}.html'
-         ),
-	'REGEXPS' => array(
-	/* Label */
-	    0 => array(
-/*		GESHI_SEARCH => '((?si:[@\s]+GOTO\s+|\s+:)[\s]*)((?<!\n)[^\s\n]*)',*/
-		GESHI_SEARCH => '((?si:[@\s]+GOTO\s+|\s+:)[\s]*)((?<!\n)[^\n]*)',
-		GESHI_REPLACE => '\\2',
-		GESHI_MODIFIERS => 'si',
-		GESHI_BEFORE => '\\1',
-		GESHI_AFTER => ''
-		),
-	/* Variable assignement */
-	    1 => array(
-/*		GESHI_SEARCH => '(SET[\s]+(?si:/A[\s]+|/P[\s]+|))([^=\s\n]+)([\s]*=)',*/
-		GESHI_SEARCH => '(SET[\s]+(?si:/A[\s]+|/P[\s]+|))([^=\n]+)([\s]*=)',
-		GESHI_REPLACE => '\\2',
-		GESHI_MODIFIERS => 'si',
-		GESHI_BEFORE => '\\1',
-		GESHI_AFTER => '\\3'
-		),
-	/* Arguments or variable evaluation */
-	    2 => array(
-/*		GESHI_SEARCH => '(%)([\d*]|[^%\s]*(?=%))((?<!%\d)%|)',*/
-		GESHI_SEARCH => '(%)([\d*]|[^%]*(?=%))((?<!%\d)%|)',
-		GESHI_REPLACE => '\\2',
-		GESHI_MODIFIERS => 'si',
-		GESHI_BEFORE => '\\1',
-		GESHI_AFTER => '\\3'
-		)
-		),
-	'STRICT_MODE_APPLIES' => GESHI_NEVER,
-	'SCRIPT_DELIMITERS' => array(
-		),
-	'HIGHLIGHT_STRICT_BLOCK' => array(
-		)
+        1 => 'http://www.ss64.com/nt/{FNAMEL}.html',
+        2 => 'http://www.ss64.com/nt/{FNAMEL}.html',
+        3 => 'http://www.ss64.com/nt/{FNAMEL}.html',
+        4 => 'http://www.ss64.com/nt/{FNAMEL}.html'
+        ),
+    'REGEXPS' => array(
+        /* Label */
+        0 => array(
+/*            GESHI_SEARCH => '((?si:[@\s]+GOTO\s+|\s+:)[\s]*)((?<!\n)[^\s\n]*)',*/
+            GESHI_SEARCH => '((?si:[@\s]+GOTO\s+|\s+:)[\s]*)((?<!\n)[^\n]*)',
+            GESHI_REPLACE => '\\2',
+            GESHI_MODIFIERS => 'si',
+            GESHI_BEFORE => '\\1',
+            GESHI_AFTER => ''
+        ),
+        /* Variable assignement */
+        1 => array(
+/*            GESHI_SEARCH => '(SET[\s]+(?si:\/A[\s]+|\/P[\s]+|))([^=\s\n]+)([\s]*=)',*/
+            GESHI_SEARCH => '(SET[\s]+(?si:\/A[\s]+|\/P[\s]+|))([^=\n]+)([\s]*=)',
+            GESHI_REPLACE => '\\2',
+            GESHI_MODIFIERS => 'si',
+            GESHI_BEFORE => '\\1',
+            GESHI_AFTER => '\\3'
+            ),
+        /* Arguments or variable evaluation */
+        2 => array(
+/*            GESHI_SEARCH => '(%)([\d*]|[^%\s]*(?=%))((?<!%\d)%|)',*/
+            GESHI_SEARCH => '(%(?:%(?=[a-z0-9]))?)([\d*]|(?:~[adfnpstxz]*(?:$\w+:)?)?[a-z0-9](?!\w)|[^%\n]*(?=%))((?<!%\d)%|)',
+            GESHI_REPLACE => '\\2',
+            GESHI_MODIFIERS => 'si',
+            GESHI_BEFORE => '\\1',
+            GESHI_AFTER => '\\3'
+            )
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        ),
+    'TAB_WIDTH' => 4,
+    'PARSER_CONTROL' => array(
+        'KEYWORDS' => array(
+            4 => array(
+                'DISALLOWED_BEFORE' => '(?<!\w)'
+                )
+            )
+        )
 );
 
 ?>