Completed
Branch master (e351fa)
by Borja
10:43 queued 07:19
created

view()   B

Complexity

Conditions 6

Size

Total Lines 24

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 6
dl 0
loc 24
rs 8.3706
c 0
b 0
f 0
1
# frozen_string_literal: true
2
3
# DB Loader
4
def views
5
  load_yaml('views') # /data/views.yml
6
end
7
8
# Behaviour if defined, or from DB-views by default.
9
def view(ruta)
10
  # Routes List
11
12
  # Spell routes
13
  es_element  = %w[aire agua fuego tierra].include?(ruta)
14
  es_sagrada  = %w[arena hielo sombra sangre].include?(ruta)
15
  es_plegaria = %w[plegarias execraciones].include?(ruta)
16
  # Heroes routes
17
  campeones   = %w[reservistas ausentes licenciados].include?(ruta)
18
19
  # TODO: Refactor, reorder: v['ruta] first, and else goes to 404error site.
20
  # Route preview loader
21
  nav = if es_element then 'hechizos'
22
        elsif es_sagrada  then 'sagradas'
23
        elsif es_plegaria then 'plegarias'
24
        elsif campeones   then 'heroes'
25
        else ruta # Usual rooting
26
        end
27
28
  # Return the matching route ('nav') from DB
29
  v = views.find { |v| v['ruta'] == nav }
30
  v = v.nil? ? view('error') : v # TODO : 404 error...
31
  Vista.new(v)
32
end
33
34
# View meta info for component and layouts
35
def viewinfo(ruta)
36
  {
37
    title: view(ruta)['ruta'],
38
    bc: breadcrumb(ruta),
39
    layout: view(ruta).template
40
  }
41
end
42
43
# Refined DATA hash-like
44
def preview(ruta)
45
  erb :template, locals: viewinfo(ruta)
46
end
47
48
# Only will be displayed if true (returns array)
49
def breadcrumb(ruta)
50
  bc = []
51
  if view(ruta)
52
    if view(ruta).template
53
      if view(ruta).template['main'].split('/').count > 1
54
        bc = view(ruta).template['main'].split('/')
55
      end
56
    end
57
  end
58
  bc # empty arrays should be treated in ERB
59
end
60