Sha256: 7d96221c8c7d4662fc2d367324768f7bcaf45a3b998114579a3e10a16277fed3

Contents?: true

Size: 1.18 KB

Versions: 1

Compression:

Stored size: 1.18 KB

Contents

module CanTango::Permit
  module Helper
    module Naming
      def permit_name clazz = nil
        clazz ||= is_class?(self) ? self : self.class
        return nil unless clazz.name =~ /Permit/
        namespaces = clazz.name.split('::')
        name = (namespaces[-2] == 'Permit') ? namespaces.last : namespaces.last.sub(/Permit$/, '')
        name.underscore.to_sym
      end

      def account_name clazz = nil
        clazz ||= is_class?(self) ? self : self.class
        return nil if clazz.name == clazz.name.demodulize         
        top_module = clazz.name.gsub(/::.*/,'')
        return nil unless /Permits$/ =~ top_module 
        top_module.gsub!(/Account/, '') 
        top_module.gsub(/(.*)Permits/, '\1').underscore.to_sym
      end
      
      def permit_type clazz = nil
        clazz ||= is_class?(self) ? self : self.class
        permit_name clazz.superclass
      end

      protected

      def first_name clazz = nil
        clazz ||= is_class?(self) ? self : self.class
        clazz.to_s.gsub(/^([A-Za-z]+).*/, '\1').underscore.to_sym # first part of class name
      end
      
      def is_class? clazz
        !clazz.nil? && clazz.respond_to?(:new)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cantango-permits-0.1.1 lib/cantango/permit/helper/naming.rb