1
Fork 0
mirror of https://github.com/pds-nest/nest.git synced 2024-11-25 14:34:19 +00:00
pds-2021-g2-nest/nest_frontend/objects/TimeRay.js

46 lines
1.1 KiB
JavaScript
Raw Normal View History

2021-05-24 03:02:07 +00:00
import { SerializationError } from "./Errors"
/**
* An half-line of time, defined by a `date` and a boolean `isBefore` indicating if the time before or after the
* specified date should be selected.
*/
export default class TimeRay {
isBefore
date
/**
* @param isBefore - `true` to select times earlier than the date, `false` to select times after the date.
* @param date - The date to start measurements from.
*/
constructor(isBefore, date) {
this.isBefore = isBefore
this.date = date
}
2021-05-24 03:02:07 +00:00
static rawRegex = /^(?<isBefore>[><]) (?<date>.+)$/
static fromRaw(data) {
const match = this.rawRegex.exec(data)
if(!match) throw new SerializationError(data)
const isBefore = match.groups.isBefore === "<"
const date = new Date(match.groups.date)
return new TimeRay(isBefore, date)
}
/**
* @returns {string}
*/
toString() {
return `${this.isBefore ? "<" : ">"} ${this.date.toISOString()}`
}
2021-05-22 02:32:47 +00:00
includes(date) {
2021-05-23 14:20:53 +00:00
return Boolean((
this.date > date
) ^ this.isBefore)
2021-05-22 02:32:47 +00:00
}
}