Class: StudFinder::Gate

Inherits:
Object
  • Object
show all
Defined in:
lib/stud_finder/gate.rb

Defined Under Namespace

Classes: Error, Finding, Result

Constant Summary collapse

CHECKS =
%w[trunk_touched low_evidence_high_score newness_trunk_adjacent].freeze
HIGH_SCORE_THRESHOLD =
0.75
LOW_EVIDENCE_THRESHOLD =
0.50

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(json) ⇒ Gate

Returns a new instance of Gate.



28
29
30
31
32
# File 'lib/stud_finder/gate.rb', line 28

def initialize(json)
  @payload = JSON.parse(json)
rescue JSON::ParserError => e
  raise Error, "Error: invalid JSON input: #{e.message}"
end

Class Method Details

.call(json) ⇒ Object



24
25
26
# File 'lib/stud_finder/gate.rb', line 24

def self.call(json)
  new(json).call
end

.markdown(result, enforce: false) ⇒ Object



45
46
47
# File 'lib/stud_finder/gate.rb', line 45

def self.markdown(result, enforce: false)
  (markdown_header(result, enforce: enforce) + markdown_summary(result) + markdown_details(result)).join("\n")
end

Instance Method Details

#callObject



34
35
36
37
38
39
40
41
42
43
# File 'lib/stud_finder/gate.rb', line 34

def call
  rows = Array(@payload.fetch('ruby', [])) + Array(@payload.fetch('javascript', []))
  Result.new(
    checks: {
      'trunk_touched' => trunk_touched(rows),
      'low_evidence_high_score' => low_evidence_high_score(rows),
      'newness_trunk_adjacent' => newness_trunk_adjacent(rows)
    }
  )
end