gpx-builder
Version:
Builder of GPX files
55 lines (42 loc) • 1.3 kB
text/typescript
import { Extensions, Link, Route as RouteData } from '../../../types';
import Point from './Point';
export default class Route {
private cmt?: string;
private desc?: string;
private extensions?: Extensions;
private link?: Link;
private name?: string;
private number?: number;
private rtept?: Point[];
private src?: string;
private type?: string;
/**
* @see http://www.topografix.com/gpx/1/1/#type_rteType
*/
public constructor(data: Omit<RouteData, 'rtept'> & { rtept?: Point[] }) {
this.cmt = data.cmt;
this.desc = data.desc;
this.extensions = data.extensions;
this.link = data.link;
this.name = data.name;
this.number = data.number;
this.rtept = data.rtept;
this.src = data.src;
this.type = data.type;
}
public toObject(): RouteData {
const { cmt, desc, src, link, number, type, extensions, rtept, name } =
this;
return {
...(cmt ? { cmt } : {}),
...(desc ? { desc } : {}),
...(src ? { src } : {}),
...(link ? { link } : {}),
...(typeof number === 'number' ? { number } : {}),
...(type ? { type } : {}),
...(extensions ? { extensions } : {}),
...(rtept ? { rtept: rtept.map((item) => item.toObject()) } : {}),
...(name ? { name } : {}),
};
}
}