Class: Fatty::View

Inherits:
Object
  • Object
show all
Defined in:
lib/fatty/view.rb

Direct Known Subclasses

AlertView, CursorView, InputView, OutputView, StatusView

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id: nil, z: 0, log: false) ⇒ View

Returns a new instance of View.



7
8
9
10
11
# File 'lib/fatty/view.rb', line 7

def initialize(id: nil, z: 0, log: false)
  @id = (id || self.class.name.split("::").last).to_s
  @z  = Integer(z)
  @log = !!log
end

Instance Attribute Details

#idObject (readonly)

Returns the value of attribute id.



5
6
7
# File 'lib/fatty/view.rb', line 5

def id
  @id
end

#zObject (readonly)

Returns the value of attribute z.



5
6
7
# File 'lib/fatty/view.rb', line 5

def z
  @z
end

Instance Method Details

#draw(screen:, renderer:, terminal:, session:) ⇒ Object

Raises:

  • (NotImplementedError)


29
30
31
# File 'lib/fatty/view.rb', line 29

def draw(screen:, renderer:, terminal:, session:)
  raise NotImplementedError, "#{self.class} must implement #draw"
end

#render(screen:, renderer:, terminal:, session:) ⇒ Object

Render wrapper: logs once, then delegates to #draw. Subclasses implement #draw.



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/fatty/view.rb', line 15

def render(screen:, renderer:, terminal:, session:)
  if @log
    Fatty.debug(
      "View#render",
      tag: :render,
      view: id,
      z: z,
      session: session.respond_to?(:id) ? session.id : session.class.name,
    )
  end

  draw(screen:, renderer:, terminal:, session:)
end