Changeset 375

Show
Ignore:
Timestamp:
07/04/08 08:02:59 (5 months ago)
Author:
FeepingCreature
Message:
  • Java support added
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/redimple/dsss.conf

    r373 r375  
    11name=redimple 
    22[redimple.d] 
     3buildflags=-g 
  • trunk/redimple/redimple.d

    r374 r375  
    110110} 
    111111 
     112bool java_mode; 
     113 
    112114string modToFile(string mod) { 
    113115  auto res=mod.replace(".", "/"); 
    114   return res~".d"; 
     116  if (java_mode) return res~".java"; 
     117  else return res~".d"; 
    115118} 
    116119 
     
    119122void log(char[] l) { } 
    120123 
     124Graph!(string) genJavaImportsGraph(char[] mod, excluder xc) { 
     125  auto files = listdir(".", "*.java") /map/ (string s) { return s[s.rfind("/")+1 .. $].endsWith(".java"); } 
     126  /select/ (string s) { return xc("", s); }; 
     127  auto res = new Graph!(string); 
     128  foreach (string file; files) { 
     129    res.addNode(file); 
     130  } 
     131  foreach (string file; files) { 
     132    auto data = cast(string) (file~".java").read(); 
     133    foreach (string file2; files) { 
     134      if (file2 == file) continue; 
     135      if (data.find(file2) != -1) { 
     136        res.addEdge(file, file2); 
     137      } 
     138    } 
     139  } 
     140  return res; 
     141} 
     142 
    121143Graph!(string) genImportsGraph(char[] mod, excluder xc, bool incExtNodes=false) { 
     144  if (java_mode) return genJavaImportsGraph(mod, xc); 
    122145  auto res=new Graph!(string); 
    123146  string[] scanned; 
     
    199222    if (pos==-1) return false; 
    200223    return (letters~digits~"_").find(s[pos-1])==-1; 
    201   } /map/ (string s) { return s[s.find("class ")+6..$]; } /uniq; 
    202   char[] res="shape=record, style="~quote("rounded, filled")~", label="~'"'~(leftright?"{":"")~"{ { "~mod.rmPkg()~" } "; 
     224  } /map/ (string s) { return s[s.find("class ")+6..$]; } /map/ &strip 
     225  /select/ (string s) { return s != mod; } /uniq; 
     226  char[] res; 
     227  if (classes.length) res="shape=record, style="~quote("rounded, filled")~", label="~'"'~(leftright?"{":"")~"{ { "~mod.rmPkg()~" } "; 
     228  else res="shape=record, style="~quote("rounded, filled")~", label=\""~mod.rmPkg(); 
    203229  string[] splitSkipBrackets(string inp, char sep) { 
    204230    size_t bracketlevel=0; 
     
    221247    res~=" | { "~entry~(supers /map/ (string s) { return " | "~s; } /reduce(""[])/ ex!("e, f -> e~f"))~" } "; 
    222248  } 
    223   return res~"}"~(leftright?"}":"")~'"'; 
     249  if (classes.length) return res~"}"~(leftright?"}":"")~'"'; 
     250  else return res ~ "\""; 
    224251} 
    225252 
     
    237264  char[] startmod=args[0]; args = args[1 .. $]; 
    238265  auto xc=new PExcluder; 
    239   foreach (arg; args) if (arg.length>2&&arg[0..2]=="-x") xc.add(arg[2..$]); 
    240   foreach (arg; args) if (arg.length==3&&arg=="-lr") leftright=true; 
     266  foreach (arg; args) { 
     267    if (auto rest = arg.startsWith("-x")) xc.add(rest); 
     268    if (arg == "-java") java_mode = true; 
     269    if (arg=="-lr") leftright=true; 
     270  } 
    241271  writefln("Digraph G { graph [concentrate=true, remincross=true, labeljust=l, ratio=compress, nodesep=0.2, "~(leftright?"rankdir=LR, ":"")~"fontname=Helvetica];"); 
    242272  writefln(" node [ fontname=Helvetica ]; ");