Class | FileHandlers::CopyHandler |
In: |
lib/webgen/plugins/filehandlers/copy.rb
|
Parent: | DefaultHandler |
A simple file handler which copies files specified by a pattern from the source to the output directory.
# File lib/webgen/plugins/filehandlers/copy.rb, line 44 44: def initialize( plugin_manager ) 45: super 46: param( 'paths' ).each {|path| register_path_pattern( path ) } 47: param( 'erbPaths' ).each {|path| register_path_pattern( path ) } 48: end
# File lib/webgen/plugins/filehandlers/copy.rb, line 50 50: def create_node( path, parent, meta_info ) 51: processWithErb = param( 'erbPaths' ).any? {|pattern| File.fnmatch( pattern, path, File::FNM_DOTMATCH )} 52: name = File.basename( path ) 53: name = name.sub( /\.r([^.]+)$/, '.\1' ) if processWithErb 54: 55: node = parent.find {|c| c =~ name } 56: if node.nil? 57: node = Node.new( parent, name ) 58: node['title'] = name 59: node.meta_info.update( meta_info ) 60: node.node_info[:src] = path 61: node.node_info[:processor] = self 62: node.node_info[:preprocess] = processWithErb 63: else 64: log(:warn) { "Can't create node <#{node.full_path}> as it already exists (node handled by #{node.node_info[:processor].class.plugin_name})!" } 65: end 66: node 67: end
Copy the file to the destination directory if it has been modified.
# File lib/webgen/plugins/filehandlers/copy.rb, line 70 70: def write_node( node ) 71: if @plugin_manager['Core/FileHandler'].file_modified?( node.node_info[:src], node.full_path ) 72: if node.node_info[:preprocess] 73: File.open( node.full_path, 'w+' ) {|f| f.write( ERB.new( File.read( node.node_info[:src] ) ).result( binding ) ) } 74: else 75: FileUtils.cp( node.node_info[:src], node.full_path ) 76: end 77: end 78: end