@node Guile @chapter Guile @include guile/datetime.texi @include guile/zic.texi @include guile/srfi-41.texi @include guile/util.texi @include guile/util-path.texi @include guile/util-config.texi @include guile/util-type.texi @include guile/util-object.texi @include guile/base64.texi @include guile/web.texi @include guile/vcomponent.texi @node Errors and Conditions @section Errors and Conditions @subsection ``Special'' Errors @deftp{Error type} return Thrown in some sub-mains to quickly return from the sub-function. Should possibly be replaced by an explicit return-continuation. @end deftp @deftp{Error type} warning fmt args Thrown when @code{warnings-are-errors} is true. @end deftp @deftp{Error type} max-page page-number @end deftp @subsection ``Regular'' Errors All below mentioned error types behave as expected, e.g., they are produced through @code{scm-error}. @deftp{Error Type} configuration-error Thrown by (calp util config), in some scenarios. @TODO{Better documentation} @end deftp @deftp{Error Type} c-parse-error Errors thrown by our make-shift C parser. @end deftp @deftp{Error Type} decoding-error thrown by base64 in some cases @end deftp @deftp{Error Type} parse-error Thrown by some things related to parsing, but not all. @TODO{normalize parsing errors further} @end deftp @deftp{Error Type} graph-error The first element of data is guaranteed to be the graph which caused the error. @end deftp @deftp{Error Type} missing-helper A helper program we wanted was missing, could be resolved by somehow downloading it into one of the searched locations. @example data : (program-name : string) , (searched-locations : (list string)) @end example @end deftp @node Other @section Other @defun get-parser type @example get-parser ∷ type-name → hash-table x string → any type = 'BINARY | 'BOOLEAN | 'CAL-ADDRES | 'DATE | 'DATE-TIME | 'DURATION | 'FLOAT | 'INTEGER | 'PERIOD | 'RECUR | 'TEXT | 'TIME | 'URI | 'UTC-OFFSET @end example @ref{ical-get-writer} @end defun @subsection formats ical @subsubsection output @defun component->ical-string component @end defun @defun print-components-with-fake-parent events @end defun @defun print-all-events @end defun @defun print-events-in-interval start end @end defun @subsubsection parse @defun parse-calendar port @end defun @subsubsection types @defun escape-chars str Escape @code{,}, @code{;} and @code{\} with a backslash, and encode newlines as @code{\n}. @end defun @defun get-writer type @anchor{ical-get-writer} @example get-writer ∷ type-name → hash-table x value → string type = 'BINARY | 'BOOLEAN | 'CAL-ADDRES | 'DATE | 'DATE-TIME | 'DURATION | 'FLOAT | 'INTEGER | 'PERIOD | 'RECUR | 'TEXT | 'TIME | 'URI | 'UTC-OFFSET @end example @end defun @subsection formats vdir @subsubsection parse @defun parse-vdir path @end defun @subsubsection save-delete @defun save-event event @end defun @defun remove-event event @end defun @subsection formats xcal @subsubsection output @defun vcomponent->sxcal component @end defun @defun ns-wrap @lisp (define (ns-wrap sxml) `(icalendar (@@ (xmlns "urn:ietf:params:xml:ns:icalendar-2.0")) ,sxml)) @end lisp Where @var{sxml} is expected to be the output of @var{vcomponent->sxcal}. @end defun @subsubsection parse @defun sxcal->vcomponent sxcal Parses a vcomponent in sxcal format. Requires that the vcomponent is the root of the document (fragment), so wrapping icalendar-tags or similar @emph{must} be removed. @example (vcalendar (properties ...) (components ...)) @end example @end defun @subsubsection types @defun get-writer type @ref{ical-get-writer} @end defun @c -------------------------------------------------- @c TODO This chapter will probably in the future be replaced by a proper system overview in the future. @c module (vcomponent control) @defmac with-replaced-properties (component (key value) ...) body ... Through the extent of @var{body} each @var{key}'s value in @var{component} is replaced by its repspective @var{value}. Note that @var{body} is guarded through a dynamic-wind, meaning that even non-local exits will restore @var{component} to its initial state. @end defmac