UNPKG

@giancosta86/omnicourse-core

Version:
72 lines 2.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.NamedRawTaxonomy = void 0; const stream_1 = require("@rimbu/stream"); const time_utils_1 = require("@giancosta86/time-utils"); const taxonomy_1 = require("../../taxonomy"); var NamedRawTaxonomy; (function (NamedRawTaxonomy) { function reify({ locale, name, rawTaxonomy }) { const rootSubjects = RawSubjects.reify(locale, rawTaxonomy); return taxonomy_1.Taxonomy.create(locale, name, rootSubjects); } NamedRawTaxonomy.reify = reify; })(NamedRawTaxonomy || (exports.NamedRawTaxonomy = NamedRawTaxonomy = {})); var RawSubjects; (function (RawSubjects) { function reify(locale, rawSubjects) { return stream_1.Stream.from(Object.entries(rawSubjects)).flatMap(([subjectName, rawSubjectItems]) => { const subject = RawSubject.reify(locale, subjectName, rawSubjectItems); return subject ? [subject] : []; }); } RawSubjects.reify = reify; })(RawSubjects || (RawSubjects = {})); var RawSubject; (function (RawSubject) { function reify(locale, subjectName, rawSubjectItems) { const subjectItems = rawSubjectItems[Symbol.iterator] ? RawWorks.reify(rawSubjectItems) : RawSubjects.reify(locale, rawSubjectItems); if (subjectItems[Symbol.iterator]().next().done) { return null; } return taxonomy_1.Subject.create(locale, subjectName, subjectItems); } RawSubject.reify = reify; })(RawSubject || (RawSubject = {})); var RawWorks; (function (RawWorks) { function reify(rawWorks) { return stream_1.Stream.from(rawWorks).map(RawWork.reify); } RawWorks.reify = reify; })(RawWorks || (RawWorks = {})); var RawWork; (function (RawWork) { function reify(rawWork) { if (rawWork.title == null) { throw new Error(`Missing work title: ${JSON.stringify(rawWork)}`); } const title = String(rawWork.title); if (rawWork.minutes == null) { throw new Error(`Missing 'minutes' field in work '${title}'`); } const minutes = Math.round(Number(rawWork.minutes)); if (isNaN(minutes)) { throw new Error(`'minutes' field in work '${title}' is not a number`); } return new taxonomy_1.Work(title, minutes, { kind: rawWork.kind ? String(rawWork.kind) : undefined, completionDate: rawWork.completionDate ? new time_utils_1.IsoDate(String(rawWork.completionDate)) : undefined, url: rawWork.url ? String(rawWork.url) : undefined, certificateUrl: rawWork.certificateUrl ? String(rawWork.certificateUrl) : undefined }); } RawWork.reify = reify; })(RawWork || (RawWork = {})); //# sourceMappingURL=reify.js.map