class Futurism::Helpers::WrappingFuturismElement

wraps functionality for rendering a futurism element

Attributes

broadcast_each[R]
controller[R]
data_attributes[R]
eager[R]
extends[R]
html_options[R]
model[R]
options[R]
placeholder[R]

Public Class Methods

new(extends:, placeholder:, options:) click to toggle source
# File lib/futurism/helpers.rb, line 58
def initialize(extends:, placeholder:, options:)
  @extends = extends
  @placeholder = placeholder
  @eager = options.delete(:eager)
  @broadcast_each = options.delete(:broadcast_each)
  @controller = options.delete(:controller)
  @html_options = options.delete(:html_options) || {}
  @data_attributes = html_options.fetch(:data, {}).except(:sgid, :signed_params)
  @model = options.delete(:model)
  @options = data_attributes.any? ? options.merge(data: data_attributes) : options
end

Public Instance Methods

dataset() click to toggle source
# File lib/futurism/helpers.rb, line 70
def dataset
  data_attributes.merge({
    signed_params: signed_params,
    sgid: model && model.to_sgid.to_s,
    eager: eager.presence,
    broadcast_each: broadcast_each.presence,
    signed_controller: signed_controller
  })
end
render() click to toggle source
# File lib/futurism/helpers.rb, line 80
def render
  case extends
  when :li
    content_tag :li, placeholder, html_options.deep_merge({data: dataset, is: "futurism-li"})
  when :tr
    content_tag :tr, placeholder, html_options.deep_merge({data: dataset, is: "futurism-table-row"})
  else
    content_tag :"futurism-element", placeholder, html_options.deep_merge({data: dataset})
  end
end
transformed_options() click to toggle source
# File lib/futurism/helpers.rb, line 91
def transformed_options
  require_relative "shims/deep_transform_values" unless options.respond_to? :deep_transform_values

  options.deep_transform_values do |value|
    next(value) unless value.respond_to?(:to_global_id)
    next(value) if value.is_a?(ActiveRecord::Base) && value.new_record?

    value.to_global_id.to_s
  end
end

Private Instance Methods

signed_controller() click to toggle source
# File lib/futurism/helpers.rb, line 108
def signed_controller
  return unless controller.present?

  message_verifier.generate(controller.to_s)
end
signed_params() click to toggle source
# File lib/futurism/helpers.rb, line 104
def signed_params
  message_verifier.generate(transformed_options)
end