Class: BetterUi::Generators::StylesheetGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/better_ui/stylesheet_generator.rb

Overview

Generatore per creare file SCSS personalizzati per i componenti BetterUI

Questo generatore crea:

  1. Un foglio di stile principale che importa tutti i componenti usando @use/@forward

  2. File di override per ogni componente che permettono personalizzazioni senza modificare i file originali

  3. Un file indice che raccoglie tutti gli override usando @forward

Constant Summary collapse

COMPONENT_FILES =

Lista dei file dei componenti da gestire

[
  '_variables.scss', 
  '_button.scss', 
  '_heading.scss', 
  '_breadcrumb.scss', 
  '_link.scss', 
  '_panel.scss', 
  '_icon.scss', 
  '_table.scss', 
  '_badge.scss', 
  '_spinner.scss', 
  '_avatar.scss',
  '_card.scss'
].freeze

Instance Method Summary collapse

Instance Method Details

#create_overridesObject

Crea i file di override per ogni componente



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/generators/better_ui/stylesheet_generator.rb', line 53

def create_overrides
  # Crea la directory dei componenti se non esiste
  directory = File.join(options[:path], "components")
  FileUtils.mkdir_p(directory) unless File.directory?(directory)
  
  # Crea i file di override per ogni componente
  COMPONENT_FILES.each do |filename|
    # Nome del file di override (es. _button_overrides.scss)
    override_filename = filename.sub('.scss', '_overrides.scss')
    override_path = File.join(directory, override_filename)
    
    # Crea il file di override solo se non esiste già
    unless File.exist?(override_path)
      # Percorso del file template originale
      template_path = File.join(self.class.source_root, "components", filename)
      
      # Se il file template esiste, crea il file di override basato su di esso
      if File.exist?(template_path)
        original_content = File.read(template_path)
        override_content = generate_empty_override(original_content, filename)
        create_file override_path, override_content
      end
    end
  end
end

#create_stylesheetObject

Crea il foglio di stile principale



39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/generators/better_ui/stylesheet_generator.rb', line 39

def create_stylesheet
  # Crea il file principale che importa tutti i componenti
  template "components_stylesheet.scss", 
          File.join(options[:path], "#{options[:prefix]}_better_ui.scss")
  
  # Crea la directory dei componenti se non esiste
  directory = File.join(options[:path], "components")
  FileUtils.mkdir_p(directory) unless File.directory?(directory)
  
  # Crea il file indice che raccoglie tutti gli override
  template "index.scss", File.join(directory, "_index.scss")
end

#show_readmeObject

Mostra le istruzioni README dopo l’esecuzione del generatore



80
81
82
# File 'lib/generators/better_ui/stylesheet_generator.rb', line 80

def show_readme
  readme "README" if behavior == :invoke
end