UNPKG

eksi-sozluk

Version:
101 lines (89 loc) 1.72 kB
const { URLS } = require('../constants') const EntryCollection = require('./EntryCollection') /** * Title. */ class Title { /** * Title id, if the title is an user (like a corporate account event) will be null. * * @type {(number|null)} */ id /** * Title name. * * @type {string} */ name /** * Title URL. * * @type {string} */ url /** * Title slug. * * @type {string} */ slug /** * Title entry count. * * @type {number} */ entryCount /** * Entry collection. * * @type {EntryCollection} */ entries /** * Create title. * * @param {object} request Axios client. */ constructor (request) { this._request = request } /** * Parse properties with given document. * * @param {object} $ Cheerio document. * @param {object} elm Cheerio element. * @ignore */ serialize ($, elm) { const name = $(elm) .text() .trim() const entryCountStr = $(elm) .find('small') .text() const entryCount = parseInt(entryCountStr) const slug = $(elm) .find('a') .attr('href') .split('?')[0] .replace('/', '') this.id = parseInt(slug.split('--')[1]) || null this.name = name.substring(0, name.length - entryCountStr.length).trim() this.url = URLS.BASE + $(elm) .find('a') .attr('href') this.slug = slug this.entryCount = entryCountStr.includes('b') ? 1000 * entryCount : entryCount || 1 const endpoint = $(elm) .find('a') .attr('href') .replace('/', '') this.entries = new EntryCollection(this._request, endpoint) } } module.exports = Title