34 lines
926 B
D
34 lines
926 B
D
import std.stdio, std.algorithm, std.string, std.file, std.regex;
|
|
|
|
void main() {
|
|
string[][string] index;
|
|
|
|
void parseFile(in string fn) {
|
|
if (!exists(fn) || !isFile(fn))
|
|
throw new Exception("File not found");
|
|
|
|
foreach (word; readText(fn).splitter(regex(r"\W"))) {
|
|
word = word.toLower();
|
|
if (!index.get(word, null).canFind(fn))
|
|
index[word] ~= fn;
|
|
}
|
|
}
|
|
|
|
immutable fileNames = ["inv1.txt", "inv2.txt", "inv3.txt"];
|
|
foreach (fName; fileNames)
|
|
parseFile(fName);
|
|
|
|
while (true) {
|
|
writef("\nEnter a word to search for: (q to quit): ");
|
|
immutable w = readln().strip().toLower();
|
|
if (w == "q") {
|
|
writeln("quitting.");
|
|
break;
|
|
}
|
|
if (w in index)
|
|
writefln("'%s' found in%( %).", w, index[w]);
|
|
else
|
|
writefln("'%s' not found.", w);
|
|
}
|
|
}
|