class ComponentGenerator
Public Instance Methods
clear_component()
click to toggle source
# File lib/generators/component/component_generator.rb, line 69 def clear_component return unless destroying? base_path = default_path + "components" base_path_dup = base_path.dup paths = split_name[0..-2].map do |split| base_path_dup += split [base_path_dup, split] end paths.reverse.each do |(path, split)| FileUtils.rm_rf(component_path) Dir.chdir(path) directories = Dir.glob("*").select do |entry| File.directory?(entry) end if directories.size == 0 FileUtils.rm_rf(path) remove_line!(base_path + "index.js", split) else remove_line!(path + "index.js", component_name) end end FileUtils.rm_rf(component_path) remove_line!(base_path + "index.js", component_name) end
create_css_file()
click to toggle source
# File lib/generators/component/component_generator.rb, line 13 def create_css_file template "#{stylesheet_engine}.erb", component_path + "#{name_with_namespace}.#{stylesheet_engine}" end
create_js_file()
click to toggle source
# File lib/generators/component/component_generator.rb, line 17 def create_js_file template "js.erb", component_path + "#{name_with_namespace}.js" if stimulus? template "stimulus_controller_js.erb", component_path + "#{name_with_namespace}_controller.js" end end
create_locale_files()
click to toggle source
# File lib/generators/component/component_generator.rb, line 28 def create_locale_files return unless locale? I18n.available_locales.each do |locale| @locale = locale template "locale.erb", component_path + "#{name_with_namespace}.#{locale}.yml" end end
create_rb_file()
click to toggle source
# File lib/generators/component/component_generator.rb, line 24 def create_rb_file template "rb.erb", component_path + "#{module_name.underscore}.rb" end
create_view_file()
click to toggle source
# File lib/generators/component/component_generator.rb, line 9 def create_view_file template "#{template_prefix}view.html.#{template_engine}.erb", component_path + "_#{name_with_namespace.underscore}.html.#{template_engine}" end
import_to_packs()
click to toggle source
# File lib/generators/component/component_generator.rb, line 37 def import_to_packs root_path = default_path base_path = root_path + "components" imports = [] split_name[0..-2].each do |split| base_path += split file_path = base_path + "index.js" create_file(file_path) unless File.exist?(file_path) imports << base_path.relative_path_from(root_path) end root_path_dup = root_path.dup [Pathname.new("components"), *split_name[0..-2]].each do |split| root_path_dup += split import = imports.shift if import append_to_file(root_path_dup + "index.js") do "\nimport \"#{import}\";\n" end sort_lines_alphabetically!(root_path_dup + "index.js") end end append_to_file(base_path + "index.js") do "\nimport \"#{base_path.relative_path_from(root_path)}/#{component_name}/#{name_with_namespace.underscore}\";\n" end sort_lines_alphabetically!(base_path + "index.js") end
Protected Instance Methods
component_class_name()
click to toggle source
# File lib/generators/component/component_generator.rb, line 124 def component_class_name name_with_namespace.dasherize end
component_name()
click to toggle source
# File lib/generators/component/component_generator.rb, line 128 def component_name split_name.last.underscore end
component_path()
click to toggle source
# File lib/generators/component/component_generator.rb, line 114 def component_path path_parts = [default_path, "components", *split_name] Pathname.new(path_parts.join("/")) end
default_path()
click to toggle source
# File lib/generators/component/component_generator.rb, line 140 def default_path rails_configuration.komponent.root end
locale?()
click to toggle source
# File lib/generators/component/component_generator.rb, line 144 def locale? return options[:locale] if options[:locale] komponent_configuration[:locale] end
module_name()
click to toggle source
# File lib/generators/component/component_generator.rb, line 120 def module_name "#{name_with_namespace}_component".camelize end
name_with_namespace()
click to toggle source
# File lib/generators/component/component_generator.rb, line 110 def name_with_namespace split_name.join("_") end
split_name()
click to toggle source
# File lib/generators/component/component_generator.rb, line 106 def split_name name.split(/[:,::,\/]/).reject(&:blank?).map(&:underscore) end
stimulus?()
click to toggle source
# File lib/generators/component/component_generator.rb, line 149 def stimulus? return options[:stimulus] if options[:stimulus] komponent_configuration[:stimulus] end
stylesheet_engine()
click to toggle source
# File lib/generators/component/component_generator.rb, line 136 def stylesheet_engine rails_configuration.komponent.stylesheet_engine end
template_engine()
click to toggle source
# File lib/generators/component/component_generator.rb, line 132 def template_engine app_generators.rails[:template_engine] || :erb end
template_prefix()
click to toggle source
# File lib/generators/component/component_generator.rb, line 102 def template_prefix stimulus? ? "stimulus_" : "" end
Private Instance Methods
app_generators()
click to toggle source
# File lib/generators/component/component_generator.rb, line 167 def app_generators rails_configuration.app_generators end
destroying?()
click to toggle source
# File lib/generators/component/component_generator.rb, line 199 def destroying? self.behavior == :revoke end
komponent_configuration()
click to toggle source
# File lib/generators/component/component_generator.rb, line 156 def komponent_configuration { stimulus: nil, locale: nil, }.merge(app_generators.komponent) end
rails_configuration()
click to toggle source
# File lib/generators/component/component_generator.rb, line 163 def rails_configuration Rails.application.config end
remove_line!(path, component_name)
click to toggle source
# File lib/generators/component/component_generator.rb, line 187 def remove_line!(path, component_name) lines = File.readlines(path).map do |line| line unless line =~ /#{component_name}/ end.compact File.open(path, "w") do |f| lines.each do |line| f.write(line) end end end
sort_lines_alphabetically!(path)
click to toggle source
# File lib/generators/component/component_generator.rb, line 171 def sort_lines_alphabetically!(path) lines = File.readlines(path).map do |line| line if line =~ /^import ["'](.*)["'];$/ end.compact return if lines.empty? lines = lines.uniq.sort File.open(path, "w") do |f| lines.each do |line| f.write(line) end end end