Sha256: 7dff7fafbae761436fa1f96e83b581a6b8e9cd05cebd86b4719cb65811b03650
Contents?: true
Size: 1.29 KB
Versions: 1
Compression:
Stored size: 1.29 KB
Contents
# frozen_string_literal: true require_relative 'async_partial/railtie' module AsyncPartial module Renderer def render(context, options, block) if (options.delete(:async) || (options[:locals]&.delete(:async))) AsyncResult.new(Thread.new { super }) else super end end end class AsyncResult def initialize(thread) @thread = thread end def nil? false end def html_safe? true end def to_s val = @thread.value @thread.kill val end end module ArrayBuffer def initialize(*) super @values = [] end def <<(value) @values << [value, :<<] unless value.nil? self end alias :append= :<< def safe_concat(value) raise ActiveSupport::SafeBuffer::SafeConcatError unless html_safe? @values << [value, :safe_concat] unless value.nil? self end alias :safe_append= :safe_concat def safe_expr_append=(val) @values << [val, :safe_expr_append] unless val.nil? self end def to_s result = @values.each_with_object(ActiveSupport::SafeBuffer.new) do |(v, meth), buf| if meth == :<< buf << v.to_s else buf.safe_concat(v.to_s) end end result.to_s end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
async_partial-0.2.0 | lib/async_partial.rb |