gpx-builder
Version:
Builder of GPX files
88 lines (75 loc) • 1.9 kB
text/typescript
import { Extensions, Meta } from '../../../types';
import Bounds from './Bounds';
import Copyright from './Copyright';
import Link from './Link';
import Person from './Person';
export default class Metadata {
private name: string | null;
private desc: string | null;
private author: Person | null;
private copyright: Copyright | null;
private link: Link | null;
private time: Date | null;
private keywords: string | null;
private bounds: Bounds | null;
private extensions: Extensions | null;
/**
* @see http://www.topografix.com/gpx/1/1/#type_metadataType
*/
// eslint-disable-next-line
public constructor({
name,
desc,
author,
copyright,
link,
time,
keywords,
bounds,
extensions,
}: {
author?: Person;
bounds?: Bounds;
copyright?: Copyright;
desc?: string;
extensions?: Extensions;
keywords?: string;
link?: Link;
name?: string;
time?: Date;
}) {
this.name = name || null;
this.desc = desc || null;
this.author = author || null;
this.copyright = copyright || null;
this.link = link || null;
this.time = time || null;
this.keywords = keywords || null;
this.bounds = bounds || null;
this.extensions = extensions || null;
}
public toObject(): Meta {
const {
name,
desc,
author,
copyright,
link,
time,
keywords,
bounds,
extensions,
} = this;
return {
...(name ? { name } : {}),
...(desc ? { desc } : {}),
...(author ? { author: author.toObject() } : {}),
...(copyright ? { copyright: copyright.toObject() } : {}),
...(link ? { link: link.toObject() } : {}),
...(time ? { time } : {}),
...(keywords ? { keywords } : {}),
...(bounds ? { bounds: bounds.toObject() } : {}),
...(extensions ? { extensions } : {}),
};
}
}