Class: LB::Project::View

Inherits:
Dry::View::Controller
  • Object
show all
Defined in:
lib/lb/project/view.rb

Overview

Base view

Direct Known Subclasses

Page

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#siteObject (readonly)

Returns the value of attribute site.



14
15
16
# File 'lib/lb/project/view.rb', line 14

def site
  @site
end

Class Method Details

.setup(view, layout = 'main') ⇒ Object



9
10
11
12
# File 'lib/lb/project/view.rb', line 9

def self.setup(view, layout = 'main')
  view.setting :paths, [LB::Project.template_path]
  view.setting :layout, layout
end

Instance Method Details

#render(locals = {}) ⇒ Object



28
29
30
# File 'lib/lb/project/view.rb', line 28

def render(locals = {})
  render_with(site, self, locals)
end

#render_with(site, page, locals = {}) ⇒ Object



32
33
34
# File 'lib/lb/project/view.rb', line 32

def render_with(site, page, locals = {})
  call(with_context(site, page, locals))
end

#view(name, overrides = {}) ⇒ Object



21
22
23
24
25
26
# File 'lib/lb/project/view.rb', line 21

def view(name, overrides = {})
  LB::Project::View.view_registry[name]
                   .new
                   .with(overrides.merge(site: site))
                   .render
end

#with(options) ⇒ Object



16
17
18
19
# File 'lib/lb/project/view.rb', line 16

def with(options)
  @site = options.fetch(:site, LB::Project.settings.site.new)
  self
end

#with_context(site, page, locals = {}) ⇒ Object



36
37
38
39
40
41
# File 'lib/lb/project/view.rb', line 36

def with_context(site, page, locals = {})
  {
    context: ::Struct.new(:site, :page).new(site, page),
    locals: locals
  }
end