158
|
1 module packageimport;
|
|
2
|
|
3 import tango.io.FilePath;
|
|
4 import tango.io.File;
|
|
5 import tango.io.Buffer;
|
|
6 import tango.io.stream.FileStream;
|
|
7 import tango.io.stream.TextFileStream;
|
|
8 import tango.util.log.Trace;
|
|
9 import tango.text.Regex;
|
|
10 import tango.text.Util;
|
|
11 import tango.text.stream.LineIterator;
|
|
12 import tango.text.convert.Format;
|
|
13
|
|
14 const char[][] javaimps = [
|
|
15 "import java.util.ArrayList;",
|
|
16 "import java.util.Arrays;",
|
|
17 "import java.util.Collection;",
|
|
18 "import java.util.Collections;",
|
|
19 "import java.util.HashMap;",
|
|
20 "import java.util.HashSet;",
|
|
21 "import java.util.IdentityHashMap;",
|
|
22 "import java.util.Iterator;",
|
|
23 "import java.util.LinkedHashMap;",
|
|
24 "import java.util.LinkedList;",
|
|
25 "import java.util.List;",
|
|
26 "import java.util.ListIterator;",
|
|
27 "import java.util.Map;",
|
|
28 "import java.util.Map.Entry;",
|
|
29 "import java.util.Set;",
|
|
30 "import java.util.Comparator;",
|
|
31 "import java.util.Stack;"
|
|
32 ];
|
|
33 void processDir( char[] dir ){
|
|
34 auto pack = dir.dup.replace( '/', '.' );
|
|
35 auto fp = FilePath(dir);
|
|
36 char[][] mods;
|
|
37 // read all module names
|
|
38 foreach( fileinfo; fp ){
|
|
39 if( fileinfo.folder ){
|
|
40 processDir( fileinfo.path ~ fileinfo.name );
|
|
41 continue;
|
|
42 }
|
|
43 if( fileinfo.name.length > 2 && fileinfo.name[ $-2 .. $ ] == ".d" ){
|
|
44 mods ~= fileinfo.name.dup;
|
|
45 }
|
|
46 }
|
|
47 // foreach module
|
|
48 foreach( mod; mods ){
|
|
49 auto filename = Format("{}/{}", dir, mod );
|
|
50 auto cont = cast(char[])File( filename ).read;
|
|
51 char[][] lines = cont.splitLines();
|
|
52 char[][] outlines = lines.dup;
|
|
53 bool found = true;
|
|
54 foreach( uint idx, char[] line; lines ){
|
|
55 foreach( javaimp; javaimps ){
|
|
56 if( line == javaimp ){
|
|
57 outlines[idx] = found ? "import dwtx.dwtxhelper.Collection;" : "";
|
|
58 found = false;
|
|
59 }
|
|
60 }
|
|
61 }
|
|
62 if( !found ){
|
|
63 Trace.formatln( "{} ", filename );
|
|
64 bool first = true;
|
|
65 auto output = new TextFileOutput( filename );
|
|
66 foreach( line; outlines ){
|
|
67 if( !first ){
|
|
68 output.write( \n );
|
|
69 }
|
|
70 first = false;
|
|
71 output.write( line );
|
|
72 }
|
|
73 output.flush();
|
|
74 output.close();
|
|
75 }
|
|
76 }
|
|
77 // read content into buffer
|
|
78 // search module statement and print to outfile
|
|
79 // write package imports
|
|
80 // write all remaining lines
|
|
81 }
|
|
82
|
|
83 void main(){
|
|
84 processDir( "dwtx/text" );
|
|
85 processDir( "dwtx/jface/text" );
|
|
86 processDir( "dwtx/jface/internal/text" );
|
|
87 }
|
|
88
|
|
89
|
|
90
|
|
91
|
|
92
|
|
93
|