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.

55 lines (54 loc) 2.27 kB
const require_utils = require("../../../common/utils.cjs"); //#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 (!require_utils.isObject(point)) return; return generateLatLngPairs([point], { min: 1, max: 1 }); }; const generateLine = (line) => { if (!require_utils.isObject(line)) return; return generateLatLngPairs(line.points, { min: 2 }); }; const generatePolygon = (polygon) => { if (!require_utils.isObject(polygon)) return; return generateLatLngPairs(polygon.points, { min: 4 }); }; const generateBox = (box) => { if (!require_utils.isObject(box) || !box.lowerCorner || !box.upperCorner) return; return generateLatLngPairs([box.lowerCorner, box.upperCorner], { min: 2, max: 2 }); }; const generateItemOrFeed = (itemOrFeed) => { if (!require_utils.isObject(itemOrFeed)) return; return require_utils.trimObject({ "georss:point": generatePoint(itemOrFeed.point), "georss:line": generateLine(itemOrFeed.line), "georss:polygon": generatePolygon(itemOrFeed.polygon), "georss:box": generateBox(itemOrFeed.box), "georss:featureTypeTag": require_utils.generateCdataString(itemOrFeed.featureTypeTag), "georss:relationshipTag": require_utils.generateCdataString(itemOrFeed.relationshipTag), "georss:featureName": require_utils.generateCdataString(itemOrFeed.featureName), "georss:elev": require_utils.generateNumber(itemOrFeed.elev), "georss:floor": require_utils.generateNumber(itemOrFeed.floor), "georss:radius": require_utils.generateNumber(itemOrFeed.radius) }); }; //#endregion exports.generateBox = generateBox; exports.generateItemOrFeed = generateItemOrFeed; exports.generateLatLngPairs = generateLatLngPairs; exports.generateLine = generateLine; exports.generatePoint = generatePoint; exports.generatePolygon = generatePolygon;