@@ -22,6 +22,8 @@ const logger = rootLogger.child({
22
22
service : 'requisite-tree' ,
23
23
} ) ;
24
24
25
+ const GRADE_REQUIREMENT_SEPARATOR = ':' ;
26
+
25
27
function parse ( data : ModuleWithoutTree [ ] , subLogger : Logger ) : PrereqTreeMap {
26
28
const results : PrereqTreeMap = { } ;
27
29
@@ -32,7 +34,6 @@ function parse(data: ModuleWithoutTree[], subLogger: Logger): PrereqTreeMap {
32
34
// Filter out empty values
33
35
value
34
36
) {
35
-
36
37
const moduleLog = subLogger . child ( { moduleCode } ) ;
37
38
38
39
const parsedValue = parseString ( value , moduleLog ) ;
@@ -57,7 +58,10 @@ export function insertRequisiteTree(modules: Module[], prerequisites: PrereqTree
57
58
}
58
59
59
60
for ( const [ moduleCode , prereqs ] of entries ( prerequisites ) ) {
60
- for ( const fulfillsModule of flattenTree ( prereqs ) ) {
61
+ for ( const fulfillsModuleString of flattenTree ( prereqs ) ) {
62
+ const fulfillsModule = fulfillsModuleString . includes ( GRADE_REQUIREMENT_SEPARATOR )
63
+ ? fulfillsModuleString . split ( GRADE_REQUIREMENT_SEPARATOR ) [ 0 ]
64
+ : fulfillsModuleString ;
61
65
if ( fulfillModulesMap [ fulfillsModule ] ) {
62
66
// Since module requires fulfillsModule, that means fulfillsModule
63
67
// fulfills the requirements for module
@@ -84,7 +88,6 @@ export function insertRequisiteTree(modules: Module[], prerequisites: PrereqTree
84
88
export default async function generatePrereqTree (
85
89
allModules : ModuleWithoutTree [ ] ,
86
90
) : Promise < Module [ ] > {
87
-
88
91
const prerequisites = parse ( allModules , logger ) ;
89
92
const modules = insertRequisiteTree ( allModules , prerequisites ) ;
90
93
0 commit comments