home *** CD-ROM | disk | FTP | other *** search
/ PC User 2001 August / APC_Aug2001_CD2.iso / features / web_dev / files / mwjpp516.exe / %MAINDIR% / Tools / Misc / columnLowercase.script < prev    next >
Encoding:
Text File  |  2001-06-19  |  5.2 KB  |  205 lines

  1. !!Script
  2. /**
  3. @Summary: Column lowerCase~converts the column to lower case
  4. @Created build 476 mg20001227 (Miguel Angel Rojas Gonzalez)
  5. */
  6.  
  7. var gOutput = getOutput();
  8.  
  9. function DoCommand()
  10. {
  11.     var block = getLoweredBlock();
  12.     
  13.     if ( block != null )
  14.     {
  15.         putBlock( block );
  16.     }
  17. }
  18.  
  19. function getLoweredBlock()
  20. {
  21.     var editor = getActiveEditor();
  22.     
  23.     if ( editor )
  24.     {   
  25.         var range = editor.getSelection();
  26.         
  27.         var startLine = editor.copy( range.startLineIndex );
  28.         var endLine   = editor.copy( range.endLineIndex );
  29.                 
  30.         var tabWidth    = editor.tabWidth;
  31.         var startColumn = CharacterToColumn( startLine, range.startCharIndex, tabWidth );
  32.         var endColumn   = CharacterToColumn( endLine, range.endCharIndex, tabWidth );
  33.                 
  34.         if ( startColumn <= endColumn )
  35.         {
  36.             var block = "";
  37.             
  38.             for ( var i = range.startLineIndex; i < range.endLineIndex; i++ )
  39.             {
  40.                 var line  =  editor.copy( i );
  41.                 var start =  ColumnToCharacter( line, startColumn, tabWidth );
  42.                 var end   =  ColumnToCharacter( line, endColumn, tabWidth );
  43.                 block     += toLowerCase( line.substring( start, end ) ) + '\r\n';
  44.             }
  45.             
  46.             var start =  ColumnToCharacter( endLine, startColumn, tabWidth );
  47.             var end   =  ColumnToCharacter( endLine, endColumn, tabWidth );
  48.             block     += toLowerCase( endLine.substring( start, end ) );
  49.             
  50.             return block;
  51.         }
  52.         else
  53.         {
  54.             return null;
  55.         }
  56.     }
  57.     else
  58.     {
  59.         return null;
  60.     }
  61. }
  62.  
  63. function putBlock( block )
  64. {
  65.     var editor = getActiveEditor();
  66.     
  67.     if ( editor )
  68.     {   
  69.         var range     = editor.getSelection();
  70.         var startLine = editor.copy( range.startLineIndex );
  71.         var endLine   = editor.copy( range.endLineIndex );
  72.         
  73.         var tabWidth    = editor.tabWidth;
  74.         var startColumn = CharacterToColumn( startLine, range.startCharIndex, tabWidth );
  75.         var endColumn   = CharacterToColumn( endLine, range.endCharIndex,     tabWidth );
  76.             
  77.         var dataArray  = convertToArray( block, range.startLineIndex );
  78.         
  79.         for ( var i = range.startLineIndex; i < range.endLineIndex; i++ )
  80.         {
  81.             var line  = editor.copy( i );
  82.             var start = ColumnToCharacter( line, startColumn, tabWidth );
  83.             var end   = ColumnToCharacter( line, endColumn,   tabWidth );
  84.         
  85.             if ( dataArray[ i ] != null )
  86.             {
  87.                 editor.replace( dataArray[ i ], i, start, i, end );
  88.             }
  89.             else
  90.             {
  91.                 editor.remove( i, start, i, end );
  92.             }
  93.         }
  94.         
  95.         var start = ColumnToCharacter( endLine, startColumn, tabWidth );
  96.         var end   = ColumnToCharacter( endLine, endColumn,   tabWidth );
  97.     
  98.         if ( dataArray[ i ] != null )
  99.         {
  100.             editor.replace( dataArray[ i ], i, start, i, end );
  101.             editor.select( range.startLineIndex, range.startCharIndex, range.endLineIndex, start + dataArray[ i ].length );
  102.         }
  103.         else
  104.         {
  105.             editor.remove( i, start, i, end );
  106.             editor.select( range.startLineIndex, range.startCharIndex, range.endLineIndex, start );
  107.         }
  108.     }
  109. }
  110.  
  111. function CharacterToColumn( line, charIndex, tabWidth )
  112. {
  113.     var column = 0;
  114.     
  115.     for ( var i = 0; i <= charIndex; i++ )
  116.     {
  117.         if ( line.charAt( i ) == '\t' )
  118.         {
  119.             column += tabWidth - (column % tabWidth);
  120.         }
  121.         else
  122.         {
  123.             column += 1;
  124.         }
  125.     }
  126.     
  127.     return column;
  128. }
  129.  
  130. function ColumnToCharacter( line, column, tabWidth )
  131. {
  132.     var columnCount = 0;
  133.     var length      = line.length;
  134.     
  135.     for ( var i = 0; i < length; i++ )
  136.     {
  137.         if ( line.charAt( i ) == '\t' )
  138.         {
  139.             columnCount += tabWidth - ( columnCount % tabWidth );
  140.         }
  141.         else
  142.         {
  143.             columnCount += 1;
  144.         }
  145.         
  146.         if ( columnCount >= column )
  147.         {
  148.             return i;
  149.         }
  150.     }
  151.     
  152.     return length;
  153. }
  154.  
  155. function convertToArray( block, lineIndex )
  156. {
  157.     var dataArray = new Array();
  158.     
  159.     var startIndex = 0;
  160.     var endIndex   = block.indexOf( '\r\n' );
  161.     
  162.     while ( endIndex > -1 )
  163.     {
  164.         dataArray[ lineIndex ] = block.substring( startIndex, endIndex );
  165.         
  166.         startIndex =  endIndex + 2;
  167.         endIndex   =  block.indexOf( '\r\n', startIndex );
  168.         lineIndex  += 1;
  169.     }
  170.     
  171.     dataArray[ lineIndex ] = block.substring( startIndex, block.length );
  172.     
  173.     return dataArray;
  174. }
  175.  
  176. function toLowerCase( line )
  177. {
  178.     return line.toLowerCase();
  179. }
  180. !!/Script
  181.  
  182. 05/27/2000  07:57a      <DIR>          books
  183. 12/27/2000  07:17a                   0 sqlerror.log
  184. 12/11/2000  03:31p      <DIR>          alex
  185. 11/16/1999  03:49p      <DIR>          discover
  186. 12/13/2000  12:50p              30,008 santa.jpg
  187. 12/20/2000  12:26p                   0 cta01996
  188. 02/03/2000  02:37p      <DIR>          ibmtools
  189. 02/03/2000  02:51p      <DIR>          winnt
  190. 02/03/2000  02:53p      <DIR>          drivers
  191. 02/03/2000  02:54p      <DIR>          documents and Settings
  192. 02/03/2000  02:55p      <DIR>          program files
  193. 02/03/2000  03:21p      <DIR>          cfgsafe
  194. 10/31/2000  10:11a                 171 assetlog.txt
  195. 10/25/2000  05:55p                 702 drivez.log
  196. 10/26/2000  07:16a      <DIR>          .hotjava
  197. 10/26/2000  07:48a      <DIR>          temp
  198. 10/27/2000  05:50p      <DIR>          my music
  199. 10/27/2000  05:52p      <DIR>          real
  200. 11/01/2000  08:42a      <DIR>          kpcms
  201. 11/10/2000  03:50p      <DIR>          flexlm
  202. 11/22/2000  05:01p              11,683 n2pinst.log
  203. 11/22/2000  05:01p                   0 n2pactivex.log
  204.                7 File(s)         42,564 bytes
  205.