Sha256: 26a808e2ec2ce64a6b7863f10393d02382bb6ecce40965460f97ef981055ee23

Contents?: true

Size: 1002 Bytes

Versions: 3

Compression:

Stored size: 1002 Bytes

Contents

module Effective
  module Resources
    module Naming
      SPLIT = /\/|::/  # / or ::

      def name # 'post'
        @name ||= @input_name.split(SPLIT).last.singularize
      end

      def plural_name # 'posts'
        name.pluralize
      end

      def class_name # 'Effective::Post'
        @class_name ||= (@input_name.split(SPLIT) - namespaces).map { |name| name.classify } * '::'
      end

      def class_path # 'effective'
        class_name.split('::')[0...-1].map { |name| name.underscore } * '/'
      end

      def namespaced_class_name # 'Admin::Effective::Post'
        (namespaces.map { |name| name.classify } + [class_name]) * '::'
      end

      def namespace # 'admin/things'
        @namespace ||= (namespaces.join('/') if namespaces.present?)
      end

      def namespaces # ['admin', 'things']
        @namespaces ||= @input_name.split('/')[0...-1]
      end

      def human_name
        class_name.gsub('::', ' ').underscore.gsub('_', ' ')
      end

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
effective_resources-0.3.1 app/models/effective/resources/naming.rb
effective_resources-0.3.0 app/models/effective/resources/naming.rb
effective_resources-0.2.4 app/models/effective/resources/naming.rb