Sha256: 79f018a06890b25c20da63b9b75477c93b8bc9b4901a6f0fe3c5da17dc58ce0f
Contents?: true
Size: 1022 Bytes
Versions: 5
Compression:
Stored size: 1022 Bytes
Contents
module InertiaRails mattr_accessor(:shared_plain_data) { Hash.new } mattr_accessor(:shared_blocks) { [] } def self.configure yield(Configuration) end # "Getters" def self.shared_data(controller) shared_plain_data.merge!(evaluated_blocks(controller, shared_blocks)) end def self.version Configuration.evaluated_version end def self.layout Configuration.layout end # "Setters" def self.share(**args) shared_plain_data.merge!(args) end def self.share_block(block) shared_blocks.push(block) end def self.reset! self.shared_plain_data = {} self.shared_blocks = [] end private module Configuration mattr_accessor(:layout) { 'application' } mattr_accessor(:version) { nil } def self.evaluated_version self.version.respond_to?(:call) ? self.version.call : self.version end end def self.evaluated_blocks(controller, blocks) blocks.flat_map { |block| controller.instance_exec(&block) }.reduce(&:merge) || {} end end
Version data entries
5 entries across 5 versions & 1 rubygems