EventParser
final class EventParser
Parser for a sched.com .ics
file, based on https://jococruise2019.sched.com export.
-
Creates an
Event
from an array of the raw lines appearing betweenBEGIN:VEVENT
andEND:VEVENT
lines in a sched.com.ics
file. Escape characters that may appear in “SUMMARY”, “DESCRIPTION” and “LOCATION” values are stripped.Declaration
Swift
func makeEvent(from properties: [String]) throws -> Event?
Parameters
components
[String]
containing the lines to be processed.Return Value
Event
if the date strings could be parsed, elsenil
. -
Declaration
Swift
func unescapedTextValue(_ value: any StringProtocol) -> String
-
Declaration
Swift
let gmtDateFormatter: DateFormatter
-
Declaration
Swift
let tzDateFormatter: DateFormatter
-
Declaration
Swift
func parseDateFromProperty(property keyAndParams: [Substring], value: String) throws -> Date
-
validateEventsInICS(_:
Asynchronouson: ) Takes an .ics Schedule file and compares it against the db. Returns a summary of what would change if the schedule is applied. Shows deleted events, added events, events with modified times, events with changes to their title or description text).
Declaration
Swift
func validateEventsInICS(_ scheduleFileStr: String, on db: Database) async throws -> EventUpdateDifferenceData
Parameters
scheduleFileStr
The contents of an ICS file; usually a sched.com
.ics
export. Conforms to RFC 5545.db
The connection to a database.
Return Value
EventUpdateDifferenceData
with info on the events that were modified/added/removed . -
Takes an .ics Schedule file, updates the db with new info from the schedule. Returns a summary of what changed and how (deleted events, added events, events with modified times, events with changes to their title or description text).
Declaration
Swift
func updateDatabaseFromICS(_ scheduleFileStr: String, on db: Database, forumAuthor: UserHeader, processDeletes: Bool = true, makeForumPosts: Bool = true) async throws
Parameters
scheduleFileStr
The contents of an ICS file; usually a sched.com
.ics
export. Conforms to RFC 5545.db
The connection to a database.
forumAuthor
If there are changes and
makeForumPosts
is TRUE, the user to use as the author of the relevant forum posts.processDeletes
If TRUE (the default) events in the db but not in
scheduleFileStr
will be deleted from the db. Set to FALSE if you are applying a schedule patch (e.g. a schedule file with a single new event).makeForumPosts
Adds forum posts to each Event forum’s thread announcing the changes that were made to the event.