Class: Docforge::Brief

Inherits:
Object
  • Object
show all
Defined in:
lib/docforge/brief.rb

Overview

Typed wrapper around the JSON payload the model returns. Gives the renderer a consistent API and lets us validate up front instead of crashing mid-render with a NoMethodError on ‘nil`.

Constant Summary collapse

REQUIRED_KEYS =
%w[
  title value_statement problem_paragraph
  capabilities worked_example design_decisions
  why_hard_paragraph capabilities_table
  sharable
].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ Brief

Returns a new instance of Brief.



17
18
19
20
# File 'lib/docforge/brief.rb', line 17

def initialize(data)
  @data = data
  validate!
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



15
16
17
# File 'lib/docforge/brief.rb', line 15

def data
  @data
end

Instance Method Details

#capabilitiesObject



27
# File 'lib/docforge/brief.rb', line 27

def capabilities;      @data["capabilities"] || []; end

#capabilities_tableObject



31
# File 'lib/docforge/brief.rb', line 31

def capabilities_table; @data["capabilities_table"] || []; end

#design_decisionsObject



29
# File 'lib/docforge/brief.rb', line 29

def design_decisions;  @data["design_decisions"] || []; end

#future_extensionsObject



33
# File 'lib/docforge/brief.rb', line 33

def future_extensions; @data["future_extensions"] || []; end

#metadataObject



25
# File 'lib/docforge/brief.rb', line 25

def ;          @data["metadata"] || {}; end

#numbersObject



32
# File 'lib/docforge/brief.rb', line 32

def numbers;           @data["numbers"] || []; end

#problemObject



26
# File 'lib/docforge/brief.rb', line 26

def problem;           @data["problem_paragraph"]; end

#pull_quote_italicObject



24
# File 'lib/docforge/brief.rb', line 24

def pull_quote_italic; @data["pull_quote_italic"]; end

#sharableObject



35
# File 'lib/docforge/brief.rb', line 35

def sharable;          @data["sharable"] || {}; end

#stack_and_creditsObject



34
# File 'lib/docforge/brief.rb', line 34

def stack_and_credits; @data["stack_and_credits"] || {}; end

#titleObject



22
# File 'lib/docforge/brief.rb', line 22

def title;             @data["title"]; end

#value_statementObject



23
# File 'lib/docforge/brief.rb', line 23

def value_statement;   @data["value_statement"]; end

#why_hardObject



30
# File 'lib/docforge/brief.rb', line 30

def why_hard;          @data["why_hard_paragraph"]; end

#worked_exampleObject



28
# File 'lib/docforge/brief.rb', line 28

def worked_example;    @data["worked_example"] || {}; end