s2-tools
Version:
A collection of geospatial tools primarily designed for WGS84, Web Mercator, and S2.
115 lines • 3.47 kB
JavaScript
import { parseCSVAsRecord } from '../../';
import { parseGtfsDate } from '../utils';
/**
* Enumeration to represent day availability in the calendar.
* 0 = Not available, 1 = Available
*/
export var GTFSDayAvailability;
(function (GTFSDayAvailability) {
/** 0 - Service not available on this day. */
GTFSDayAvailability[GTFSDayAvailability["NotAvailable"] = 0] = "NotAvailable";
/** 1 - Service available on this day. */
GTFSDayAvailability[GTFSDayAvailability["Available"] = 1] = "Available";
})(GTFSDayAvailability || (GTFSDayAvailability = {}));
/**
* # Calendar Information
*
* **Conditionally Required**
* Defines a set of dates when service is available for one or more routes.
* Required unless all dates of service are defined in `calendar_dates.txt`.
*/
export class GTFSCalendar {
/**
* **Required**
* Identifies a set of dates when service is available.
*/
serviceId;
/**
* **Required**
* Service availability on Mondays: 0 or 1.
*/
monday;
/**
* **Required**
* Service availability on Tuesdays: 0 or 1.
*/
tuesday;
/**
* **Required**
* Service availability on Wednesdays: 0 or 1.
*/
wednesday;
/**
* **Required**
* Service availability on Thursdays: 0 or 1.
*/
thursday;
/**
* **Required**
* Service availability on Fridays: 0 or 1.
*/
friday;
/**
* **Required**
* Service availability on Saturdays: 0 or 1.
*/
saturday;
/**
* **Required**
* Service availability on Sundays: 0 or 1.
*/
sunday;
/**
* **Required**
* Start service day (inclusive) for the interval. Format: YYYYMMDD
*/
startDate;
/**
* **Required**
* End service day (inclusive) for the interval. Format: YYYYMMDD
*/
endDate;
/** @param data - the parsed GTFS CSV data */
constructor(data) {
this.serviceId = data.service_id;
this.monday =
data.monday !== undefined
? parseInt(data.monday, 10)
: GTFSDayAvailability.NotAvailable;
this.tuesday =
data.tuesday !== undefined
? parseInt(data.tuesday, 10)
: GTFSDayAvailability.NotAvailable;
this.wednesday =
data.wednesday !== undefined
? parseInt(data.wednesday, 10)
: GTFSDayAvailability.NotAvailable;
this.thursday =
data.thursday !== undefined
? parseInt(data.thursday, 10)
: GTFSDayAvailability.NotAvailable;
this.friday =
data.friday !== undefined
? parseInt(data.friday, 10)
: GTFSDayAvailability.NotAvailable;
this.saturday =
data.saturday !== undefined
? parseInt(data.saturday, 10)
: GTFSDayAvailability.NotAvailable;
this.sunday =
data.sunday !== undefined
? parseInt(data.sunday, 10)
: GTFSDayAvailability.NotAvailable;
this.startDate = parseGtfsDate(data.start_date);
this.endDate = parseGtfsDate(data.end_date);
}
}
/**
* @param input - the input string to parse from
* @returns - an array of Calendars
*/
export function parseGTFSCalendars(input) {
const data = parseCSVAsRecord(input);
return data.map((d) => new GTFSCalendar(d));
}
//# sourceMappingURL=calendar.js.map