module CanCanCanSee
Constants
- MY_GLOBAL_HOLDER_OF_ABILITY
- VERSION
Public Class Methods
all_abilities(desired_slug="all")
click to toggle source
# File lib/CanCanCanSee.rb, line 165 def self.all_abilities(desired_slug="all") initiate_gem if desired_slug == "all" return MY_GLOBAL_HOLDER_OF_ABILITY else return MY_GLOBAL_HOLDER_OF_ABILITY[desired_slug] end end
all_roles(desired_slug="all")
click to toggle source
public methods
# File lib/CanCanCanSee.rb, line 152 def self.all_roles(desired_slug="all") initiate_gem if desired_slug == "all" return MY_GLOBAL_HOLDER_OF_ABILITY.keys else return MY_GLOBAL_HOLDER_OF_ABILITY[desired_slug].keys end end
establish_variable()
click to toggle source
# File lib/CanCanCanSee.rb, line 161 def self.establish_variable initiate_gem end
initiate_gem()
click to toggle source
# File lib/CanCanCanSee.rb, line 7 def self.initiate_gem configuration_file = File.read('config/initializers/cancancansee.rb') if configuration_file.include?("single") my_file = File.read('app/models/ability.rb') # for single read_file(my_file) elsif configuration_file.include?("multiple") my_arr = [] Dir.foreach('lib/ability_slugs') do |item| if item == "." || item == ".." else my_file = File.read("lib/ability_slugs/#{item}") #formatting keeps the helper file from being read here if my_file[0..6] == 'require' else my_arr << my_file end end end my_arr.each do |file| #MULTIPLES FILES WILL NEED TO BE FORMATTED WITH SLUG IN DEF MY_SLUG_ABILITY check_slug = /def (.*)_ability/.match(file)[1] read_file(file, check_slug) end end end
pretty_print_abilities(slug="all")
click to toggle source
# File lib/CanCanCanSee.rb, line 174 def self.pretty_print_abilities(slug="all") initiate_gem if slug == "all" @current_slug_abilities = MY_GLOBAL_HOLDER_OF_ABILITY @current_slug_abilities.each do |key, value| print "\n\n" print "Slug: #{key}\n\n" value.each do |role_key, role_value| print "\n\n" print " Role: #{role_key}\n\n" role_value.each do |can, can_value| print " #{can}\n" can_value = can_value.sort can_value.each do |can_value_element| print " #{can_value_element}\n" end end end end else @current_slug_abilities = MY_GLOBAL_HOLDER_OF_ABILITY[slug] @current_slug_abilities.each do |key, value| print "\n\n" print "Role: #{key}\n" value.each do |can, can_value| print " #{can}\n" can_value = can_value.sort can_value.each do |can_value_element| print " #{can_value_element}\n" end end end end end
read_file(file, check_slug=nil)
click to toggle source
# File lib/CanCanCanSee.rb, line 42 def self.read_file(file, check_slug=nil) @current_file = file #capture all roles all_text = Hash.new counter = 0 roles = @current_file.scan(/when(.*)($|[ do])/) roles.map! { |item| item.to_s.gsub(/[^0-9a-z ]/i, '') } roles.map! { |item| item[1..-2]} role_count = roles.length chunk_start = /when/ =~ @current_file chunk_end = ((/when/ =~ @current_file[(chunk_start + 1)..-1]) + chunk_start) all_text[roles[counter]] = @current_file[chunk_start..chunk_end] counter += 1 while counter < role_count chunk_start = chunk_end + 1 #broke here if (/when/ =~ @current_file[(chunk_start + 1)..-1]) == nil chunk_end = @current_file.length - 1 #if there are no more whens else chunk_end = ((/when/ =~ @current_file[(chunk_start + 1)..-1]) + chunk_start) end all_text[roles[counter]] = @current_file[chunk_start..chunk_end] counter += 1 end new_counter = 0 if check_slug == nil while new_counter < roles.length MY_GLOBAL_HOLDER_OF_ABILITY[roles[new_counter]] = Hash.new array_of_can = [] #establish can can_abilities = all_text[roles[new_counter]].scan(/can (.*)\n/) can_abilities.each do |can_ability| can_ability = can_ability[0] array_of_can << can_ability.gsub(/[^0-9a-z ]/i, '') end MY_GLOBAL_HOLDER_OF_ABILITY[roles[new_counter]]["can"] = array_of_can array_of_cannot = [] #establish cannot cannot_abilities = all_text[roles[new_counter]].scan(/cannot (.*)\n/) cannot_abilities.each do |cannot_ability| cannot_ability = cannot_ability[0] array_of_cannot << cannot_ability.gsub(/[^0-9a-z ]/i, '') end MY_GLOBAL_HOLDER_OF_ABILITY[roles[new_counter]]["cannot"] = array_of_cannot new_counter += 1 end else MY_GLOBAL_HOLDER_OF_ABILITY[check_slug] = Hash.new while new_counter < roles.length MY_GLOBAL_HOLDER_OF_ABILITY[check_slug][roles[new_counter]] = Hash.new array_of_can = [] #establish can can_abilities = all_text[roles[new_counter]].scan(/can (.*)($|[ do])/) can_abilities.each do |can_ability| can_ability = can_ability[0] if can_ability.include?(" do ") can_ability = "#{/(.*) do/.match(can_ability)[1]} WITH BLOCK" end array_of_can << can_ability.gsub(/[^0-9a-z ]/i, '') end MY_GLOBAL_HOLDER_OF_ABILITY[check_slug][roles[new_counter]]["can"] = array_of_can array_of_cannot = [] #establish cannot cannot_abilities = all_text[roles[new_counter]].scan(/cannot (.*)($|[ do])/) cannot_abilities.each do |cannot_ability| cannot_ability = cannot_ability[0] if cannot_ability.include?("do") cannot_ability = "#{/(.*) do/.match(cannot_ability)[1]} WITH BLOCK" end array_of_cannot << cannot_ability.gsub(/[^0-9a-z ]/i, '') end MY_GLOBAL_HOLDER_OF_ABILITY[check_slug][roles[new_counter]]["cannot"] = array_of_cannot new_counter += 1 end end end