generate_exercises.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #!/usr/bin/python
  2. import os
  3. import argparse
  4. import re
  5. START_SOLUTION_PATTERN = r'#>Solution'
  6. END_SOLUTION_PATTERN = r'#<'
  7. StartSolRec = re.compile(START_SOLUTION_PATTERN, re.M|re.I)
  8. EndSolRec = re.compile(END_SOLUTION_PATTERN, re.M|re.I)
  9. if __name__ == '__main__':
  10. parser = argparse.ArgumentParser(description='Exercise generation utility')
  11. parser.add_argument('file', help='text file the exercises are.')
  12. args = parser.parse_args()
  13. f = args.file
  14. assert os.path.isfile(f)
  15. filename, ext = os.path.splitext(f)
  16. of = filename+'_exercises'+ext
  17. lines = list()
  18. inSol = False
  19. with open(f, "r") as ins:
  20. for line in ins:
  21. lines.append(line)
  22. with open(of, "w") as outf:
  23. for line in lines:
  24. startSol = StartSolRec.search(line)
  25. if startSol:
  26. assert not inSol
  27. inSol = True
  28. if not inSol:
  29. outf.write(line)
  30. endSol = EndSolRec.search(line)
  31. if endSol:
  32. assert inSol
  33. inSol = False