home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 67 / IOPROG_67A.ISO / soft / Tools / mwsppv4.exe / COLUMNUPPERCASE.SCRIPT < prev    next >
Encoding:
Text File  |  2000-12-28  |  4.0 KB  |  181 lines

  1. !!Script
  2. /**
  3. @Summary: Column upperCase~ converts column to upper case
  4. @Created build 476 mg20001227 (Miguel Angel Rojas Gonzalez)
  5. */
  6.  
  7. var gOutput = getOutput();
  8.  
  9. function DoCommand()
  10. {
  11.     var block = getUpperedBlock();
  12.     
  13.     if ( block != null )
  14.     {
  15.         putBlock( block );
  16.     }
  17. }
  18.  
  19. function getUpperedBlock()
  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     += toUpperCase( line.substring( start, end ) ) + '\r\n';
  44.             }
  45.             
  46.             var start =  ColumnToCharacter( endLine, startColumn, tabWidth );
  47.             var end   =  ColumnToCharacter( endLine, endColumn, tabWidth );
  48.             block     += toUpperCase( 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 toUpperCase( line )
  177. {
  178.     return line.toUpperCase();
  179. }
  180. !!/Script
  181.