Module: Yano::Lenient
- Defined in:
- lib/yano/lenient.rb
Constant Summary collapse
- 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 }
Class Method Summary collapse
- .check_lenient_values(val) ⇒ Object
- .get_no_match_score(val) ⇒ Object
- .get_yes_match_score(val) ⇒ Object
Class Method Details
.check_lenient_values(val) ⇒ Object
79 80 81 82 |
# File 'lib/yano/lenient.rb', line 79 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 |
.get_no_match_score(val) ⇒ Object
70 71 72 73 74 75 76 77 |
# File 'lib/yano/lenient.rb', line 70 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 |
.get_yes_match_score(val) ⇒ Object
61 62 63 64 65 66 67 68 |
# File 'lib/yano/lenient.rb', line 61 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 |