File: icalendar-ast.el.html

For an overview of the iCalendar library, see icalendar-shortdoc.el.

This file defines the abstract syntax tree representation for iCalendar data. The AST is based on org-element-ast (which see; that feature will eventually be renamed and moved out of the Org tree into the main tree).

This file contains low-level functions for constructing and manipulating the AST, most of which are minimal wrappers around the functions provided by org-element-ast. This low-level API is primarily used by icalendar-parser. It also contains a higher-level API for constructing AST nodes in Lisp code. Finally, it defines functions for validating AST nodes.

There are three main pieces of data in an AST node: its type, its value, and its child nodes. Nodes which represent iCalendar components have no values; they are simply containers for their children. Nodes which represent data of the base iCalendar data types have no children; they are the leaf nodes in the syntax tree. The main low-level accessors for these data in AST nodes are:

  icalendar-ast-node-type
  icalendar-ast-node-value
  icalendar-ast-node-children
  icalendar-ast-node-children-of
  icalendar-ast-node-first-child-of

To construct AST nodes in Lisp code, see especially the high-level macros:

  icalendar-make-vcalendar
  icalendar-make-vtimezone
  icalendar-make-vevent
  icalendar-make-vtodo
  icalendar-make-vjournal
  icalendar-make-property
  icalendar-make-param

These macros wrap the macro icalendar-make-node-from-templates, which allows writing iCalendar syntax tree nodes as Lisp templates.

Constructing nodes with these macros automatically validates them with the function icalendar-ast-node-valid-p, which signals an icalendar-validation-error if the node is not valid according to RFC5545.

Defined variables (0)

Defined functions (47)

icalendar--make-param--list(TYPE VALUE-TYPE RAW-VALUES)
icalendar--make-param--nonlist(TYPE VALUE-TYPE RAW-VALUE)
icalendar--make-property--list(TYPE VALUE-TYPES RAW-VALUES &optional PARAMS)
icalendar--make-property--nonlist(TYPE VALUE-TYPES RAW-VALUE &optional PARAMS)
icalendar-ast-node-adopt-children(PARENT &rest CHILDREN)
icalendar-ast-node-children(NODE)
icalendar-ast-node-children-of(TYPE NODE)
icalendar-ast-node-first-child-of(TYPE NODE)
icalendar-ast-node-meta-get(PROPERTY NODE &optional DFLT FORCE-UNDEFER)
icalendar-ast-node-meta-set(NODE PROPERTY VALUE)
icalendar-ast-node-p(VAL)
icalendar-ast-node-required-child-p(CHILD PARENT)
icalendar-ast-node-set-children(NODE &rest CONTENTS)
icalendar-ast-node-set-type(NODE TYPE)
icalendar-ast-node-set-value(NODE VALUE)
icalendar-ast-node-type(NODE &optional ANONYMOUS)
icalendar-ast-node-valid-children-p(NODE)
icalendar-ast-node-valid-p(NODE &optional RECURSIVELY)
icalendar-ast-node-valid-value-p(NODE)
icalendar-ast-node-value(NODE)
icalendar-component-node-p(NODE)
icalendar-component-type-symbol-p(TYPE)
icalendar-count-children-by-type(NODE)
icalendar-expects-list-of-values-p(TYPE)
icalendar-make-ast-node(TYPE PROPS &optional CHILDREN)
icalendar-make-component(TYPE &rest TEMPLATES)
icalendar-make-daylight(&rest TEMPLATES)
icalendar-make-node-from-templates(TYPE &rest TEMPLATES)
icalendar-make-param(TYPE VALUE)
icalendar-make-property(TYPE VALUE &rest PARAM-TEMPLATES)
icalendar-make-standard(&rest TEMPLATES)
icalendar-make-valarm(&rest TEMPLATES)
icalendar-make-value-node-of(TYPE VALUE)
icalendar-make-vcalendar(&rest TEMPLATES)
icalendar-make-vevent(&rest TEMPLATES)
icalendar-make-vfreebusy(&rest TEMPLATES)
icalendar-make-vjournal(&rest TEMPLATES)
icalendar-make-vtimezone(&rest TEMPLATES)
icalendar-make-vtodo(&rest TEMPLATES)
icalendar-param-node-p(NODE)
icalendar-param-type-symbol-p(TYPE)
icalendar-property-node-p(NODE)
icalendar-property-type-symbol-p(TYPE)
icalendar-signal-validation-error
icalendar-type-of(VALUE &optional TYPES)
icalendar-type-symbol-p(SYMBOL)
icalendar-value-type-symbol-p(SYMBOL)

Defined faces (0)