feedsmith
Version:
Robust and fast parser and generator for RSS, Atom, JSON Feed, and RDF feeds, with support for Podcast, iTunes, Dublin Core, and OPML files.
64 lines • 2.67 kB
JavaScript
import { isObject, parseArrayOf, parseBoolean, parseCsvOf, parseNumber, parseSingularOf, parseString, parseTextNumber, parseTextString, retrieveText, trimObject, } from '../../common/utils.js';
export const parseOutline = (value) => {
if (!isObject(value)) {
return;
}
return trimObject({
text: parseString(value['@text']),
type: parseString(value['@type']),
isComment: parseBoolean(value['@iscomment']),
isBreakpoint: parseBoolean(value['@isbreakpoint']),
created: parseString(value['@created']),
category: parseString(value['@category']),
description: parseString(value['@description']),
xmlUrl: parseString(value['@xmlurl']),
htmlUrl: parseString(value['@htmlurl']),
language: parseString(value['@language']),
title: parseString(value['@title']),
version: parseString(value['@version']),
url: parseString(value['@url']),
outlines: parseArrayOf(value.outline, parseOutline),
});
};
export const parseHead = (value) => {
if (!isObject(value)) {
return;
}
return trimObject({
title: parseSingularOf(value.title, parseTextString),
dateCreated: parseSingularOf(value.datecreated, parseTextString),
dateModified: parseSingularOf(value.datemodified, parseTextString),
ownerName: parseSingularOf(value.ownername, parseTextString),
ownerEmail: parseSingularOf(value.owneremail, parseTextString),
ownerId: parseSingularOf(value.ownerid, parseTextString),
docs: parseSingularOf(value.docs, parseTextString),
expansionState: parseSingularOf(value.expansionstate, (value) => parseCsvOf(retrieveText(value), parseNumber)),
vertScrollState: parseSingularOf(value.vertscrollstate, parseTextNumber),
windowTop: parseSingularOf(value.windowtop, parseTextNumber),
windowLeft: parseSingularOf(value.windowleft, parseTextNumber),
windowBottom: parseSingularOf(value.windowbottom, parseTextNumber),
windowRight: parseSingularOf(value.windowright, parseTextNumber),
});
};
export const parseBody = (value) => {
if (!isObject(value)) {
return;
}
return trimObject({
outlines: parseArrayOf(value.outline, parseOutline),
});
};
export const parseOpml = (value) => {
if (!isObject(value?.opml)) {
return;
}
const opml = trimObject({
version: parseString(value.opml['@version']),
head: parseHead(value.opml.head),
body: parseBody(value.opml.body),
});
if (opml?.body?.outlines?.length) {
return opml;
}
};
//# sourceMappingURL=utils.js.map