Module: Card::Format::Nest::Mode

Included in:
Card::Format::Nest
Defined in:
lib/card/format/nest/mode.rb

Instance Method Summary collapse

Instance Method Details

#configured_view_in_closed_mode(view) ⇒ Symbol

the view configured in view definition for use when nested in closed mode

Parameters:

  • view (Symbol)

Returns:

  • (Symbol)

    viewname



75
76
77
78
79
# File 'lib/card/format/nest/mode.rb', line 75

def configured_view_in_closed_mode view
  closed_config = Card::Format.closed[view]
  return view if closed_config == true || Card::Format.error_code[view]
  closed_config
end

#hide_view_in_edit_mode?(view) ⇒ True/False

Parameters:

  • view (Symbol)

Returns:

  • (True/False)


59
60
61
62
63
# File 'lib/card/format/nest/mode.rb', line 59

def hide_view_in_edit_mode? view
  Card::Format.perms[view] == :none || # view never edited
    card.structure                  || # not yet nesting structures
    card.key.blank?                    # eg {{_self|type}} on new cards
end

view to be rendered in current mode

Parameters:

  • view (Symbol)

Returns:

  • (Symbol)

    viewname



40
41
42
43
44
45
46
47
48
# File 'lib/card/format/nest/mode.rb', line 40

def modal_nest_view view
  # Note: the subformat always has the same nest_mode as its parent format
  case nest_mode
  when :edit     then view_in_edit_mode(view)
  when :template then :template_rule
  when :closed   then view_in_closed_mode(view)
  else view
  end
end

#nest_modeSymbol

current nest mode

Returns:

  • (Symbol)

    :normal, :closed, :edit, or :template



14
15
16
# File 'lib/card/format/nest/mode.rb', line 14

def nest_mode
  @nest_mode ||= parent ? parent.nest_mode : :normal
end

#view_in_closed_mode(view) ⇒ Symbol

the view that should be used when nested in closed mode

Parameters:

  • view (Symbol)

Returns:

  • (Symbol)

    viewname



68
69
70
# File 'lib/card/format/nest/mode.rb', line 68

def view_in_closed_mode view
  configured_view_in_closed_mode(view) || (card.known? ? :closed_content : :closed_missing)
end

#view_in_edit_mode(view) ⇒ Symbol

Returns the view that the card should use when nested in edit mode

Parameters:

  • view (Symbol)

Returns:

  • (Symbol)

    viewname



53
54
55
# File 'lib/card/format/nest/mode.rb', line 53

def view_in_edit_mode view
  hide_view_in_edit_mode?(view) ? :blank : :edit_in_form
end

#with_altered_nest_mode(new_mode) ⇒ Object



29
30
31
32
33
34
35
# File 'lib/card/format/nest/mode.rb', line 29

def with_altered_nest_mode new_mode
  old_mode = nest_mode
  @nest_mode = new_mode
  yield
ensure
  @nest_mode = old_mode
end

#with_nest_mode(new_mode, &block) ⇒ Object

run block with new_mode as nest_mode, then return to prior mode

Parameters:

  • new_mode (Symbol)

    :normal, :closed, :edit, or :template

Returns:

  • block result



21
22
23
24
25
26
27
# File 'lib/card/format/nest/mode.rb', line 21

def with_nest_mode new_mode, &block
  if new_mode
    with_altered_nest_mode new_mode, &block
  else
    yield
  end
end