Sha256: 40498f269012436136754f343a33a1c8f26be434e50528480f0d477dd3990191
Contents?: true
Size: 1.64 KB
Versions: 3
Compression:
Stored size: 1.64 KB
Contents
module Yano module Lenient YES_MATCH_SCORE_THRESHOLD = 2 NO_MATCH_SCORE_THRESHOLD = 1.25 Y_MATCH = { '5' => 0.25, '6' => 0.25, '7' => 0.25, 't' => 0.75, 'y' => 1, 'u' => 0.75, 'g' => 0.25, 'h' => 0.25, 'k' => 0.25 } E_MATCH = { '2' => 0.25, '3' => 0.25, '4' => 0.25, 'w' => 0.75, 'e' => 1, 'r' => 0.75, 's' => 0.25, 'd' => 0.25, 'f' => 0.25 } S_MATCH = { 'q' => 0.25, 'w' => 0.25, 'e' => 0.25, 'a' => 0.75, 's' => 1, 'd' => 0.75, 'z' => 0.25, 'x' => 0.25, 'c' => 0.25 } N_MATCH = { 'h' => 0.25, 'j' => 0.25, 'k' => 0.25, 'b' => 0.75, 'n' => 1, 'm' => 0.75 } O_MATCH = { '9' => 0.25, '0' => 0.25, 'i' => 0.75, 'o' => 1, 'p' => 0.75, 'k' => 0.25, 'l' => 0.25 } def self.get_yes_match_score(val) y, e, s = val[0], val[1], val[2] [].tap do |score| score << (Y_MATCH.key?(y) ? Y_MATCH[y] : 0) score << (E_MATCH.key?(e) ? E_MATCH[e] : 0) score << (S_MATCH.key?(s) ? S_MATCH[s] : 0) end.reduce(:+) end def self.get_no_match_score(val) n, o = val[0], val[1] [].tap do |score| score << (N_MATCH.key?(n) ? N_MATCH[n] : 0) score << (O_MATCH.key?(o) ? O_MATCH[o] : 0) end.reduce(:+) end def self.check_lenient_values(val) return true if get_yes_match_score(val) >= YES_MATCH_SCORE_THRESHOLD return false if get_no_match_score(val) >= NO_MATCH_SCORE_THRESHOLD end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
yano-0.1.2 | lib/yano/lenient.rb |
yano-0.1.1 | lib/yano/lenient.rb |
yano-0.1.0 | lib/yano/lenient.rb |