diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2023-09-13 00:01:28 +0200 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2023-09-13 00:01:28 +0200 |
commit | a82b6c772089aa46e30c6c89ef48f514294df3cb (patch) | |
tree | e25d9b6fd1fefe8b6ac293a5c0b53293872a8f54 /static/ts/jcal.ts | |
parent | Add basic documentation for lens. (diff) | |
parent | Even more documentation. (diff) | |
download | calp-a82b6c772089aa46e30c6c89ef48f514294df3cb.tar.gz calp-a82b6c772089aa46e30c6c89ef48f514294df3cb.tar.xz |
Merge branch 'next' into datarewrite-structures
Diffstat (limited to '')
-rw-r--r-- | static/ts/jcal.ts (renamed from static/jcal.ts) | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/static/jcal.ts b/static/ts/jcal.ts index 41f33db4..feac297b 100644 --- a/static/jcal.ts +++ b/static/ts/jcal.ts @@ -1,8 +1,19 @@ +/** + Operations for working with jCal. + + jCal is defined in RFC 7265, and is a JSON mapping of the iCalendar standard. +*/ + + export { jcal_to_xcal } import { xcal, ical_type, JCalProperty, JCal } from './types' import { asList } from './lib' +/** + * A document with the xcal namespace, and @code{icalendar} as its root + * element. Each child is a valid xcal representation of our JCal object. + */ function jcal_type_to_xcal(doc: Document, type: ical_type, value: any): Element { let el = doc.createElementNS(xcal, type); switch (type) { @@ -157,6 +168,17 @@ function jcal_property_to_xcal_property( } +/** + Convert a jCal document into an xCal document. + + @param jcals A list of jcal components. Most iCal formats supports multiple + "root" levels components. jCal might do it, which is why this parameter is + multi-valued. + + @return A document note which is the root of an xCal document. + The root will be an icalendar tag, with each child getting its data from each + element of the input. + */ function jcal_to_xcal(...jcals: JCal[]): Document { let doc = document.implementation.createDocument(xcal, 'icalendar'); for (let jcal of jcals) { @@ -165,6 +187,18 @@ function jcal_to_xcal(...jcals: JCal[]): Document { return doc; } +/** + Convert a single jCal entry into a single xCal entry. + + @param doc + A Document element in the xcal namespace. + + @param jcal + The object to convert + + @return + A 1-to-1 mapping of the jCal object as xCal. + */ function jcal_to_xcal_inner(doc: Document, jcal: JCal) { let [tagname, properties, components] = jcal; |