diff --git a/main.d b/main.d index 473ecb2..c62a4fd 100644 --- a/main.d +++ b/main.d @@ -258,30 +258,31 @@ int main(string[] args) if (ctags) { + stdout.writeln("!_TAG_FILE_FORMAT 2"); + stdout.writeln("!_TAG_FILE_SORTED 1"); + stdout.writeln("!_TAG_PROGRAM_URL https://github.com/Hackerpilot/Dscanner/"); if (!recursiveCtags) { auto tokens = tokenize(readText(args[1])); auto mod = parseModule(tokens); - mod.writeCtagsTo(stdout, args[1]); + foreach (tag; mod.getCtags(args[1])) + stdout.writeln(tag); } else { - Module m; + string[] allTags; foreach (dirEntry; dirEntries(args[1], SpanMode.breadth)) { if (!dirEntry.name.endsWith(".d", ".di")) continue; stderr.writeln("Generating tags for ", dirEntry.name); auto tokens = tokenize(readText(dirEntry.name)); - if (m is null) - m = parseModule(tokens); - else - { - auto mod = parseModule(tokens); - m.merge(mod); - } + auto mod = parseModule(tokens); + allTags ~= mod.getCtags(dirEntry.name); } - m.writeCtagsTo(stdout, ""); + allTags.sort(); + foreach (tag; allTags) + stdout.writeln(tag); } } return 0; diff --git a/types.d b/types.d index 1e5f776..9db510b 100644 --- a/types.d +++ b/types.d @@ -559,7 +559,7 @@ public: /** * Standards: http://ctags.sourceforge.net/FORMAT */ - void writeCtagsTo(File file, string fileName) + string[] getCtags(string fileName) { string[] tags; foreach (Enum e; enums) @@ -589,15 +589,7 @@ public: { tags ~= s.getCtags(fileName); } - - sort(tags); - file.writeln("!_TAG_FILE_FORMAT 2"); - file.writeln("!_TAG_FILE_SORTED 1"); - file.writeln("!_TAG_PROGRAM_URL https://github.com/Hackerpilot/Dscanner/"); - foreach (tag; tags) - { - file.writeln(tag); - } + return tags; } }