aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Peek <josh@joshpeek.com>2012-07-23 12:17:32 -0500
committerJoshua Peek <josh@joshpeek.com>2012-07-23 12:17:32 -0500
commitb7f58d96cbc5ff4c2954976f65adbf18930ce810 (patch)
treebe693deb3a8841e2055bf12c030f3c9ef9ed5b8e
parentd6fb95b06f960e4cd11cf0aeadfd1a0c52cba060 (diff)
Compare md5s of dbs
-rw-r--r--lib/linguist/classifier.rb26
-rw-r--r--test/test_classifier.rb6
2 files changed, 18 insertions, 14 deletions
diff --git a/lib/linguist/classifier.rb b/lib/linguist/classifier.rb
index 7a348aa..843ffa3 100644
--- a/lib/linguist/classifier.rb
+++ b/lib/linguist/classifier.rb
@@ -29,19 +29,6 @@ module Linguist
@languages = attrs['languages'] || {}
end
- # Public: Compare Classifier objects.
- #
- # other - Classifier object to compare to.
- #
- # Returns Boolean.
- def eql?(other)
- # Lazy fast check counts only
- other.is_a?(self.class) &&
- @tokens_total == other.instance_variable_get(:@tokens_total) &&
- @languages_total == other.instance_variable_get(:@languages_total)
- end
- alias_method :==, :eql?
-
# Public: Train classifier that data is a certain language.
#
# language - String language of data
@@ -146,6 +133,19 @@ module Linguist
Math.log(@languages[language].to_f / @languages_total.to_f)
end
+ # Public: Returns serializable hash representation.
+ #
+ # Returns Hash.
+ def to_hash
+ {
+ 'tokens_total' => @tokens_total,
+ 'languages_total' => @languages_total,
+ 'tokens' => @tokens,
+ 'language_tokens' => @language_tokens,
+ 'languages' => @languages
+ }
+ end
+
# Public: Serialize classifier to YAML.
#
# opts - Hash of YAML options.
diff --git a/test/test_classifier.rb b/test/test_classifier.rb
index 80df7e7..0571f85 100644
--- a/test/test_classifier.rb
+++ b/test/test_classifier.rb
@@ -2,6 +2,7 @@ require 'linguist/classifier'
require 'linguist/language'
require 'linguist/sample'
require 'linguist/tokenizer'
+require 'linguist/md5'
require 'test/unit'
@@ -17,8 +18,11 @@ class TestClassifier < Test::Unit::TestCase
end
def test_instance_freshness
+ serialized = Linguist::MD5.hexdigest(Classifier.instance.to_hash)
+ latest = Linguist::MD5.hexdigest(Linguist::Sample.classifier.to_hash)
+
# Just warn, it shouldn't scare people off by breaking the build.
- unless Classifier.instance.eql?(Linguist::Sample.classifier)
+ if serialized != latest
warn "Classifier database is out of date. Run `bundle exec rake classifier`."
end
end