@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
JavaScript
;
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