diff options
Diffstat (limited to 'src/stat_cache.cc')
-rw-r--r-- | src/stat_cache.cc | 18 |
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; |