annotate fixmodule.d @ 192:c3583c6ec027

Added missing default cases for switch statements
author Frank Benoit <benoit@tionex.de>
date Mon, 03 Nov 2008 22:52:26 +0100
parents 07f3bab17e54
children 0ea0c9f9008f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
152
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 module packageimport;
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 import tango.io.FilePath;
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 import tango.io.File;
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 import tango.io.Buffer;
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 import tango.io.stream.FileStream;
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 import tango.io.stream.TextFileStream;
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 import tango.util.log.Trace;
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 import tango.text.Regex;
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 import tango.text.Util;
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 import tango.text.stream.LineIterator;
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 import tango.text.convert.Format;
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14 void processDir( char[] dir ){
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15 auto pack = dir.dup.replace( '/', '.' );
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16 auto fp = FilePath(dir);
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17 char[][] mods;
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18 // read all module names
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19 foreach( fileinfo; fp ){
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 if( fileinfo.folder ){
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 processDir( fileinfo.path ~ fileinfo.name );
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 continue;
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 }
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 if( fileinfo.name.length > 2 && fileinfo.name[ $-2 .. $ ] == ".d" ){
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 mods ~= fileinfo.name.dup;
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 }
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 }
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 // foreach module
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 foreach( mod; mods ){
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 auto filename = Format("{}/{}", dir, mod );
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 auto cont = cast(char[])File( filename ).read;
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 char[][] lines = cont.splitLines();
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 int modLine = -1;
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 foreach( uint idx, char[] line; lines ){
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 if( line.length && line.locatePattern( "module dwtx" ) is 0 ){
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 //Trace.formatln( "mod: {} {}", idx, line );
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 modLine = idx;
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 break;
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 }
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 }
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 int impLine = -1;
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 foreach( uint idx, char[] line; lines ){
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 if( line.length && line.locatePattern( "import dwtx" ) is 0 ){
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 //Trace.formatln( "imp: {} {}", idx, line );
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 impLine = idx;
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 break;
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 }
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 }
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 assert( modLine !is -1 );
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 assert( impLine !is -1 );
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51 if( modLine > impLine ){
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 Trace.formatln( "{} {} {} {}", filename, modLine, impLine, lines.length );
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 auto moddecl = lines[ modLine .. modLine + 2 ].dup;
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 for( int i = modLine; i >= impLine+1; i-- ){
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55 lines[i+1] = lines[i-1];
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 }
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 lines[ impLine .. impLine+2 ] = moddecl;
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 auto output = new TextFileOutput( filename );
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 bool first = true;
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 foreach( line; lines ){
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 if( !first ){
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 output.write( \n );
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 }
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 first = false;
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 output.write( line );
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 }
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 output.flush();
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 output.close();
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 }
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 }
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 // read content into buffer
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 // search module statement and print to outfile
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 // write package imports
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 // write all remaining lines
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 }
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 void main(){
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 processDir( "dwtx/text" );
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79 processDir( "dwtx/jface/text" );
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 processDir( "dwtx/jface/internal/text" );
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81 }
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86
07f3bab17e54 fixmodules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87