Module: Serbea::Helpers

Defined in:
lib/serbea/helpers.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(mod) ⇒ Object



16
17
18
# File 'lib/serbea/helpers.rb', line 16

def self.included(mod)
  Serbea::Pipeline.deny_value_method %i(escape h prepend append assign_to)
end

Instance Method Details

#append(old_string, new_string) ⇒ Object



63
64
65
# File 'lib/serbea/helpers.rb', line 63

def append(old_string, new_string)
  "#{old_string}#{new_string}"
end

#assign_to(input, varname, preserve: false) ⇒ Object



67
68
69
70
# File 'lib/serbea/helpers.rb', line 67

def assign_to(input, varname, preserve: false)
  self.instance_variable_set("@#{varname}", input)
  preserve ? input : nil
end

#capture(*args) ⇒ Object



20
21
22
23
24
25
26
27
28
# File 'lib/serbea/helpers.rb', line 20

def capture(*args)
  previous_buffer_state = @_erbout
  @_erbout = Serbea::OutputBuffer.new
  result = yield(*args)
  result = @_erbout.empty? ? result : @_erbout
  @_erbout = previous_buffer_state

  Serbea::OutputBuffer === result ? result.html_safe : result
end

#h(input) ⇒ Object Also known as: escape



49
50
51
# File 'lib/serbea/helpers.rb', line 49

def h(input)
  Erubi.h(input.to_s)
end

#helper(name, &helper_block) ⇒ Object Also known as: macro



34
35
36
37
38
# File 'lib/serbea/helpers.rb', line 34

def helper(name, &helper_block)
  self.class.define_method(name) do |*args, **kwargs, &block|
    capture { helper_block.call(*args, **kwargs, &block) }
  end
end

#import(*args, **kwargs, &block) ⇒ Object

Raises:



41
42
43
44
45
46
47
# File 'lib/serbea/helpers.rb', line 41

def import(*args, **kwargs, &block)
  helper_names = %i(partial render)
  available_helper = helper_names.find { |meth| respond_to?(meth) }
  raise Serbea::Error, "Serbea Error: no `render' or `partial' helper available in #{self.class}" unless available_helper
  available_helper == :partial ? partial(*args, **kwargs, &block) : render(*args, **kwargs, &block)
  nil
end

#pipeline(context, value) ⇒ Object



30
31
32
# File 'lib/serbea/helpers.rb', line 30

def pipeline(context, value)
  Pipeline.new(context, value)
end

#prepend(old_string, new_string) ⇒ Object



59
60
61
# File 'lib/serbea/helpers.rb', line 59

def prepend(old_string, new_string)
  "#{new_string}#{old_string}"
end

#safe(input) ⇒ Object Also known as: raw



54
55
56
# File 'lib/serbea/helpers.rb', line 54

def safe(input)
  input.to_s.html_safe
end