Syntax Highlighter
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..:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?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" );
?>
$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?
Niet bekent, maar het word gebruikt als scripting language in games van Blizzard Entertainment ( wc3, wc3tft ).
Dus om google door te zoeken voor dat, zal geen enkel resultaat geven.
Of ik moet een "Java script" ombouwen voor deze syntax, maar om te kloten met iemand anders zijn code kan ik gewoon niet.
Een andere vraag.
Ik heb een textfield waar je de functie schrijft, en bij het posten word het weergegeven.
Maar alles is in 1 lijn, ik heb google door gezocht maar er is niet echt veel duidelijkheid hoe je de carriage return kan wijzigen naar <br>
Ik heb al geprobeerd of "/n" en "/r" te vervangen naar "<br>" maar dat pakt hij niet op.
Gewijzigd op 01/01/1970 01:00:00 door Johan K
Gewijzigd op 01/01/1970 01:00:00 door Johan K