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: actionscript, ada, apache, applescript, asm, asp, bash, blitzbasic, bnf, caddcl, cadlisp, cfm, c_mac, c, cpp, cpp-qt, csharp, css-gen.cfg, css, delphi, diff, div, 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, rails, reg, robots, ruby, scheme, sdlbasic, smarty, sql, text, thinbasic, vbnet, vb, vhdl, visualfoxpro, winbatch, x, and xml.
GeSHi-1.1.2-alpha3 not currently installed. It is unclear if all of the above languages are supported in the alpha release.
Unsupported languages
These languages used on Rosetta Code do not have GeSHi support (yet).
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>