summaryrefslogtreecommitdiffstats
path: root/src/stat_cache.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/stat_cache.cc')
-rw-r--r--src/stat_cache.cc18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/stat_cache.cc b/src/stat_cache.cc
index 3309837..368f545 100644
--- a/src/stat_cache.cc
+++ b/src/stat_cache.cc
@@ -16,6 +16,7 @@
#include <stdio.h>
+#include "edit_distance.h"
#include "graph.h"
FileStat* StatCache::GetFile(const std::string& path) {
@@ -27,6 +28,23 @@ FileStat* StatCache::GetFile(const std::string& path) {
return file;
}
+FileStat* StatCache::SpellcheckFile(const std::string& path) {
+ const bool kAllowReplacements = true;
+ const int kMaxValidEditDistance = 3;
+
+ int min_distance = kMaxValidEditDistance + 1;
+ FileStat* result = NULL;
+ for (Paths::iterator i = paths_.begin(); i != paths_.end(); ++i) {
+ int distance = EditDistance(
+ i->first, path, kAllowReplacements, kMaxValidEditDistance);
+ if (distance < min_distance && i->second->node_) {
+ min_distance = distance;
+ result = i->second;
+ }
+ }
+ return result;
+}
+
void StatCache::Dump() {
for (Paths::iterator i = paths_.begin(); i != paths_.end(); ++i) {
FileStat* file = i->second;