Well after seeing that Python script I'm embarrassed to post mine, but then again I tried the python converter on some of my sourcepawn scripts and it broke them deleting parts etc. So mine actually works nearer 99% even though it's not optimized and you could say terrible. I put 73k .sp lines through it with few problems.
1. Use TOGs VBA script to upgrade old scripts to the new syntax.
2. Run my PHP script and paste TOGs converted code into the textbox to convert it into using the new methodmaps.
PHP Code:
<html><body text="white">
<?php
/*
* Name : [SM] Sourcepawn to Methodmaps Converter
* Author : SilverShot
* Descrp : 1. Use TOGs VBA script to uppgrade old scripts to the new syntax. 2. Run this script and paste the code into the box to convert the code to use the new methodmaps.
* Link : https://www.sourcemod.net/plugins.php?author=Silvers&search=1&sortby=title&order=0 // https://forums.alliedmods.net/showthread.php?t=290805
*/
$g_Methods = array
(
array("AddAngle","PbAddAngle"),
array("AddBool","PbAddBool"),
array("AddChangeHook","HookConVarChange"),
array("AddColor","PbAddColor"),
array("AddCommandOverride","AddAdmGroupCmdOverride"),
array("AddFloat","PbAddFloat"),
array("AddGroupImmunity","SetAdmGroupImmuneFrom"),
array("AddInt","PbAddInt"),
array("AddItem","AddMenuItem"),
array("AddItem","AddToTopMenu"),
array("AddMessage","PbAddMessage"),
array("AddQuery","SQL_AddQuery"),
array("AddString","PbAddString"),
array("AddVector","PbAddVector"),
array("AddVector2D","PbAddVector2D"),
array("AffectedRows","SQL_GetAffectedRows"),
array("ArrayList","CreateArray"),
array("ArrayStack","CreateStack"),
array("BindFloat","SQL_BindParamFloat"),
array("BindIdentity","BindAdminIdentity"),
array("BindInt","SQL_BindParamInt"),
array("BindString","SQL_BindParamString"),
array("BlockSize","GetArrayBlockSize"),
array("BlockSize","GetStackBlockSize"),
array("BoolValue","GetConVarBool"),
array("BoolValue.set","SetConVarBool"),
array("BroadcastDisabled","SetEventBroadcast"),
array("BytesLeft","BfGetNumBytesLeft"),
array("Cancel","CancelCreatedEvent"),
array("Cancel","CancelMenu"),
array("CanDrawFlags","CanPanelDrawFlags"),
array("CanTarget","CanAdminTarget"),
array("Clear","ClearArray"),
array("Clear","ClearTrie"),
array("Clone","CloneArray"),
array("Connect","Database_Connect"),
array("CurrentKey","GetPanelCurrentKey"),
array("CurrentKey.set","SetPanelCurrentKey"),
array("DataPack","CreateDataPack"),
array("DBStatement.BindFloat","SQL_BindParamFloat"),
array("DBStatement.BindInt","SQL_BindParamInt"),
array("DBStatement.BindString","SQL_BindParamString"),
array("DeleteKey","KvDeleteKey"),
array("DeleteThis","KvDeleteThis"),
array("Display","DisplayMenu"),
array("Display","DisplayTopMenu"),
array("DisplayAt","DisplayMenuAtItem"),
array("DisplayCategory","DisplayTopMenuCategory"),
array("DisplayVote","VoteMenu"),
array("DisplayVoteToAll","VoteMenuToAll"),
array("DrawItem","DrawPanelItem"),
array("DrawText","DrawPanelText"),
array("Driver","SQL_ReadDriver"),
array("Empty","IsStackEmpty"),
array("EndOfFile","IsEndOfFile"),
array("Erase","RemoveFromArray"),
array("Escape","SQL_EscapeString"),
array("Execute","SQL_ExecuteTransaction"),
array("ExitBackButton","GetMenuExitBackButton"),
array("ExitBackButton.set","SetMenuExitBackButton"),
array("ExitButton","GetMenuExitButton"),
array("ExitButton.set","SetMenuExitButton"),
array("ExportLength","KeyValuesExportLength"),
array("ExportToFile","KeyValuesToFile"),
array("ExportToString","KeyValuesToString"),
array("FetchFloat","SQL_FetchFloat"),
array("FetchInt","SQL_FetchInt"),
array("FetchMoreResults","SQL_FetchMoreResults"),
array("FetchRow","SQL_FetchRow"),
array("FetchSize","SQL_FetchSize"),
array("FetchString","SQL_FetchString"),
array("FieldCount","SQL_GetFieldCount"),
array("FieldNameToNum","SQL_FieldNameToNum"),
array("FieldNumToName","SQL_FieldNumToName"),
array("Find","SQL_GetDriver"),
array("FindCategory","FindTopMenuCategory"),
array("FindKeyById","KvFindKeyById"),
array("FindString","FindStringInArray"),
array("FindValue","FindValueInArray"),
array("Fire","FireEvent"),
array("FireToClient","FireEventToClient"),
array("Flags","GetConVarFlags"),
array("Flags.set","SetConVarFlags"),
array("FloatValue","GetConVarFloat"),
array("FloatValue.set","SetConVarFloat"),
array("Format","SQL_FormatQuery"),
array("Get","GetArrayCell"),
array("GetArray","GetArrayArray"),
array("GetArray","GetTrieArray"),
array("GetBool","GetEventBool"),
array("GetBounds","GetConVarBounds"),
array("GetColor","KvGetColor"),
array("GetCommandOverride","GetAdmGroupCmdOverride"),
array("GetDataType","KvGetDataType"),
array("GetDefault","GetConVarDefault"),
array("GetErrorString","SMC_GetErrorString"),
array("GetFlags","GetAdmGroupAddFlags"),
array("GetFlags","GetAdminFlags"),
array("GetFloat","GetEventFloat"),
array("GetFloat","KvGetFloat"),
array("GetGroup","GetAdminGroup"),
array("GetGroupImmunity","GetAdmGroupImmunity"),
array("GetIdentifier","SQL_GetDriverIdent"),
array("GetInfoString","GetTopMenuInfoString"),
array("GetInt","GetEventInt"),
array("GetItem","GetMenuItem"),
array("GetKey","GetTrieSnapshotKey"),
array("GetName","GetConVarName"),
array("GetName","GetEventName"),
array("GetNameSymbol","KvGetNameSymbol"),
array("GetNext","ReadDirEntry"),
array("GetNum","KvGetNum"),
array("GetObjName","GetTopMenuObjName"),
array("GetPassword","GetAdminPassword"),
array("GetProduct","SQL_GetDriverProduct"),
array("GetRepeatedFieldCount","PbGetRepeatedFieldCount"),
array("GetSectionName","KvGetSectionName"),
array("GetSectionSymbol","KvGetSectionSymbol"),
array("GetString","GetArrayString"),
array("GetString","GetConVarString"),
array("GetString","GetEventString"),
array("GetString","GetTrieString"),
array("GetString","KvGetString"),
array("GetSubString","GetRegexSubString"),
array("GetTitle","GetMenuTitle"),
array("GetUInt64","KvGetUInt64"),
array("GetUsername","GetAdminUsername"),
array("GetValue","GetTrieValue"),
array("GetVector","KvGetVector"),
array("GoBack","KvGoBack"),
array("GotoFirstSubKey","KvGotoFirstSubKey"),
array("GotoNextKey","KvGotoNextKey"),
array("GroupCount","GetAdminGroupCount"),
array("GroupImmunitiesCount","GetAdmGroupImmuneCount"),
array("HasField","PbHasField"),
array("HasFlag","GetAdmGroupAddFlag"),
array("HasFlag","GetAdminFlag"),
array("HasResults","SQL_HasResultSet"),
array("ImmunityLevel","GetAdmGroupImmunityLevel"),
array("ImmunityLevel","GetAdminImmunityLevel"),
array("ImmunityLevel.set","SetAdmGroupImmunityLevel"),
array("ImmunityLevel.set","SetAdminImmunityLevel"),
array("Import","KvCopySubkeys"),
array("ImportFromFile","FileToKeyValues"),
array("ImportFromString","StringToKeyValues"),
array("InheritGroup","AdminInheritGroup"),
array("InsertId","SQL_GetInsertId"),
array("InsertItem","InsertMenuItem"),
array("IntValue","GetConVarInt"),
array("IntValue.set","SetConVarInt"),
array("IsFieldNull","SQL_IsFieldNull"),
array("IsReadable","IsPackReadable"),
array("IsReadable","IsStackEmptyckReadable"),
array("IsSameConnection","SQL_IsSameConnection"),
array("ItemCount","GetMenuItemCount"),
array("JumpToKey","KvJumpToKey"),
array("JumpToKeySymbol","KvJumpToKeySymbol"),
array("KeyBufferSize","TrieSnapshotKeyBufferSize"),
array("KeyValues","CreateKeyValues"),
array("Length","GetArraySize"),
array("Length","TrieSnapshotLength"),
array("LoadConfig","LoadTopMenuConfig"),
array("Match","MatchRegex"),
array("Menu","CreateMenu"),
array("MoreRows","SQL_MoreRows"),
array("NodesInStack","KvNodesInStack"),
array("NoVoteButton.set","SetMenuNoVoteButton"),
array("OnEnd.set","SMC_SetParseEnd"),
array("OnEnterSection","SMCParser_OnEnterSection_set"),
array("OnKeyValue","SMCParser_OnKeyValue_set"),
array("OnLeaveSection","SMCParser_OnLeaveSection_set"),
array("OnRawLine","SMC_SetRawLine"),
array("OnStart.set","SMC_SetParseStart"),
array("OptionFlags","GetMenuOptionFlags"),
array("OptionFlags.set","SetMenuOptionFlags"),
array("Pagination","GetMenuPagination"),
array("Pagination.set","SetMenuPagination"),
array("Panel","CreatePanel"),
array("ParseFile","SMC_ParseFile"),
array("Pop","PopStackCell"),
array("PopArray","PopStackArray"),
array("PopString","PopStackString"),
array("Position","FilePosition"),
array("Position","GetPackPosition"),
array("Position.set","SetPackPosition"),
array("Push","PushArrayCell"),
array("Push","PushStackCell"),
array("PushArray","PushArrayArray"),
array("PushArray","PushStackArray"),
array("PushString","PushArrayString"),
array("PushString","PushStackString"),
array("Query","SQL_TQuery"),
array("Read","ReadFile"),
array("ReadAngle","BfReadAngle"),
array("ReadAngle","PbReadAngle"),
array("ReadAngles","BfReadAngles"),
array("ReadBool","BfReadBool"),
array("ReadBool","PbReadBool"),
array("ReadByte","BfReadByte"),
array("ReadCell","ReadPackCell"),
array("ReadChar","BfReadChar"),
array("ReadColor","PbReadColor"),
array("ReadCoord","BfReadCoord"),
array("ReadEntity","BfReadEntity"),
array("ReadFloat","BfReadFloat"),
array("ReadFloat","PbReadFloat"),
array("ReadFloat","ReadPackFloat"),
array("ReadFunction","ReadPackFunction"),
array("ReadInt","PbReadInt"),
array("ReadInt16","File_ReadTyped<int16_t>"),
array("ReadInt32","File_ReadTyped<int32_t>"),
array("ReadInt8","File_ReadTyped<int8_t>"),
array("ReadLine","ReadFileLine"),
array("ReadMessage","PbReadMessage"),
array("ReadNum","BfReadNum"),
array("ReadRepeatedMessage","PbReadRepeatedMessage"),
array("ReadShort","BfReadShort"),
array("ReadString","BfReadString"),
array("ReadString","PbReadString"),
array("ReadString","ReadFileString"),
array("ReadString","ReadPackString"),
array("ReadUint16","File_ReadTyped<uint16_t>"),
array("ReadUint8","File_ReadTyped<uint8_t>"),
array("ReadVecCoord","BfReadVecCoord"),
array("ReadVecNormal","BfReadVecNormal"),
array("ReadVector","PbReadVector"),
array("ReadVector2D","PbReadVector2D"),
array("ReadWord","BfReadWord"),
array("Remove","RemoveFromTopMenu"),
array("Remove","RemoveFromTrie"),
array("RemoveAllItems","RemoveAllMenuItems"),
array("RemoveChangeHook","UnhookConVarChange"),
array("RemoveItem","RemoveMenuItem"),
array("RemoveRepeatedFieldValue","PbRemoveRepeatedFieldValue"),
array("ReplicateToClient","SendConVarValue"),
array("Reset","ResetPack"),
array("Resize","ResizeArray"),
array("RestoreDefault","ResetConVar"),
array("Rewind","KvRewind"),
array("Rewind","SQL_Rewind"),
array("RowCount","SQL_GetRowCount"),
array("SavePosition","KvSavePosition"),
array("Seek","FileSeek"),
array("Selection","GetMenuSelectionPosition"),
array("Send","SendPanelToClient"),
array("Set","SetArrayCell"),
array("SetAngle","PbSetAngle"),
array("SetArray","SetArrayArray"),
array("SetArray","SetTrieArray"),
array("SetBool","PbSetBool"),
array("SetBool","SetConVarBool"),
array("SetBool","SetEventBool"),
array("SetBounds","SetConVarBounds"),
array("SetCharset","SQL_SetCharset"),
array("SetColor","KvSetColor"),
array("SetColor","PbSetColor"),
array("SetEscapeSequences","KvSetEscapeSequences"),
array("SetFlag","SetAdmGroupAddFlag"),
array("SetFlag","SetAdminFlag"),
array("SetFloat","KvSetFloat"),
array("SetFloat","PbSetFloat"),
array("SetFloat","SetConVarFloat"),
array("SetFloat","SetEventFloat"),
array("SetInt","PbSetInt"),
array("SetInt","SetConVarInt"),
array("SetInt","SetEventInt"),
array("SetKeys","SetPanelKeys"),
array("SetNum","KvSetNum"),
array("SetPassword","SetAdminPassword"),
array("SetSectionName","KvSetSectionName"),
array("SetString","KvSetString"),
array("SetString","PbSetString"),
array("SetString","SetArrayString"),
array("SetString","SetConVarString"),
array("SetString","SetEventString"),
array("SetString","SetTrieString"),
array("SetTitle","SetMenuTitle"),
array("SetTitle","SetPanelTitle"),
array("SetUInt64","KvSetUInt64"),
array("SetValue","SetTrieValue"),
array("SetVector","KvSetVector"),
array("SetVector","PbSetVector"),
array("SetVector2D","PbSetVector2D"),
array("ShiftUp","ShiftArrayUp"),
array("Size","GetTrieSize"),
array("SMCParser","SMC_CreateParser"),
array("Snapshot","CreateTrieSnapshot"),
array("StringMap","CreateTrie"),
array("StringMapSnapshotKey","GetTrieSnapshotKey"),
array("Style","GetMenuStyle"),
array("Style","GetPanelStyle"),
array("SwapAt","SwapArrayItems"),
array("TextRemaining","GetPanelTextRemaining"),
array("ToPanel","CreatePanelFromMenu"),
array("Transaction","SQL_CreateTransaction"),
array("VoteResultCallback.set","SetVoteResultCallback"),
array("Write","WriteFile"),
array("WriteAngle","BfWriteAngle"),
array("WriteAngles","BfWriteAngles"),
array("WriteBool","BfWriteBool"),
array("WriteByte","BfWriteByte"),
array("WriteCell","WritePackCell"),
array("WriteChar","BfWriteChar"),
array("WriteCoord","BfWriteCoord"),
array("WriteEntity","BfWriteEntity"),
array("WriteFloat","BfWriteFloat"),
array("WriteFloat","WritePackFloat"),
array("WriteFunction","WritePackFunction"),
array("WriteInt16","File_WriteTyped<int16_t>"),
array("WriteInt32","File_WriteTyped<int32_t>"),
array("WriteInt8","File_WriteTyped<int8_t>"),
array("WriteLine","WriteFileLine"),
array("WriteNum","BfWriteNum"),
array("WriteShort","BfWriteShort"),
array("WriteString","BfWriteString"),
array("WriteString","WriteFileString"),
array("WriteString","WritePackString"),
array("WriteString","WriteStringLine"),
array("WriteVecCoord","BfWriteVecCoord"),
array("WriteVecNormal","BfWriteVecNormal"),
array("WriteWord","BfWriteWord")
);
$gCoded = "
// This part is for the 'Vars' button.. remove this comment and the scripts below, outputs the same types onto a single with 1 declare instead of what you see. Easily breaks with unexpected or unsupported formatting, works good enough for what I needed:
ConVar g_hCvarMPGameMode; ConVar g_hCvarModes; ConVar g_hCvarModesOff; ConVar g_hCvarModesTog; ConVar g_hCvarAllow;
bool g_bCvarAllow; bool g_bLeft4Dead2; bool g_bLoaded;
int g_iCvarGlow; int g_iCvarGlowCol; int g_iCvarRandom;
Menu g_hMenuAng; Menu g_hMenuPos; int g_iPlayerSpawn; int g_iRoundStart;
int g_iSpawnCount; int g_iSpawns[MAX_SPAWNS][2];
// This is for the converter, you can press the convert button and see what it does.
SetEventInt(hEvent, \"userid\", GetAdminFlag(client));\nint blah = GetConVarInt(hTest);\n
AddMenuItem(menu, \"\", \"X + 5.0\");
AddMenuItem(menu, \"\", \"Y + 5.0\");
AddMenuItem(menu, \"\", \"Z + 5.0\");
SetMenuTitle(menu, \"Set Angle\");
SetMenuExitButton(menu, false);
SetMenuExitButton(menu, true);
DisplayMenu(menu, client, MENU_TIME_FOREVER);
Handle hCfg = OpenFile(sPath, \"w\");
WriteFileLine(hCfg, \"\");
if(hCfg==INVALID_HANDLE) CloseHandle(hCfg); // Test
// Load config
Handle hFile = CreateKeyValues(\"flares\");
if( !FileToKeyValues(hFile, sPath) )
public void Event_RoundStart(Handle event, const char[] name, bool dontBroadcast)
{
public int AngMenuHandler(Handle menu, MenuAction action, int client, int index)
{
BfWriteByte(UserMsgShake, 0);
BfWriteFloat(UserMsgShake, 1.0);
BfWriteFloat(UserMsgShake, 0.5);
BfWriteFloat(UserMsgShake, 0.5);
";
if( isset($_POST['conv']) )
{
$gCoded = $_POST['txtBox'];
$lines = explode("\n", $gCoded);
$size = sizeof($g_Methods);
$gCoded = "";
// 1. LOOP THROUGH POSTED CODE.
foreach($lines as $line)
{
// 1b. REPLACE SPECIFIC THINGS WHERE 'new' HAS TO BE USED
// Replace specific variables and types:
if( preg_match("/\bOpenDirectory\b/", $line) )
{
$line = preg_replace("/\bHandle\b/", "DirectoryListing", $line);
}
if( preg_match("/\bCreateMenu|MenuAction\b/", $line) )
{
$line = preg_replace("/\bHandle\b/", "Menu", $line);
}
else if( preg_match("/\b(CreateKeyValues|KeyValues)\b/", $line) )
{
$line = preg_replace("/\bHandle\b/", "KeyValues", $line);
}
else if( preg_match("/\bOpenFile\b/", $line) )
{
$line = preg_replace("/\bHandle\b/", "File", $line);
}
else if( preg_match("/\bSMC_CreateParser\b/", $line) )
{
$line = preg_replace("/\bHandle\b/", "SMCParser", $line);
}
else if( preg_match("/\bCreatePanel\b/", $line) )
{
$line = preg_replace("/\bHandle\b/", "Panel", $line);
}
else if( preg_match("/\bSQL_CreateTransaction\b/", $line) )
{
$line = preg_replace("/\bHandle\b/", "Transaction", $line);
}
else if( preg_match("/\bCreateDataPack\b/", $line) )
{
$line = preg_replace("/\bHandle\b/", "DataPack", $line);
}
else if( preg_match("/\bCreateStack\b/", $line) )
{
$line = preg_replace("/\bHandle\b/", "ArrayStack", $line);
}
else if( preg_match("/\bCreateTrie\b/", $line) )
{
$line = preg_replace("/\bHandle\b/", "StringMap", $line);
}
else if( preg_match("/\bCreateArray\b/", $line) )
{
$line = preg_replace("/\bHandle\b/", "ArrayList", $line);
}
else if( preg_match("/\bCreateTopMenu\b/", $line) )
{
$line = preg_replace("/\bHandle\b/", "TopMenu", $line);
}
else if( preg_match("/\bCompileRegex\b/", $line) )
{
$line = preg_replace("/\bHandle\b/", "Regex", $line);
}
// else if( preg_match("/\bCreateEvent\b/", $line) )
// {
// $line = str_replace("Handle", "Event", $line);
// }
// $line = str_replace("CreateEvent", "new Event", $line);
$line = str_replace("CompileRegex", "new Regex", $line);
$line = str_replace("CreateTopMenu", "new TopMenu", $line);
$line = str_replace("CreateArray", "new ArrayList", $line);
$line = str_replace("CreateTrie", "new StringMap", $line);
$line = str_replace("CreateStack", "new ArrayStack", $line);
$line = str_replace("CreateDataPack", "new DataPack", $line);
$line = str_replace("SQL_CreateTransaction", "new Transaction", $line);
$line = str_replace("SMC_CreateParser", "new SMCParser", $line);
$line = str_replace("CreateKeyValues", "new KeyValues", $line);
$line = str_replace("CreatePanel", "new Panel", $line);
$line = str_replace("CreateMenu", "new Menu", $line);
$line = str_replace("Handle event", "Event event", $line);
$line = str_replace("Handle menu", "Menu menu", $line);
// Fix handlers
$line = str_replace("(Handle convar, const char oldValue[], const newValue[])", "(Handle convar, const char[] oldValue, const char[] newValue)", $line);
$line = str_replace("const char output[], caller, activator, float delay", "const char[] output, int caller, int activator, float delay", $line);
$line = str_replace("&float damage,", "float &damage,", $line);
$line = str_replace("public OnConfigsExecuted", "public void OnConfigsExecuted", $line);
// Custom changes for my scripts:
$line = str_replace("public ConVarChanged_", "public void ConVarChanged_", $line);
// BUG FIXME :: ERROR CONVERTING - missing var inside () // int menupos = GetMenuSelectionPosition();
// CloseHandle -> delete
if( preg_match("/\bCloseHandle\b/", $line) )
{
$pos = strpos($line, "CloseHandle");
$posB1 = strpos($line, "(", $pos);
$posB2 = strpos($line, ")", $pos);
$line = substr($line, 0, $pos)
. "delete "
. substr($line, $posB1 + 1, $posB2 - $posB1 - 1)
. substr($line, $posB2 + 1)
;
}
// INVALID_HANDLE -> null
$line = str_replace("INVALID_HANDLE", "null", $line);
// FIX float <view_as> UGLY BULLSHIT
// float { Float: {
// view_as<float>({})
// Doesn't yet handle single line with multiple floats{}
/*
if( preg_match("/\bfloat\b(.*)(\{)/", $line) )
{
if( preg_match("/\bview_as\b/", $line) )
{
// Duhh
} else {
$line = str_replace("float", "view_as<float>(", $line);
$line = str_replace("}", "})", $line);
}
}
// */
// 2. LOOP THROUGH AVAILABLE METHODS TO CONVERT
for( $i = 0; $i < $size; $i++ )
{
// 3. CHECK LINE CONTAINS OLD METHOD TO CONVERT
$meth = $g_Methods[$i][1];
$newM = $g_Methods[$i][0];
$addB = "(";
$pos = preg_match("/\b$meth\b/", $line);
if( $pos )
{
$pos = strpos($line, $meth);
$posEnd = $pos + strlen($meth);
$posBracket = strpos($line, "(", $posEnd);
$endBracket = strpos($line, ")", $posEnd);
$endComma = strpos($line, ",", $pos);
$tog = 0;
if( $endComma !== false && $endComma < $endBracket )
{
$endBracket = $endComma;
$tog = 1;
}
// 3b. SPECIFIC CASE FOR .set
if( strpos($newM, ".set") )
{
$addB = " = ";
$newM = str_replace(".set", "", $newM);
$tog += 1;
$endB = strpos($line, ")", $posEnd);
$newS = trim(
substr($line, $endBracket + $tog, - 3)
. substr($line, $endB + 1)
);
} else {
$newS = trim(substr($line, $endBracket + $tog));
}
$line2 = ""
. substr($line, 0, $pos)
. substr($line, $posBracket + 1, $endBracket - $posBracket - 1)
. "."
. $newM
. $addB
. $newS
. "";
$line = $line2;
}
}
$line = str_replace("Value();", "Value;", $line); // Fix for *Value(); bug
$line = str_replace(".Flags();", ".Flags;", $line); // Fix for *Flags(); bug
$gCoded .= $line . "\n";
}
} else if( isset($_POST['vars']) ) {
$array_Vars = array("Address","char","Handle","ConVar","float","int","bool","Regex","TopMenu","ArrayList","StringMap","ArrayStack","DataPack","Transaction","SMCParser","KeyValues","Panel","Menu","Event");
$regex_Str = "/\b(" . implode('|', $array_Vars) . ")\b ([A-Za-z0-9_\+\[\]]+);/";
$matches = array();
$gCoded = $_POST['txtBox'];
$gCoded = str_replace(" ", " ", $gCoded);
$gCoded = str_replace(" ", " ", $gCoded);
preg_match_all($regex_Str, $gCoded, $matches);
$last = "";
$gCoded = "";
sort($matches[0]);
foreach($matches[0] as $match)
{
$pos = strpos($match, " ");
$sub = substr($match, 0, $pos);
if( $last != $sub )
{
$last = $sub;
$gCoded = substr($gCoded, 0, -1);
$gCoded .= ";\r\n" . $sub . " " . substr($match, $pos + 1, -1) . ",";
} else {
$gCoded .= substr($match, $pos, -1) . ",";
}
}
$gCoded = substr($gCoded, 1);
$gCoded = substr($gCoded, 0, -1);
$gCoded .= ";";
}
?>
<br><form action="sm_conv.php" method="post">
<textarea name="txtBox" cols="100" rows="30"><?php echo $gCoded; ?></textarea>
<br>
<input type="submit" name="conv" value="Convert">
<input type="submit" name="vars" value="Vars">
</form>
</body>
</html>