Sha256: af67aa1ebde4b6d8e08b69f2ed388e10d38a4480b3d63317894c04f1dfc3c8c3

Contents?: true

Size: 1.57 KB

Versions: 2

Compression:

Stored size: 1.57 KB

Contents

# frozen_string_literal: true

require 'generators/ember/generator_helpers'

module Ember
  module Generators
    class ModelGenerator < ::Rails::Generators::NamedBase
      include Ember::Generators::GeneratorHelpers

      source_root File.expand_path('../templates', __dir__)
      desc 'creates a new ember.js model'
      argument :attributes, type: :array, default: [], banner: 'field[:type] field[:type] ...'
      class_option :javascript_engine, desc: 'engine for javascripts'
      class_option :ember_path, type: :string, aliases: '-d', desc: 'custom ember app path'
      class_option :app_name, type: :string, aliases: '-n', desc: 'Custom ember app name'

      def create_model_files
        file_path = File.join(ember_path, 'models', class_path, "#{file_name.dasherize}.#{engine_extension}")
        template "model.#{engine_extension}", file_path
      end

      private

      EMBER_TYPE_LOOKUP = {
        nil => 'string',
        :binary => 'string',
        :string => 'string',
        :text => 'string',
        :boolean => 'boolean',
        :date => 'date',
        :datetime => 'date',
        :time => 'date',
        :timestamp => 'date',
        :decimal => 'number',
        :float => 'number',
        :integer => 'number',
        :primary_key => 'number'
      }.freeze

      def parse_attributes!
        self.attributes = (attributes || []).map do |attr|
          name, type = attr.split(':')
          key = type.try(:to_sym)
          ember_type = EMBER_TYPE_LOOKUP[key] || type

          { name: name, type: ember_type }
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
emberjs-rails-0.1.1 lib/generators/ember/model_generator.rb
emberjs-rails-0.1.0 lib/generators/ember/model_generator.rb