Skip to content

Instantly share code, notes, and snippets.

@tamc
Created August 10, 2010 20:24
Show Gist options
  • Select an option

  • Save tamc/517929 to your computer and use it in GitHub Desktop.

Select an option

Save tamc/517929 to your computer and use it in GitHub Desktop.
use erb to create metapost files
require 'erb'
metapost_command = 'mpost'
puts "Loading template '#{ARGV[0]}'"
template = IO.readlines(ARGV[0]).join
support_library = File.basename(ARGV[0],'.*')
support_module = support_library.split(/[^a-zA-Z0-9]/).map { |w| w.capitalize }.join
metapost_name = ARGV[1] || (File.basename(ARGV[0],'.*') + '.mp')
begin
puts "Trying to load supporting library #{support_library} with module #{support_module} "
require support_library
include eval(support_module)
rescue LoadError
puts "No support library #{support_library} found"
end
puts "Compiling template"
erb = ERB.new(template)
metapost = erb.result(binding)
puts "Writing metapost to #{metapost_name}"
File.open(metapost_name,'w') do |f|
p metapost
f.puts metapost
end
puts "Running metapost"
puts `#{metapost_command} -interaction=nonstopmode #{metapost_name}`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment