Sha256: fba8fe15e3f380ab05e3b0cd5fb09b9a9f94594ff9e158ff2e44daeed2a2d2e6

Contents?: true

Size: 1.92 KB

Versions: 3

Compression:

Stored size: 1.92 KB

Contents

module Grape
  module Generators
    module Transformations
      class EntityGenerator < ::Rails::Generators::Base

        desc <<-DESC
          Create inherited Grape::Entity entity in your app/api/.../entities folder. this 
          created entity will have related with grape-transformations naming conventions

          For example:

            rails generate entity user

          This will create a entity class at app/api/.../entities/users/default.rb like this:

            module TestApp
              module Entities
                module Users
                  class Default < Grape::Entity
                    
                  end
                end
              end
            end 
        DESC

        source_root File.expand_path('../../templates', __FILE__)

        argument :composed_entity_name, type: :string, required: true, desc: 'name of entity'
        argument :fields, :type => :array, required: false, desc: 'field set that you want to expose'
        
        def generate_layout
          @fields ||= []
          template "entity.rb", "app/api/#{app_name}/entities/#{underscored_entity_name.pluralize}/#{class_name.underscore}.rb"
        end

        private

        # Returns the app name
        # @return [String]
        def app_name
          Rails.application.config.session_options[:key].sub(/^_/,'').sub(/_session/,'')
        end

        def class_name
          underscored_transformation_name.nil? ? 'Default' : underscored_transformation_name.classify
        end

        def entity_name
          composed_entity_name.split(':').first
        end

        def transformation_name
          composed_entity_name.split(':').second
        end

        def underscored_entity_name
          entity_name.underscore unless entity_name.nil?
        end

        def underscored_transformation_name
          transformation_name.underscore unless transformation_name.nil? 
        end

      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
grape-transformations-0.0.5 lib/grape/generators/transformations/entity_generator.rb
grape-transformations-0.0.4 lib/grape/generators/transformations/entity_generator.rb
grape-transformations-0.0.3 lib/grape/generators/transformations/entity_generator.rb