UNPKG

ih-black-lion

Version:

State handler for Arus projects

33 lines (27 loc) 950 B
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]); } }