Created
January 7, 2014 17:33
-
-
Save long-long-float/8303087 to your computer and use it in GitHub Desktop.
convert C++ to UMLet
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function join(c){ | |
var ret = new Array(); | |
for(var i = 1;i < arguments.length;i++){ | |
ret.push(arguments[i]); | |
} | |
return ret.join(c); | |
} | |
var args = WScript.Arguments; | |
if(args.length < 1){ | |
WScript.Echo("Error!"); | |
WScript.Quit(); | |
} | |
var FS = new ActiveXObject("Scripting.FileSystemObject"); | |
//Open Mode | |
var FORREADING = 1; | |
var FORWRITING = 2; | |
var FORAPPENDING = 8; | |
//File Type | |
var TRISTATE_TRUE = -1; | |
var TRISTATE_FALSE = 0; | |
var TRISTATE_USEDEFAULT = -2; | |
for(var arg_index = 0;arg_index < args.length;arg_index++){ | |
var fname = args(arg_index); | |
var infile = FS.OpenTextFile(fname, FORREADING, false, TRISTATE_FALSE); | |
var outfile = FS.OpenTextFile(fname + "_out.txt", FORWRITING, true, TRISTATE_FALSE); | |
var visibility = "-"; | |
var classname = ""; | |
var fields = new Array(); | |
var methods = new Array(); | |
while(!infile.AtEndOfStream){ | |
var line = infile.ReadLine(); | |
var fixes = {"virtual " : "/", "static " : "_", "" : ""}; | |
var tokens; | |
if(tokens = line.match(/class (\w+)/)){ | |
classname = tokens[1]; | |
} | |
//private | |
else if(line.indexOf("private:") != -1){ | |
visibility = "-"; | |
} | |
//public | |
else if(line.indexOf("public:") != -1){ | |
visibility = "+"; | |
} | |
//protected | |
else if(line.indexOf("protected:") != -1){ | |
visibility = "#"; | |
} | |
//method | |
else if(tokens = line.match(/(virtual |static |)(\w+) (\w+)\(([\w, ]*)\);/)){ | |
var fix = fixes[tokens[1]]; | |
var ret_type = tokens[2]; | |
var name = tokens[3]; | |
var arg = tokens[4].replace(/(\w+) (\w+)/g, function($1, $2, $3){ return $3 + " : " + $2; }); | |
var s = join(" ", fix, visibility, name + "(" + arg + ")", ":", ret_type, fix); | |
methods.push(s); | |
} | |
//field | |
else if(tokens = line.match(/(|static |)(\w+) (\w+);/)){ | |
var fix = fixes[tokens[1]]; | |
var type = tokens[2]; | |
var name = tokens[3]; | |
var s = join(" ", fix, visibility, name, ":", type, fix); | |
fields.push(s); | |
} | |
else{ | |
//WScript.Echo("no matches"); | |
} | |
} | |
outfile.WriteLine(classname); | |
if(fields.length > 0) outfile.WriteLine("--"); | |
for(var i = 0;i < fields.length;i++) outfile.WriteLine(fields[i]); | |
if(methods.length > 0) outfile.WriteLine("--"); | |
for(var i = 0;i < methods.length;i++) outfile.WriteLine(methods[i]); | |
infile.Close(); | |
infile = null; | |
outfile.Close(); | |
outfile = null; | |
} | |
WScript.Echo("finish"); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment