-
Notifications
You must be signed in to change notification settings - Fork 0
/
requirement.py
40 lines (31 loc) · 1.31 KB
/
requirement.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import json
import re
from typing import List
from util import listToJson
if __name__ == '__main__':
sections: List[dict] = json.load(open('_pawsSection.raw.json', 'r'))
requirements = set()
for section in sections:
description: str = section['title'][1]
try:
# Search for header
startIndex = re.search(
r'\(Requirement[s]?: ', description
).end() # AttributeError
# We could simply search for ')'
# But there could be nesting prentices, so a nesting counter is required
# For example: 'Background knowledge in Fortran, C/C++ or other programming language (other than MATLAB or similar), and partial differential equations.'
nestingLevel = 1
for offset, char in enumerate(description[startIndex:]):
if char == '(':
nestingLevel += 1
elif char == ')':
nestingLevel -= 1
if nestingLevel == 0:
endIndex = startIndex + offset
break
requirements.add(description[startIndex:endIndex])
except AttributeError: # 'NoneType' object has no attribute 'end'
pass
requirements = list(requirements)
listToJson(requirements, 'requirement')