Sha256: 63d29d8d357250fda2d236431d9f7b4594d7f71cb65bcd2ae934de89ee611b26

Contents?: true

Size: 1.93 KB

Versions: 20

Compression:

Stored size: 1.93 KB

Contents

module Lockdown
  module Helper
    #
    # If str_sym is a Symbol (:users), give me back "Users"
    # If str_sym is a String ("Users"), give me back :users
    #
    # Was :to_title_sym for String and :to_title_str for Symbol
    #
    def convert_reference_name(str_sym)
      if str_sym.is_a?(Symbol)
        titleize(str_sym)
      else
        underscore(str_sym).tr(' ','_').to_sym
      end
    end

    def lockdown_string(value)
      if value.respond_to?(:name)
        string_name(value.name)
      else
        string_name(value)
      end
    end

    def lockdown_symbol(value)
      if value.respond_to?(:name)
        symbol_name(value.name)
      elsif value.is_a?(String)
        symbol_name(value)
      else
        value
      end
    end

    def camelize(str)
      str.to_s.gsub(/\/(.?)/) { "::" + $1.upcase }.gsub(/(^|_)(.)/) { $2.upcase }
    end

    def random_string(len = 10)
      chars = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a
      Array.new(len){||chars[rand(chars.size)]}.join
    end

    def administrator_group_string
      string_name(:administrators)
    end

    def administrator_group_symbol
      :administrators
    end
    
    private

    def string_name(str_sym)
      str_sym.is_a?(Symbol) ? convert_reference_name(str_sym) : str_sym
    end

    def symbol_name(str_sym)
      str_sym.is_a?(String) ? convert_reference_name(str_sym) : str_sym
    end

    def titleize(str)
      humanize(underscore(str)).gsub(/\b([a-z])/) { $1.capitalize }
    end
    
    def humanize(str)
      str.to_s.gsub(/_id$/, "").gsub(/_/, " ").capitalize
    end

    def underscore(str)
      str.to_s.gsub(/::/, '/').
        gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
        gsub(/([a-z\d])([A-Z])/,'\1_\2').
        tr("-", "_").downcase
    end

    if Lockdown.rails_app?
      def controller_class_name(str)
        "#{str}Controller"
      end
    else
      def controller_class_name(str)
        str
      end
    end
  end

end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
lockdown-0.5.12 lib/lockdown/helper.rb
lockdown-0.5.13 lib/lockdown/helper.rb
lockdown-0.5.14 lib/lockdown/helper.rb
lockdown-0.5.17 lib/lockdown/helper.rb
lockdown-0.5.18 lib/lockdown/helper.rb
lockdown-0.5.10 lib/lockdown/helper.rb
lockdown-0.5.11 lib/lockdown/helper.rb
lockdown-0.5.16 lib/lockdown/helper.rb
lockdown-0.5.4 lib/lockdown/helper.rb
lockdown-0.5.5 lib/lockdown/helper.rb
lockdown-0.5.6 lib/lockdown/helper.rb
lockdown-0.5.7 lib/lockdown/helper.rb
lockdown-0.5.9 lib/lockdown/helper.rb
lockdown-0.5.19 lib/lockdown/helper.rb
lockdown-0.5.8 lib/lockdown/helper.rb
lockdown-0.5.2 lib/lockdown/helper.rb
lockdown-0.5.20 lib/lockdown/helper.rb
lockdown-0.5.21 lib/lockdown/helper.rb
lockdown-0.5.22 lib/lockdown/helper.rb
lockdown-0.5.3 lib/lockdown/helper.rb