diff options
Diffstat (limited to 'skeletons.rb')
-rwxr-xr-x | skeletons.rb | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/skeletons.rb b/skeletons.rb new file mode 100755 index 0000000..144116b --- /dev/null +++ b/skeletons.rb @@ -0,0 +1,46 @@ +#!/usr/bin/env ruby +# +# vmirc => au BufNewFile * :exe("0r! ~/.vim/skeletons.rb %:p " . &filetype) +# +require 'erb' +require 'date' + +SKELETON_DIR = File.expand_path("~/.vim/skeletons"); +EXTENSION = "erb" + +filepath, filetype = ARGV +filename = File.basename( filepath ) + +if filename =~ /\.h$/ then filetype='c_header'; end # otherwise filetype is cpp +if filetype.nil? then filetype = File.extname( filename ).split( '.' )[1] ; end + +skeleton = [ filename, filetype ].map { |s| File.join( SKELETON_DIR, "#{s}.#{EXTENSION}" ) }.find { |s| File.exist?(s) && File.readable?(s) } + +exit if skeleton.nil? + +@username = ENV['USERNAME'] || 'John Doe' +@email = ENV['EMAIL'] || 'john.doe@nope.com' +@website = ENV['WEBSITE'] || 'http://john.doe.org' +@now = Date.today.strftime("%d/%m/%y") +@year = Date.today.strftime("%Y") +@license_file = ENV['LICENSE'] +@filename = filename +@filename_base = filename.split('.')[0] +@class_name = filename.split('.')[0].capitalize +@project = File.split( File.dirname( filepath ) ).last + +def license comment=nil + return unless File.exist? @license_file + return File.new( @license_file ).read if comment.nil? + license = '' + File.new( @license_file ).each_line { |l| license+=comment+l } + license +end + +def header fn + fp = File.join( SKELETON_DIR, fn ) + return unless File.exists? fp + File.open( fp ) { |f| puts ERB.new( f.read, nil, '<>' ).result( binding ) } +end + +File.open( skeleton ) do |f| puts ERB.new( f.read, nil, '<>' ).result( binding ) end |