Class: ExpressTemplates::Components::UnlessBlock

Inherits:
Container show all
Defined in:
lib/express_templates/components/unless_block.rb

Instance Attribute Summary collapse

Attributes inherited from Expander

#handlers, #locals, #stack

Instance Method Summary collapse

Methods included from Capabilities::Parenting

included

Methods inherited from Base

inherited

Methods included from Capabilities::Iterating

included

Methods included from Capabilities::Wrapping

included

Methods included from Capabilities::Rendering

included

Methods included from Capabilities::Templating

included

Methods included from Macro

included

Methods inherited from Expander

#expand, #initialize_expander, #method_missing, #process_children!, register_macros_for

Constructor Details

#initialize(*args) ⇒ UnlessBlock

Returns a new instance of UnlessBlock.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/express_templates/components/unless_block.rb', line 7

def initialize(*args)
  @conditional = args.shift
  @alt = args.shift[:alt] if args.first.kind_of?(Hash)
  parent = args.shift
  if @conditional.kind_of?(Symbol)
    @conditional = @conditional.to_s
  elsif @conditional.kind_of?(Proc)
    @conditional = "(#{@conditional.source}.call)"
  elsif iterator.kind_of?(String)
    @conditional = "(#{@conditional}.call)"
  else
    raise "UnlessBlock unknown conditional: #{@conditional.inspect}"
  end

  if @alt.kind_of?(Proc)
    @alt = _compile_fragment @alt
  elsif @alt.nil?
    @alt = "''"
  end
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class ExpressTemplates::Expander

Instance Attribute Details

#conditionalObject (readonly)

Returns the value of attribute conditional.



5
6
7
# File 'lib/express_templates/components/unless_block.rb', line 5

def conditional
  @conditional
end

Instance Method Details

#compileObject



28
29
30
31
32
33
34
35
36
# File 'lib/express_templates/components/unless_block.rb', line 28

def compile
  s = unless @alt
    %Q((unless #{@conditional}#{compile_children}\nend))
  else
    %Q((unless #{@conditional}#{compile_children}\nelse #{@alt}\nend))
  end
  puts s if ENV['DEBUG'].eql?('true')
  s
end