Module: Serbea::Helpers

Defined in:
lib/serbea/helpers.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(mod) ⇒ Object



5
6
7
# File 'lib/serbea/helpers.rb', line 5

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



52
53
54
# File 'lib/serbea/helpers.rb', line 52

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

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



56
57
58
59
# File 'lib/serbea/helpers.rb', line 56

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

#capture(*args) ⇒ Object



9
10
11
12
13
14
15
16
17
# File 'lib/serbea/helpers.rb', line 9

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

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

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



38
39
40
# File 'lib/serbea/helpers.rb', line 38

def h(input)
  ERB::Util.h(input.to_s)
end

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



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

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:



30
31
32
33
34
35
36
# File 'lib/serbea/helpers.rb', line 30

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



19
20
21
# File 'lib/serbea/helpers.rb', line 19

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

#prepend(old_string, new_string) ⇒ Object



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

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

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



43
44
45
# File 'lib/serbea/helpers.rb', line 43

def safe(input)
  input.to_s.html_safe
end