class Middleman::Directory
def execute!
def execute! handle_directory(source) end
def handle_directory(lookup)
def handle_directory(lookup) lookup = File.join(lookup, '{*,.[a-z]*}') Dir[lookup].sort.each do |file_source| if File.directory?(file_source) handle_directory(file_source) next end next if file_source.include?('layout') next unless file_source.split('/').select { |p| p[0,1] == '_' }.empty? file_extension = File.extname(file_source) file_destination = File.join(given_destination, file_source.gsub(source, '.')) file_destination.gsub!('/./', '/') handled_by_tilt = ::Tilt.mappings.keys.include?(file_extension.gsub(/^\./, "")) if handled_by_tilt || (file_extension == ".js") new_file_extension = (file_extension == ".js") ? ".js" : "" next if file_source.split('/').last.split('.').length < 3 file_destination.gsub!(file_extension, new_file_extension) destination = base.tilt_template(file_source, file_destination, config, &@block) else destination = base.copy_file(file_source, file_destination, config, &@block) end end end
def initialize(base, source, destination=nil, config={}, &block)
def initialize(base, source, destination=nil, config={}, &block) @source = File.expand_path(base.find_in_source_paths(source.to_s)) @block = block super(base, destination, { :recursive => true }.merge(config)) end
def invoke!
def invoke! base.empty_directory given_destination, config execute! end
def revoke!
def revoke! execute! end