Class: ViteReact::Generators::ScaffoldGenerator

Inherits:
Rails::Generators::ScaffoldControllerGenerator
  • Object
show all
Includes:
Rails::Generators::ResourceHelpers
Defined in:
lib/generators/vite_react/scaffold/scaffold_generator.rb

Instance Method Summary collapse

Instance Method Details

#copy_view_filesObject



20
21
22
23
24
25
26
27
28
29
# File 'lib/generators/vite_react/scaffold/scaffold_generator.rb', line 20

def copy_view_files
  available_views.each do |view|
    formats.each do |format|
      filename = filename_with_extensions(view, format)
      template filename, File.join("app/views", controller_file_path, filename)
    end
  end

  template "partial.html.erb", File.join("app/views", controller_file_path, "_#{singular_name}.html.erb")
end

#create_or_update_typesObject



32
33
34
35
36
37
38
39
40
41
# File 'lib/generators/vite_react/scaffold/scaffold_generator.rb', line 32

def create_or_update_types
  types_file_path = Rails.root.join("app/javascript/types.d.ts")
  interface_code  = generate_interface_code

  if File.exist?(types_file_path)
    append_to_file types_file_path, interface_code
  else
    create_file types_file_path, interface_code
  end
end

#create_root_folderObject

hook_for :controller



16
17
18
# File 'lib/generators/vite_react/scaffold/scaffold_generator.rb', line 16

def create_root_folder
  empty_directory File.join("app/views", controller_file_path)
end

#generate_interface_codeObject



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/generators/vite_react/scaffold/scaffold_generator.rb', line 43

def generate_interface_code
  attributes_lines = attributes.flat_map do |attr|
    if attr.type == :references
      build_ts_reference_lines(attr)
    else
      [ build_ts_attribute_line(attr) ]
    end
  end

  "    // AUTO-GENERATED by rails g scaffold \#{file_name}\n    interface \#{class_name} {\n      \#{attributes_lines.join(\"\\n\\t\")}\n    }\n  TS\nend\n"