Sha256: 70696078df996683cee48a767765a69208ade6c3ffdedfd280330708a8101637

Contents?: true

Size: 1.38 KB

Versions: 4

Compression:

Stored size: 1.38 KB

Contents

require "active_support/core_ext/string/output_safety"

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

    def capture(obj = nil, &block)
      previous_buffer_state = @_erbout
      @_erbout = Serbea::Buffer.new

      # For compatibility with ActionView, not used by Bridgetown normally
      previous_ob_state = @output_buffer
      @output_buffer = Serbea::Buffer.new

      result = instance_exec(obj, &block)
      if @output_buffer != ""
        # use Rails' ActionView buffer if present
        result = @output_buffer
      end
      @_erbout = previous_buffer_state
      @output_buffer = previous_ob_state

      result.html_safe
    end
  
    def pipeline(context, value)
      Pipeline.new(context, value)
    end
  
    def helper(name, &block)
      self.class.send(:define_method, name, &block)
    end
  
    def h(input)
      ERB::Util.h(input.to_s)
    end
    alias_method :escape, :h

    def safe(input)
      input.to_s.html_safe
    end
    alias_method :raw, :safe

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

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

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

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
serbea-0.6.3 lib/serbea/helpers.rb
serbea-0.6.2 lib/serbea/helpers.rb
serbea-0.6.1 lib/serbea/helpers.rb
serbea-0.6.0 lib/serbea/helpers.rb