module OpenSCAD def self.expand(filename) lines = File.readlines(filename) old_dir = Dir.getwd Dir.chdir File.dirname(filename) lines = lines.flat_map do |line| if line =~ /(include|use)\s*<(.*)>/ # File.readlines("./#{$2}") expand("./#{$2}") # in lieu of actually implementing `use`, we can just cull this final line from key.scad elsif line =~ /example\_key\(\);/ "" else line end end Dir.chdir old_dir lines end def self.expand_openSCAD_file(source, destination) lines = OpenSCAD::expand(source) f = File.open(destination, 'w') f.write lines.join end end