import { isArrayLike as isArray, mapObjIndexed } from 'ramda';
export class Subject {
constructor(obj) {
/**
* Because you can't directly assign a value to `this` using ES6 destructuring I'm mapping the
* properties of the `subjects` object to the `this` object dynamically.
*/
Object.keys(obj).map((key) => this[key] = obj[key]);
}
}
export default class Subjects {
constructor(obj) {
let subjects = {};
let length = 0;
if (isArray(obj.ssrGetCoursesResp.courseSearchResult.subjects.subject)) {
subjects = mapObjIndexed((subject, index) => {
++length;
return new Subject(subject);
}, obj.ssrGetCoursesResp.courseSearchResult.subjects.subject);
} else {
++length;
subjects['0'] = new Subject(obj.ssrGetCoursesResp.courseSearchResult.subjects.subject);
}
subjects.length = length;
Object.keys(subjects).map((key) => this[key] = subjects[key]);
}
}
|