class Forge::Generator
Public Class Methods
new(project, layout='default')
click to toggle source
# File lib/forge/generator.rb, line 11 def initialize(project, layout='default') @project = project @task = project.task @layout = layout end
run(project, layout='default')
click to toggle source
# File lib/forge/generator.rb, line 5 def run(project, layout='default') generator = self.new(project, layout) generator.run end
Public Instance Methods
copy_functions()
click to toggle source
# File lib/forge/generator.rb, line 70 def copy_functions source = File.expand_path(File.join(self.layout_path, 'functions', 'functions.php.erb')) target = File.expand_path(File.join(@project.source_path, 'functions', 'functions.php')) write_template(source, target) end
copy_javascript()
click to toggle source
# File lib/forge/generator.rb, line 52 def copy_javascript source = File.expand_path(File.join(self.layout_path, 'javascripts')) target = File.expand_path(File.join(@project.assets_path, 'javascripts')) render_directory(source, target) self end
copy_stylesheets()
click to toggle source
# File lib/forge/generator.rb, line 43 def copy_stylesheets source = File.expand_path(File.join(self.layout_path, 'stylesheets')) target = File.expand_path(File.join(@project.assets_path, 'stylesheets')) render_directory(source, target) self end
copy_templates()
click to toggle source
# File lib/forge/generator.rb, line 61 def copy_templates source = File.expand_path(File.join(self.layout_path, 'templates')) target = File.expand_path(File.join(@project.source_path, 'templates')) render_directory(source, target) self end
create_structure()
click to toggle source
# File lib/forge/generator.rb, line 17 def create_structure # Create the build directory for Forge output @task.empty_directory @project.build_path source_paths = [ ['assets', 'images'], ['assets', 'javascripts'], ['assets', 'stylesheets'], ['assets', 'lib'], ['functions'], ['includes'], ['templates', 'pages'], ['templates', 'partials'], ] # Build out Forge structure in the source directory source_paths.each do |path| @task.empty_directory File.join(@project.source_path, path) end self end
layout_path()
click to toggle source
# File lib/forge/generator.rb, line 77 def layout_path @layout_path ||= File.join(Forge::ROOT, 'layouts', @layout) end
run()
click to toggle source
# File lib/forge/generator.rb, line 81 def run write_config create_structure copy_stylesheets copy_javascript copy_templates copy_functions return self end
write_config()
click to toggle source
# File lib/forge/generator.rb, line 91 def write_config unless File.exists?(@project.global_config_file) @task.shell.mute do @task.create_file(@project.global_config_file) do "# Place your global configuration values here\n# config[:livereload] = true" end end end write_template(['config', 'config.tt'], @project.config_file) self end
write_template(source, target)
click to toggle source
# File lib/forge/generator.rb, line 105 def write_template(source, target) source = File.join(source) template = File.expand_path(@task.find_in_source_paths((source))) target = File.expand_path(File.join(target)) @task.create_file target do @project.parse_erb(template) end end
Protected Instance Methods
render_directory(source, target)
click to toggle source
# File lib/forge/generator.rb, line 116 def render_directory(source, target) Dir.glob("#{source}/**/*") do |file| unless File.directory?(file) source_file = file.gsub(source, '') target_file = File.join(target, source_file) if source_file.end_with? ".erb" target_file = target_file.slice(0..-5) content = @project.parse_erb(file) else content = File.open(file).read end @task.create_file target_file do content end end end end