feedsmith
Version:
Fast, all‑in‑one feed parser and generator for RSS, Atom, RDF, and JSON Feed, with support for Podcast, iTunes, Dublin Core, and OPML files.
42 lines (41 loc) • 2.22 kB
JavaScript
import { isObject, parseArrayOf, parseSingularOf, parseString, parseYesNoBoolean, retrieveText, trimObject } from "../../../common/utils.js";
//#region src/namespaces/googleplay/parse/utils.ts
const parseImage = (value) => {
if (isObject(value) && value["@href"]) return trimObject({ href: parseString(value["@href"]) });
const text = retrieveText(value);
if (text) return trimObject({ href: parseString(text) });
};
const parseCategory = (value) => {
if (isObject(value) && value["@text"]) return parseString(value["@text"]);
return parseString(retrieveText(value));
};
const parseExplicit = (value) => {
const explicit = retrieveText(value)?.trim().toLowerCase();
if (explicit === "clean") return explicit;
return parseYesNoBoolean(value);
};
const retrieveItem = (value) => {
if (!isObject(value)) return;
return trimObject({
author: parseSingularOf(value["googleplay:author"], (value) => parseString(retrieveText(value))),
description: parseSingularOf(value["googleplay:description"], (value) => parseString(retrieveText(value))),
explicit: parseSingularOf(value["googleplay:explicit"], parseExplicit),
block: parseSingularOf(value["googleplay:block"], (value) => parseYesNoBoolean(retrieveText(value))),
image: parseSingularOf(value["googleplay:image"], parseImage)
});
};
const retrieveFeed = (value) => {
if (!isObject(value)) return;
return trimObject({
author: parseSingularOf(value["googleplay:author"], (value) => parseString(retrieveText(value))),
description: parseSingularOf(value["googleplay:description"], (value) => parseString(retrieveText(value))),
explicit: parseSingularOf(value["googleplay:explicit"], parseExplicit),
block: parseSingularOf(value["googleplay:block"], (value) => parseYesNoBoolean(retrieveText(value))),
image: parseSingularOf(value["googleplay:image"], parseImage),
newFeedUrl: parseSingularOf(value["googleplay:new-feed-url"], (value) => parseString(retrieveText(value))),
email: parseSingularOf(value["googleplay:email"], (value) => parseString(retrieveText(value))),
categories: parseArrayOf(value["googleplay:category"], parseCategory)
});
};
//#endregion
export { parseCategory, parseExplicit, parseImage, retrieveFeed, retrieveItem };