generate_exercises.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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.replace("_solution", "")+'_exercises'+ext
  17. print("In file " + f)
  18. print("Out file " + of)
  19. lines = list()
  20. inSol = False
  21. with open(f, "r", encoding="utf-8") as ins:
  22. for line in ins:
  23. lines.append(line)
  24. with open(of, "w", encoding="utf-8") as outf:
  25. for line in lines:
  26. startSol = StartSolRec.search(line)
  27. if startSol:
  28. assert not inSol
  29. inSol = True
  30. print("Text to ommit:")
  31. if not inSol:
  32. outf.write(line)
  33. else:
  34. print(line)
  35. endSol = EndSolRec.search(line)
  36. if endSol:
  37. assert inSol
  38. inSol = False