/ openscad.rb
openscad.rb
 1  module OpenSCAD
 2    def self.expand(filename)
 3      lines = File.readlines(filename)
 4      old_dir = Dir.getwd
 5  
 6      Dir.chdir File.dirname(filename)
 7      lines = lines.flat_map do |line|
 8        # please note we do not implement `use` at all
 9        if line =~ /(include|use)\s*<(.*)>/
10          # File.readlines("./#{$2}")
11          expand("./#{$2}")
12        else
13          line
14        end
15      end
16  
17      Dir.chdir old_dir
18  
19      lines
20    end
21  
22    def self.expand_openSCAD_file(source, destination)
23      lines = OpenSCAD::expand(source)
24  
25      f = File.open(destination, 'w')
26      f.write lines.join
27    end
28  end