Sha256: 1b65972c466f42792c52747f87e07d77d83247022f3faa3dc45ae1200b596d56
Contents?: true
Size: 1.78 KB
Versions: 2
Compression:
Stored size: 1.78 KB
Contents
require "lasha/engine" module Lasha @index_actions = %i[new show edit destroy] def self.index_data( controller:, namespace: nil, model: nil, actions: nil, collection:, attributes: ) index_data_hash = { namespace: set_or_guess_namespace(namespace, controller), model: set_or_guess_model(model, collection), collection: collection, attributes: attributes, actions: set_or_guess_actions(actions, controller) } raise ArgumentError if index_data_invalid?(**index_data_hash) index_data_hash rescue ArgumentError => e puts "***** index_data argument error report" puts "#{e} #{e.message}" puts e.backtrace end private def self.set_or_guess_namespace(namespace, controller) if namespace.present? namespace elsif controller.class.name.include?("::") controller.class.name.deconstantize.underscore.to_sym end end def self.set_or_guess_model(model, collection) model.present? ? model : collection.first.class end def self.set_or_guess_actions(actions, controller) if actions.present? actions else controller.action_methods.to_a.map(&:to_sym) & @index_actions end end def self.index_data_invalid?(**index_data_hash) truthy_array = [] index_data_hash.each do |key, value| case key when :model truthy_array << (value.blank? || index_data_hash[:collection].blank?) when :actions truthy_array << (value - @index_actions).any? # when :namespace # truthy_array << false # when :collection # truthy_array << false # when :attributes # truthy_array << false end end truthy_array.include?(true) end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
lasha-0.2.6 | lib/lasha.rb |
lasha-0.2.5 | lib/lasha.rb |