summaryrefslogtreecommitdiffstats
path: root/skeletons.rb
diff options
context:
space:
mode:
Diffstat (limited to 'skeletons.rb')
-rwxr-xr-xskeletons.rb46
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