<http://forum.pspad.com/read.php?f=2&i=10389&t=10389> 
----------------------------------------------------------------

I wrote a little Javascript module to extract database table names from a
(PHP in my case) program page. In case you find it useful, here it is:

// JavaScript routines to search for table names in SQL statements.
module_name = "DBExtract";
module_ver = "0.001b";

function ArrayFrom(strRegExp)
        {var edtCurrent = newEditor();
         edtCurrent.assignActiveEditor();
         var rex = new RegExp(strRegExp,'img');
         var varResult = edtCurrent.text().match(rex);
         if(varResult==null)
           {varResult = new Array();}
         return varResult; }

function DeleteToTable(arr)
        {var rex = new
RegExp('\\bDELETE\\b.FROM\\b.([a-z0-9_\\-]*)\\b', 'im')
         for(var numCount=0; numCount<arr.length; numCount++)
            {arr[numCount] = arr[numCount].match(rex)[1];}
         return arr; }

function DisplayArray(arrText)
        {var edtNew = newEditor();
         edtNew.newFile();
         var strList = '';
         for(var numCount=0; numCount<arrText.length; numCount++)
            {strList += arrText[numCount] + '\n';}
         edtNew.text(strList); }

function DistinctElements(arrText)
        {var intCount = 1;
         var arrResult = new Array();
         arrText.sort();
         if(arrText.length>0)
           {arrResult[0] = arrText[0];
            while(intCount<arrText.length)
                 {if(arrText[intCount]!=arrText[intCount-1])
                    {arrResult[arrResult.length] = arrText[intCount];}
                  intCount++; }
           }
         return arrResult; }

function ExtractTables()
        {var arrPhrases =
PhrasesToTable(ArrayFrom('\\s(FROM|JOIN)\\s+(\\w+)'));
         arrPhrases =
arrPhrases.concat(HandlerToTable(ArrayFrom('HANDLER\\s+(\\w+)\\s+OPEN')));
         arrPhrases =
arrPhrases.concat(LastWordsOf(ArrayFrom('\\b(ALTER|DROP|CREATE)\\b.TABLE\\b.(IF\\b.EXISTS\\b.){0,1}([a-z0-9_\\-]){1,}')));
         arrPhrases =
arrPhrases.concat(LastWordsOf(ArrayFrom('\\b(INSERT|REPLACE)\\b.INTO\\b.([a-z0-9_\\-])*')));
         arrPhrases =
arrPhrases.concat(UpdateToTable(ArrayFrom('\\bUPDATE\\b.([a-z0-9_\\-])*\\b.SET\\b')));
         arrPhrases =
arrPhrases.concat(DeleteToTable(ArrayFrom('\\bDELETE\\b.FROM\\b.([a-z0-9_\\-]*)\\b')));
         if(arrPhrases.length==0)
           {echo('No table names were found.');}
         else
           {DisplayArray(DistinctElements(arrPhrases));}
        }

function HandlerToTable(arrHandlers)
        {for(var numCount=0; numCount<arrHandlers.length; numCount++)
            {arrHandlers[numCount] =
arrHandlers[numCount].substring(8,arrHandlers[numCount].length-5);
             while(arrHandlers[numCount].substr(0,1)==' ')
                  {arrHandlers[numCount] =
arrHandlers[numCount].substr(1);}
            
while(arrHandlers[numCount].substr(arrHandlers[numCount].length-2,1)=='
')
                  {arrHandlers[numCount] =
arrHandlers[numCount].substring(0,arrHandlers[numCount].length-2);}
            }
         return arrHandlers; }

function LastWordsOf(arr)
        {var rex = new RegExp('\\b([a-z0-9_\\-]*)$', 'im')
         for(var numCount=0; numCount<arr.length; numCount++)
            {var varResult = arr[numCount].match(rex);
             if(varResult)
               {arr[numCount] = arr[numCount].match(rex)[1];}
             else
               {arr[numCount] = '';}
            }
         return arr; }

function PhrasesToTable(arrPhrases)
        {for(var numCount=0; numCount<arrPhrases.length; numCount++)
            {arrPhrases[numCount] = arrPhrases[numCount].substr(5);
             while(arrPhrases[numCount].substr(0,1)==' ')
                  {arrPhrases[numCount] = arrPhrases[numCount].substr(1);}
            }
         return arrPhrases; }

function UpdateToTable(arr)
        {var rex = new
RegExp('\\bUPDATE\\b.([a-z0-9_\\-]*)\\b.SET\\b', 'im')
         for(var numCount=0; numCount<arr.length; numCount++)
            {arr[numCount] = arr[numCount].match(rex)[1];}
         return arr; }

function Init()
        {addMenuItem('Extract table names', 'Database',
'ExtractTables');}

-- 
PSPad freeware editor http://www.pspad.com

Reply via email to