Method: Zxcvbn::Feedback.get_feedback

Defined in:
lib/zxcvbn/feedback.rb

.get_feedback(score, sequence) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/zxcvbn/feedback.rb', line 10

def self.get_feedback(score, sequence)
  if sequence.empty?
    # starting feedback
    return DEFAULT_FEEDBACK
  end

  # no feedback if score is good or great.
  if score > 2
    return {
      "warning" => "",
      "suggestions" => []
    }
  end

  longest_match = sequence.max_by { |match| match["token"].length }
  feedback = get_match_feedback(longest_match, sequence.size == 1)
  extra_feedback = "Add another word or two. Uncommon words are better."
  if feedback
    feedback["suggestions"].unshift(extra_feedback)
    feedback["warning"] = "" if feedback["warning"].nil?
  else
    feedback = {
      "warning" => "",
      "suggestions" => [extra_feedback]
    }
  end
  feedback
end