Sha256: 6d2f03ea9d8f82c2229a5afd48fae5c5c55e3316e040ac94e0f741c47d6bea29

Contents?: true

Size: 1.37 KB

Versions: 2

Compression:

Stored size: 1.37 KB

Contents

# frozen_string_literal: true

module Rails
  class ComponentGenerator < Rails::Generators::NamedBase

    source_root File.expand_path('../templates', __FILE__)
    check_class_collision suffix: 'Component'

    class_option :skip_erb, type: :boolean, default: false
    class_option :skip_css, type: :boolean, default: false
    class_option :skip_js, type: :boolean, default: false

    def copy_components
      path = File.join('app', 'components', class_path, "#{file_name}_component.rb")
      template('component.rb.tt', path)
    end

    def create_erbs
      return if options['skip_erb']

      path = File.join('app', 'views', 'components', class_path, "_#{file_name}.html.erb")
      create_file(path)
    end

    def copy_javascripts
      return if options['skip_js']

      path = File.join('app', 'assets', 'javascripts', 'components', class_path, "#{file_name}.js")
      template('component.js', path)
    end

    # rubocop:disable Layout/LineLength
    def copy_stylesheets
      return if options['skip_css']

      path = File.join('app', 'assets', 'stylesheets', 'components', class_path, "#{file_name}.scss")
      template('component.scss', path)
    end
    # rubocop:enable Layout/LineLength

    private

    def file_name
      @_file_name ||= remove_possible_suffix(super)
    end

    def remove_possible_suffix(name)
      name.sub(/_?component$/i, '')
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lite-component-1.2.2 lib/generators/rails/component_generator.rb
lite-component-1.2.1 lib/generators/rails/component_generator.rb