UNPKG

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.

50 lines (49 loc) 2 kB
import { generateCdataString, generateNumber, isObject, trimObject } from "../../../common/utils.js"; //#region src/namespaces/georss/generate/utils.ts const generateLatLngPairs = (points, pairsCount) => { const coordinates = []; for (const point of points) if (typeof point.lat === "number" && typeof point.lng === "number") coordinates.push(`${point.lat} ${point.lng}`); if (coordinates.length === 0) return; const actualPairCount = coordinates.length; if (pairsCount?.min && actualPairCount < pairsCount.min || pairsCount?.max && actualPairCount > pairsCount.max) return; return coordinates.join(" "); }; const generatePoint = (point) => { if (!isObject(point)) return; return generateLatLngPairs([point], { min: 1, max: 1 }); }; const generateLine = (line) => { if (!isObject(line)) return; return generateLatLngPairs(line.points, { min: 2 }); }; const generatePolygon = (polygon) => { if (!isObject(polygon)) return; return generateLatLngPairs(polygon.points, { min: 4 }); }; const generateBox = (box) => { if (!isObject(box) || !box.lowerCorner || !box.upperCorner) return; return generateLatLngPairs([box.lowerCorner, box.upperCorner], { min: 2, max: 2 }); }; const generateItemOrFeed = (itemOrFeed) => { if (!isObject(itemOrFeed)) return; return trimObject({ "georss:point": generatePoint(itemOrFeed.point), "georss:line": generateLine(itemOrFeed.line), "georss:polygon": generatePolygon(itemOrFeed.polygon), "georss:box": generateBox(itemOrFeed.box), "georss:featureTypeTag": generateCdataString(itemOrFeed.featureTypeTag), "georss:relationshipTag": generateCdataString(itemOrFeed.relationshipTag), "georss:featureName": generateCdataString(itemOrFeed.featureName), "georss:elev": generateNumber(itemOrFeed.elev), "georss:floor": generateNumber(itemOrFeed.floor), "georss:radius": generateNumber(itemOrFeed.radius) }); }; //#endregion export { generateBox, generateItemOrFeed, generateLatLngPairs, generateLine, generatePoint, generatePolygon };