Fixed indentation

This commit is contained in:
Hackerpilot 2013-07-31 23:05:47 +00:00
parent c0994dc792
commit 757c4dbb2d
1 changed files with 47 additions and 47 deletions

94
ctags.d
View File

@ -17,25 +17,25 @@ void doNothing(string, int, int, string) {}
void printCtags(File output, string[] fileNames) void printCtags(File output, string[] fileNames)
{ {
string[] tags; string[] tags;
foreach (fileName; fileNames) foreach (fileName; fileNames)
{ {
File f = File(fileName); File f = File(fileName);
auto bytes = uninitializedArray!(ubyte[])(f.size); auto bytes = uninitializedArray!(ubyte[])(f.size);
f.rawRead(bytes); f.rawRead(bytes);
LexerConfig config; LexerConfig config;
auto tokens = byToken(bytes, config); auto tokens = byToken(bytes, config);
Module m = parseModule(tokens.array(), fileName, &doNothing); Module m = parseModule(tokens.array(), fileName, &doNothing);
auto printer = new CTagsPrinter; auto printer = new CTagsPrinter;
printer.fileName = fileName; printer.fileName = fileName;
printer.visit(m); printer.visit(m);
tags ~= printer.tagLines; tags ~= printer.tagLines;
} }
output.write("!_TAG_FILE_FORMAT\t2\n" output.write("!_TAG_FILE_FORMAT\t2\n"
~ "!_TAG_FILE_SORTED\t1\n" ~ "!_TAG_FILE_SORTED\t1\n"
~ "!_TAG_FILE_AUTHOR\tBrian Schott\n" ~ "!_TAG_FILE_AUTHOR\tBrian Schott\n"
~ "!_TAG_PROGRAM_URL\thttps://github.com/Hackerpilot/Dscanner/\n"); ~ "!_TAG_PROGRAM_URL\thttps://github.com/Hackerpilot/Dscanner/\n");
tags.sort().copy(output.lockingTextWriter); tags.sort().copy(output.lockingTextWriter);
} }
class CTagsPrinter : ASTVisitor class CTagsPrinter : ASTVisitor
@ -46,47 +46,47 @@ class CTagsPrinter : ASTVisitor
override void visit(ClassDeclaration dec) override void visit(ClassDeclaration dec)
{ {
tagLines ~= "%s\t%s\t%d;\"\tc%s\n".format(dec.name.value, fileName, dec.name.line, context); tagLines ~= "%s\t%s\t%d;\"\tc%s\n".format(dec.name.value, fileName, dec.name.line, context);
auto c = context; auto c = context;
context = "\tclass:" ~ dec.name.value; context = "\tclass:" ~ dec.name.value;
dec.accept(this); dec.accept(this);
context = c; context = c;
} }
override void visit(StructDeclaration dec) override void visit(StructDeclaration dec)
{ {
tagLines ~= "%s\t%s\t%d;\"\ts%s\n".format(dec.name.value, fileName, dec.name.line, context); tagLines ~= "%s\t%s\t%d;\"\ts%s\n".format(dec.name.value, fileName, dec.name.line, context);
auto c = context; auto c = context;
context = "\tstruct:" ~ dec.name.value; context = "\tstruct:" ~ dec.name.value;
dec.accept(this); dec.accept(this);
context = c; context = c;
} }
override void visit(InterfaceDeclaration dec) override void visit(InterfaceDeclaration dec)
{ {
tagLines ~= "%s\t%s\t%d;\"\ti%s\n".format(dec.name.value, fileName, dec.name.line, context); tagLines ~= "%s\t%s\t%d;\"\ti%s\n".format(dec.name.value, fileName, dec.name.line, context);
auto c = context; auto c = context;
context = "\tclass:" ~ dec.name.value; context = "\tclass:" ~ dec.name.value;
dec.accept(this); dec.accept(this);
context = c; context = c;
} }
override void visit(TemplateDeclaration dec) override void visit(TemplateDeclaration dec)
{ {
tagLines ~= "%s\t%s\t%d;\"\tT%s\n".format(dec.name.value, fileName, dec.name.line, context); tagLines ~= "%s\t%s\t%d;\"\tT%s\n".format(dec.name.value, fileName, dec.name.line, context);
auto c = context; auto c = context;
context = "\ttemplate:" ~ dec.name.value; context = "\ttemplate:" ~ dec.name.value;
dec.accept(this); dec.accept(this);
context = c; context = c;
} }
override void visit(FunctionDeclaration dec) override void visit(FunctionDeclaration dec)
{ {
tagLines ~= "%s\t%s\t%d;\"\tf\tarity:%d%s\n".format(dec.name.value, fileName, tagLines ~= "%s\t%s\t%d;\"\tf\tarity:%d%s\n".format(dec.name.value, fileName,
dec.name.line, dec.parameters.parameters.length, context); dec.name.line, dec.parameters.parameters.length, context);
auto c = context; auto c = context;
context = "\tfunction:" ~ dec.name.value; context = "\tfunction:" ~ dec.name.value;
dec.accept(this); dec.accept(this);
context = c; context = c;
} }
override void visit(EnumDeclaration dec) override void visit(EnumDeclaration dec)
@ -97,11 +97,11 @@ class CTagsPrinter : ASTVisitor
return; return;
} }
tagLines ~= "%s\t%s\t%d;\"\tg%s\n".format(dec.name.value, fileName, tagLines ~= "%s\t%s\t%d;\"\tg%s\n".format(dec.name.value, fileName,
dec.name.line, context); dec.name.line, context);
auto c = context; auto c = context;
context = "\tenum:" ~ dec.name.value; context = "\tenum:" ~ dec.name.value;
dec.accept(this); dec.accept(this);
context = c; context = c;
} }
override void visit(UnionDeclaration dec) override void visit(UnionDeclaration dec)
@ -112,31 +112,31 @@ class CTagsPrinter : ASTVisitor
return; return;
} }
tagLines ~= "%s\t%s\t%d;\"\tu%s\n".format(dec.name.value, fileName, tagLines ~= "%s\t%s\t%d;\"\tu%s\n".format(dec.name.value, fileName,
dec.name.line, context); dec.name.line, context);
auto c = context; auto c = context;
context = "\tunion:" ~ dec.name.value; context = "\tunion:" ~ dec.name.value;
dec.accept(this); dec.accept(this);
context = c; context = c;
} }
override void visit(EnumMember mem) override void visit(EnumMember mem)
{ {
tagLines ~= "%s\t%s\t%d;\"\te%s\n".format(mem.name.value, fileName, tagLines ~= "%s\t%s\t%d;\"\te%s\n".format(mem.name.value, fileName,
mem.name.line, context); mem.name.line, context);
} }
override void visit(VariableDeclaration dec) override void visit(VariableDeclaration dec)
{ {
foreach (d; dec.declarators) foreach (d; dec.declarators)
{ {
tagLines ~= "%s\t%s\t%d;\"\tv%s\n".format(d.name.value, fileName, tagLines ~= "%s\t%s\t%d;\"\tv%s\n".format(d.name.value, fileName,
d.name.line, context); d.name.line, context);
} }
dec.accept(this); dec.accept(this);
} }
string fileName; string fileName;
string[] tagLines; string[] tagLines;
int suppressDepth; int suppressDepth;
string context; string context;
} }