Ik probeer een syntax highlighter te maken met PHP.
Het lukt me al aardig, maar ik vraag me steeds af is er geen betere manier?
Er zijn wat probleempjes met tabs en "Strings" of //Comments.
The moment we've all be waiting for..:
<?php
$LoopCount = 0;
function JassToSyntaxEnum( $Keyword, $Letter, $Word ) {
global $LoopCount;
$KeywordArray = explode( ",", $Keyword );
$LoopCount = $LoopCount + 1;
for ( $i = 0; $i < count( $KeywordArray ); $i++ ) {
if ( $KeywordArray[ $i ] == $Word ) {
$Output = $Output . "<font class=keyword".$Letter.">".$Word."</font> ";
$LoopCount = -10;
}
}
if ( $LoopCount == 3 ) { $Output = $Output . $Word . " "; }
return $Output; }
function JassToSyntax( $Input ) {
global $LoopCount;
$KeywordsA = "endglobals,globals,endfunction,function,if,then,endif,loop,endloop";
$KeywordsB = "takes,returns,return,local,constant,set,exitwhen";
$KeywordsC = "boolean,integer,real,string,event,player,widget,unit,destructable,item,ability,buff,force,group,trigger,triggercondition,triggeraction,timer,location,region,rect,boolexpr,sound,conditionfunc,filterfunc,unitpool,itempool,race,alliancetype,racepreference,gamestate,igamestate,fgamestate,playerstate,playerscore,playergameresult,unitstate,aidifficulty,eventid,gameevent,playerevent,playerunitevent,unitevent,limitop,widgetevent,dialogevent,unittype,gamespeed,gamedifficulty,gametype,mapflag,mapvisibility,mapsettings,mapdensity,mapcontrol,playerslotstate,volumegroup,camerafield,camerasetup,playercolor,placement,startlocprio,raritycontrol,blendmode,texmapflags,effect,effectype,wearhereffect,terraindeformation,fogstate,fogmodifier,dialog,button,quest,questitem,defeatcondition,timerdialog,leaderboard,multiboard,multiboarditem,trackable,gamecache,version,itemtype,texttag,attacktype,damagetype,weapontype,soundtype,lightning,pathingtype,image,ubersplat";
$InputArray = explode( " ", $Input );
for ( $i = 0; $i < count($InputArray); $i++ ) {
$Output = $Output . JassToSyntaxEnum( $KeywordsA, "A", $InputArray[ $i ] );
$Output = $Output . JassToSyntaxEnum( $KeywordsB, "B", $InputArray[ $i ] );
$Output = $Output . JassToSyntaxEnum( $KeywordsC, "C", $InputArray[ $i ] );
$LoopCount = 0;
}
return $Output; }
echo JassToSyntax( "function Meh takes nothing returns boolean <br>\n local unit u = GetTriggerUnit() <br>\n return true <br>\n endfunction <br>\n" );
?>
Zoals ik al zei, het werkt maar ik denk dat er betere en andere manieren voor zijn.
Heeft 1 van jullie meschien een goede tip?
962 views