UNPKG

@aliceplex/core

Version:

[![License][license_badge]][license] [![Pipelines][pipelines_badge]][pipelines] [![Coverage][coverage_badge]][pipelines] [![NPM][npm_badge]][npm] [![semantic-release][semantic_release_badge]][semantic_release]

96 lines 3.45 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const cheerio_1 = __importDefault(require("cheerio")); const moment_1 = __importDefault(require("moment")); const lodash_1 = __importDefault(require("lodash")); const format_1 = require("../../format"); exports.parseElement = (element) => { cheerio_1.default("sup", element).remove(); cheerio_1.default("style", element).remove(); cheerio_1.default("ruby", element).each((_, ruby) => { if (cheerio_1.default("rp", ruby).length > 0) { return; } cheerio_1.default("rt", ruby) .prepend("(") .append(")"); }); cheerio_1.default("br", element).replaceWith("\n"); cheerio_1.default("hr", element).replaceWith("\n"); cheerio_1.default("li", element).append("\n"); return [cheerio_1.default(element).text()]; }; exports.createRowMapping = (table, multipleRow) => { if (lodash_1.default.isUndefined(multipleRow)) { return lodash_1.default.range(table.length).map(i => [i]); } const rowMap = []; let index = 0; let prev = []; table.forEach((cols, row) => { if (!lodash_1.default.isArray(rowMap[index])) { rowMap[index] = []; } const current = cols[multipleRow]; if (lodash_1.default.eq(current, prev) || row === 0) { rowMap[index].push(row); } else { index++; rowMap[index] = [row]; } prev = current; }); return rowMap; }; const parseSimpleString = (values) => values.map(v => format_1.normalize(v).replace(/\n+/g, " ")); const parseSimpleDate = (values) => moment_1.default(values[0]).format("YYYY-MM-DD"); const parseSpaceString = (values) => { const result = lodash_1.default.flatMap(values, value => value .split(/\s+/) .filter(v => v) .map(format_1.normalize)); return lodash_1.default.uniq(result); }; exports.createData = (options, table, rowMap) => { const { mapping = {}, parseTitle = parseSimpleString, parseAired = parseSimpleDate, parseDirectors = parseSpaceString, parseWriters = parseSpaceString } = options; const { title, aired, directors, writers } = mapping; const data = {}; const values = []; rowMap.forEach(row => { table[row].forEach((col, i) => { if (!lodash_1.default.isArray(values[i])) { values[i] = []; } values[i] = [...values[i], ...col]; }); }); if (lodash_1.default.isNumber(title)) { data.title = parseTitle(values[title]); } if (lodash_1.default.isNumber(aired)) { data.aired = parseAired(values[aired]); } if (lodash_1.default.isNumber(directors)) { data.directors = parseDirectors(values[directors]); } if (lodash_1.default.isNumber(writers)) { data.writers = parseWriters(values[writers]); } return { data, thumbnails: [] }; }; exports.checkExcept = (table, expect) => { expect.forEach((value, [row, col]) => { const actual = table[row][col]; if (!lodash_1.default.isEqual(actual, value)) { throw new Error(`Expect ${value} at ${row}:${col}. Actual: ${actual}`); } }); }; //# sourceMappingURL=utils.js.map