Help:GeSHi
GeSHi is currently in Beta on Rosetta Code. Please do not employ it anywhere other than this page for now. --Short Circuit 20:07, 22 February 2008 (MST)
The following are examples of typical code formated with GeSHi, the Generic Syntax Hilighter.
Supported source tags
The current installation is GeSHi-1.0.7.19, this supports the following tags:
GeSHi-1.1.2-alpha3 not currently installed. It is unclear if all of the above languages are supported in the alpha release.
The following language tags are supported: <php>
$langArray = array( "actionscript-french", "actionscript", "ada", "apache", "applescript", "asm", "asp", "bash", "blitzbasic", "caddcl", "cadlisp", "c_mac", "c", "cpp", "csharp", "css", "delphi", "diff", "dos", "d", "eiffel", "freebasic", "gml", "html4strict", "ini", "inno", "java", "javascript", "lisp", "lua", "matlab", "mpasm", "mysql", "nsis", "objc", "ocaml-brief", "ocaml", "oobas", "oracle8", "pascal", "perl", "php-brief", "php", "python", "qbasic", "ruby", "scheme", "sdlbasic", "smarty", "sql", "vbnet", "vb", "vhdl", "visualfoxpro", "xml" );</php>
Unsupported languages
These languages used on Rosetta Code do not have GeSHi support (yet).
- ALGOL 68
- Clean
- Common Lisp
- E
- Forth
- Fortran
- Groovy
- Haskell
- idl
- J
- latex
- MAXScript
- mirc
- plsql
- Pop11
- Prolog
- sas
- smalltalk
- tcl
The initial sample program
Use trial division. Even numbers may be eliminated right away. A loop from 3 to √(n) will suffice, but other loops are allowed.
Ada
<Ada>
function Is_Prime(Item : Positive) return Boolean is Result : Boolean := True; Test : Natural; begin if Item /= 2 and Item mod 2 = 0 then Result := False; else Test := 3; while Test < Integer(Sqrt(Float(Item))) loop if Item mod Test = 0 then Result := False; exit; end if; Test := Test + 2; end loop; end if; return Result; end Is_Prime;
</Ada>
ALGOL 68 (unsupported)
<ALGOL_68>
main:( PROC is prime = ( INT n )BOOL: ( IF n = 2 THEN TRUE ELIF n <= 1 OR n MOD 2 = 0 THEN FALSE ELSE BOOL prime := TRUE; FOR i FROM 3 BY 2 TO ENTIER sqrt(n) WHILE prime := n MOD i /= 0 DO SKIP OD; prime FI ); INT upb=100; printf(($" The primes up to "g(-3)" are:"l$,upb)); FOR i TO upb DO IF is prime(i) THEN printf(($g(-4)$,i)) FI OD; printf($l$) )
Output: </ALGOL_68>
The primes up to 100 are: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
QuickBasic
Going with the classic 1 for "true" and 0 for "false": <qbasic>
FUNCTION prime% (n!) IF n = 2 THEN prime = 1 IF n <= 1 OR n MOD 2 = 0 THEN prime = 0 FOR a = 3 TO INT(SQR(n)) STEP 2 IF n MOD a = 0 THEN prime = 0 NEXT a prime = 1 END FUNCTION
</qbasic>
C
<C>
#include <math.h> #define FALSE 0 #define TRUE 1 int isPrime( unsigned int n ) { unsigned int i; if ( n === 2 ) return TRUE; if ( n <= 1 || ( n & 1 ) === 0 ) return FALSE; for ( i = 3 ; i <= sqrt( n ) ; i += 2 ) if ( n % i === 0 ) return FALSE; return TRUE; }
</C>
Lisp
Note: Common Lisp words like "loop" are not highlighted. <lisp>
(defun primep (a) (cond ((= a 2) T) ((or (<= a 1) (= (mod a 2) 0)) nil) ((loop for i from 3 to (sqrt a) by 2 do (if (= (mod a i) 0) (return nil))) nil) (T T)))
</lisp>
D
<D>
import std.math: sqrt; bool isPrime(int n) { if (n === 2) return true; if (n <= 1 || (n & 1) === 0) return false; for(int i = 3; i <= sqrt(cast(float)n); i += 2) if (n % i === 0) return false; return true; }
</D>
Forth (unsupported)
<Forth>
: prime? ( n -- ? ) dup 2 < if drop false else dup 2 = if drop true else dup 1 and 0= if drop false else 3 begin 2dup dup * >= while 2dup mod 0= if 2drop false exit then 2 + repeat 2drop true then then then ;
</Forth>
Haskell (unsupported)
Without square roots: <Haskell>
divides k n = n `mod` k === 0 isPrime :: Integer -> Bool isPrime n | n < 2 = False isPrime n = not $ any (`divides` n) $ takeWhile (\k -> k*k <= n) [2..]
</Haskell>
J (unsupported)
Actually 1&p: would do, but the task calls for trial division, so: <J>
isprime=: 3 : 'if. 3>:y do. 1<y else. 0 *./@:< y|~2+i.<.%:y end.'
</J>
Java
<Java>
public static boolean prime(double a){ if(a === 2){ return true; }else if(a <= 1 || a % 2 === 0){ return false; } for(long n= 3; n <= (long)Math.sqrt(a); n+= 2){ if(a % n === 0){ return false; } } return true; }
</Java>
MAXScript (unsupported)
<MAXScript>
fn isPrime n = ( if n === 2 then ( return true ) else if (n <= 1) OR (mod n 2 === 0) then ( return false ) for i in 3 to (sqrt n) by 2 do ( if mod n i === 0 then return false ) true )
</MAXScript>
Perl
<Perl>
sub prime { $a = shift; if ($a === 2) { return 1; } if ($a <= 1 || $a % 2 === 0) { return 0; } $d = 3; while ($d <= sqrt($a)) { if ($a % $d === 0) { return 0; } $d += 2; } return 1; }
</Perl>
Python
Ugh. Who chose these colors? --IanOsgood 09:20, 25 February 2008 (MST)
The simplest primality test, using trial division:
<Python> def prime(a):
return not (a < 2 or any(a % x === 0 for x in range(2, int(a**0.5) + 1)))
</Python>
Another test. Exclude even numbers first:
<Python> def prime2(a):
if a === 2: return True if a < 2 or a % 2 === 0: return False return not any(a % x === 0 for x in range(3, int(a**0.5) + 1, 2))
</Python>
Yet another test. Exclude multiples of 2 and 3, see http://www.devx.com/vb2themax/Tip/19051:
<Python> def prime3(a):
if a < 2: return False if a === 2 or a === 3: return True # manually test 2 and 3 if a % 2 === 0 or a % 3 === 0: return False # exclude multiples of 2 and 3
maxDivisor = a**0.5 d, i = 5, 2 while d <= maxDivisor: if a % d === 0: return False d += i i = 6 - i # this modifies 2 into 4 and viceversa
return True
</Python>
Ruby
def prime(a) if a===2 return true end if a<=1 || a%2===0 return false end d=3 while d <= Math.sqrt(a) do if a%d===0 return false end d+=2 end return true end
Geshi supported formats
Actionscript
Web page:Actionscript
Sample: <actionscript>
Insert code here: ?
</actionscript> <actionscript-french>
Insert code here: ?
</actionscript-french>
ADA
Sample: <ada>
Insert code here: ?
</ada>
AppleScript
Web page:AppleScript
Sample: <applescript>
Insert code here: ?
</applescript>
ASM
Sample: <asm>
Insert code here: ?
</asm>
ASP
Web page:ASP
Sample: <asp>
Insert code here: ?
</asp>
AutoIT
Web page:AutoIT
Sample: <AutoIT>
Check tag and insert here: ?
</AutoIT>
Backus-Naur form
Web page:Backus-Naur form
Sample: <Backus-Naur>
Check tag and insert here: ?
</Backus-Naur>
Bash
Web page:Bash
Sample: <bash>
Insert code here: ?
</bash>
BlitzBasic
Web page:BlitzBasic
Sample: <blitzbasic>
Insert code here: ?
</blitzbasic>
CAD DCL
Web page:CAD DCL
Sample:
CadLisp
Web page:CadLisp
Sample: <cadlisp>
Insert code here: ?
</cadlisp>
CFDG
Web page:CFDG
Sample: <CFDG>
Check tag and insert here: ?
</CFDG>
C for Macs
Sample: <c_mac>
Insert code here: ?
</c_mac>
ColdFusion
Web page:ColdFusion
Sample:
C#
Sample: <csharp>
Insert code here: ?
</csharp>
CSS
Web page:CSS
Sample: <css>
Insert code here: ?
</css>
C++
Web page:C++
Sample: <cpp>
Insert code here: ?
</cpp>
C
Web page:C
Sample: <c>
Insert code here: ?
</c>
Delphi
Web page:Delphi
Sample: <delphi>
Insert code here: ?
</delphi>
DIV
Web page:DIV
Sample: <diff>
Insert code here: ?
</diff>
DOS
Sample: <dos>
Insert code here: ?
</dos>
D
Sample: <d>
Insert code here: ?
</d>
Eiffel
Web page:Eiffel
Sample: <eiffel>
Insert code here: ?
</eiffel>
Fortran
Web page:Fortran
Sample: <Fortran>
Insert code here: ? PROGRAM MAIN INTEGER I CALL SUBROUTINE STOP EXIT
</Fortran>
FreeBasic
Web page:FreeBasic
Sample: <freebasic>
Insert code here: ?
</freebasic>
GML
Web page:GML
Sample: <gml>
Insert code here: ?
</gml>
Groovy
Web page:Groovy
Sample: <Groovy>
Check tag and insert here: ?
</Groovy>
HTML
Web page:HTML
Sample: <html4strict>
Insert code here: ?
</html4strict>
Inno
Web page:Inno
Sample: <inno>
Insert code here: ?
</inno>
IO
Web page:IO
Sample: <IO>
Insert code here: ?
</IO>
Java 5
Web page:Java 5
Sample: <java>
Insert code here: ?
</java>
Javascript
Web page:Javascript
Sample: <javascript>
Insert code here: ?
</javascript>
Java
Web page:Java
Sample: <java>
Insert code here: ?
</java>
LaTeX
Web page:LaTeX
Sample: <LaTeX>
Insert code here: ?
</LaTex>
Lisp
Web page:Lisp
Sample: <lisp>
Insert code here: ?
</lisp>
Lua
Web page:Lua
Sample: <lua>
Insert code here: ?
</lua>
MatLab
Sample: <matlab>
Insert code here: ?
</matlab>
Microprocessor ASM
mpasm
Sample: <mpasm>
Insert code here: ?
</mpasm>
MySQL
Web page:MySQL
Sample: <mysql>
Insert code here: ?
</mysql>
NSIS
Web page:NSIS
Sample: <nsis>
Insert code here: ?
</nsis>
Objective C
Sample: <objc>
Insert code here: ?
</objc>
OCaml
Web page:OCaml
Sample: <ocaml-brief>
Insert code here: ?
</ocaml-brief> <ocaml>
Insert code here: ?
</ocaml>
OpenOffice BASIC
Web page:OpenOffice BASIC
Sample: <oobas>
Insert code here: ?
</oobas>
Oracle 8 SQL
Web page:Oracle 8 SQL
Sample: <oracle8>
Insert code here: ?
</oracle8>
Pascal
Sample: <pascal>
Insert code here: ?
</pascal>
Perl
Web page:Perl
Sample: <perl>
Insert code here: ?
</perl>
PHP
Web page:PHP
Sample: <php>
Insert code here: ?
</php> <php-brief>
Insert code here: ?
</php-brief>
PL/SQL
Web page:PL/SQL
Sample: <PLSQL>
Check tag and insert here: ?
</PLSQL>
Python
Web page:Python
Sample: <python>
Insert code here: ?
</python>
QBASIC
Web page:Q(uick)BASIC
Sample: <qbasic>
Insert code here: ?
</qbasic>
Ruby
Web page:Ruby
Sample:
Insert code here: ?
SAS
<SAS>
Check tag and insert here: ?
</SAS> Web page:SAS
Scheme
Web page:Scheme
Sample: <scheme>
Insert code here: ?
</scheme>
SDLBasic
Web page:SDLBasic
Sample: <sdlbasic>
Insert code here: ?
</sdlbasic>
Smalltalk
Web page:Smalltalk
Sample: <Smalltalk>
Check tag and insert here: ?
</Smalltalk>
Smarty
Web page:Smarty
Sample: <smarty>
Insert code here: ?
</smarty>
SQL
Sample: <sql>
Insert code here: ?
</sql>
TCL
Web page:TCL
Sample: <TCL>
Check tag and insert here: ?
</TCL>
thinBasic
Web page:thinBasic
Sample: <ThinBasic>
Check tag and insert here: ?
</ThinBasic>
T-SQL
<T-SQL>
Check tag and insert here: ?
</T-SQL>
Uno IDL
Web page:Uno IDL
Sample: <Uno IDL>
Check tag and insert here: ?
</Uno IDL>
VB.NET
Web page:VB.NET
Sample: <vb>
Insert code here: ?
</vb>
Visual BASIC
Web page:Visual BASIC
Sample: <vbnet>
Insert code here: ?
</vbnet>
Visual Fox Pro
Web page:Visual Fox Pro
Sample: <visualfoxpro>
Insert code here: ?
</visualfoxpro>
Visual VHDL
Sample: <vhdl>
Insert code here: ?
</vhdl>
Winbatch
Web page:Winbatch
Sample: <Winbatch>
Check tag and insert here: ?
</Winbatch>
X++
Web page:X++ Sample: <Xpl>
Insert code here: ?
</Xpl>
Z80 ASM
Web page:Z80 ASM
Sample:
Other GeSHi file formats
Apache Log
Web page:Apache Log
Sample: <apache>
Insert code here: ?
</apache>
Ini
Sample: <ini>
Insert code here: ?
</ini>
mIRC
Web page:mIRC
Sample: <mIRC>
Check tag and insert here: ?
</mIRC>
robots.txt
Web page:robots.txt
Sample: <robots.txt>
Check tag and insert here: ?
</robots.txt>
XML
Web page:XML
Sample: <xml>
Insert code here: ?
</xml>