@zougui/common.furaffinity
Version:
78 lines • 2.98 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.elementParsers = exports.parseTextElement = exports.parseUnknownElement = exports.parseAElement = exports.parseBrElement = exports.parseTextNode = void 0;
const common_url_utils_1 = require("@zougui/common.url-utils");
const href_1 = require("./href");
const dom_1 = require("./dom");
const parseTextNode = (data) => {
return {
type: 'text',
text: data.node.textContent || '',
};
};
exports.parseTextNode = parseTextNode;
const parseBrElement = (data, state) => {
state.elementIndex++;
return {
type: 'text',
text: '\n',
};
};
exports.parseBrElement = parseBrElement;
const parseAElement = (data, state) => {
var _a, _b, _c, _d;
state.elementIndex++;
if (!data.element) {
return;
}
const img = Array.from(data.element.children).find((node) => {
return (0, dom_1.getNodeName)(node) === 'img';
});
const href = (_a = data.element.attributes.getNamedItem('href')) === null || _a === void 0 ? void 0 : _a.value;
const fullHref = href && (0, href_1.getFullHref)(href, 'https://furaffinity.net');
const linkNode = {
type: 'link',
href: fullHref,
text: data.node.textContent || '',
};
if (!img) {
return linkNode;
}
const src = (_b = img.attributes.getNamedItem('src')) === null || _b === void 0 ? void 0 : _b.value;
const alt = (_c = img.attributes.getNamedItem('alt')) === null || _c === void 0 ? void 0 : _c.value;
const title = (_d = img.attributes.getNamedItem('title')) === null || _d === void 0 ? void 0 : _d.value;
return Object.assign(Object.assign({}, linkNode), { src: src && (0, common_url_utils_1.secureHttpProtocol)(src), alt,
title });
};
exports.parseAElement = parseAElement;
const parseUnknownElement = (data, state, parseElement) => {
var _a;
state.elementIndex++;
const attributes = {};
for (const attribute of ((_a = data.element) === null || _a === void 0 ? void 0 : _a.attributes) || []) {
attributes[attribute.name] = attribute.value;
}
return {
type: 'unknown',
text: data.node.textContent || '',
tagName: (0, dom_1.getNodeName)(data.node),
textAlign: data.element && (0, dom_1.getTextAlign)(data.element),
attributes,
children: data.element && parseElement(data.element),
};
};
exports.parseUnknownElement = parseUnknownElement;
const parseTextElement = (data, state, parseElement) => {
state.elementIndex++;
return (0, dom_1.getElementNode)(data.node, data.element, parseElement);
};
exports.parseTextElement = parseTextElement;
exports.elementParsers = {
'#text': exports.parseTextNode,
br: exports.parseBrElement,
a: exports.parseAElement,
unknown: exports.parseUnknownElement,
span: exports.parseTextElement,
strong: exports.parseTextElement,
};
//# sourceMappingURL=elementParsers.js.map