#!/usr/bin/env python import re import sys class GenAssemblyIndex(object): indexfile = "docs/assembly/index.html" sourcefile = "full_assembly.scad" modules = [] modinfo = {} def write_index(self): with open(self.indexfile, "w") as f: f.write("""\ Snappy Assembly

Snappy RepRap Assembly Instructions

    """) for mod_eng in self.modules: f.write('
  1. ') f.write('

    %s

    \n' % mod_eng) stepcnt = len(self.modinfo[mod_eng]) if stepcnt > 1: f.write('\n') f.write('
  2. \n') f.write('
\n') f.write('\n') f.write('\n') def process_module(self, module, desc): print("module: %s" % module) step = 1 mod_eng = module.replace('_', ' ') \ .title() \ .replace('Xy', 'XY') \ .replace('Yz', 'YZ') mod_split = mod_eng.split(" ") if mod_split[-1].isdigit(): step = int(mod_split[-1]) mod_eng = " ".join(mod_split[:-1]) if mod_eng not in self.modules: self.modules.append(mod_eng) self.modinfo[mod_eng] = [ { 'module': module, 'step': step, 'desc': desc }, ] else: self.modinfo[mod_eng].append( { 'module': module, 'step': step, 'desc': desc }, ) def generate_index(self): mod_re = re.compile( r'module *([a-z_][a-z0-9_]*_assembly(_[0-9]+)?) *\(' ) desc_re = re.compile(r'// *desc: *(.*)$') module = "" desc = "" with open(self.sourcefile, "r") as f: for line in f.readlines(): mod_res = mod_re.search(line) if mod_res: if module: self.process_module(module, desc) module = mod_res.group(1) desc = "" desc_res = desc_re.search(line) if desc_res: desc += desc_res.group(1) if module: self.process_module(module, desc) self.write_index() def main(): genidx = GenAssemblyIndex() genidx.generate_index() sys.exit(0) if __name__ == "__main__": main() # vim: expandtab tabstop=4 shiftwidth=4 softtabstop=4 nowrap