aboutsummaryrefslogtreecommitdiff
path: root/doc/ref/javascript/lib.texi
diff options
context:
space:
mode:
Diffstat (limited to 'doc/ref/javascript/lib.texi')
-rw-r--r--doc/ref/javascript/lib.texi147
1 files changed, 147 insertions, 0 deletions
diff --git a/doc/ref/javascript/lib.texi b/doc/ref/javascript/lib.texi
new file mode 100644
index 00000000..eda72ccf
--- /dev/null
+++ b/doc/ref/javascript/lib.texi
@@ -0,0 +1,147 @@
+
+@node lib
+@section lib.js
+
+General procedures which in theory could be used anywhere.
+
+@defvar xcal
+The xml namespace name for xcalendar, which is
+``urn:ietf:params:xml:ns:icalendar-2.0''.
+@end defvar
+
+
+@node Default prototype extensions
+@subsection Default prototype extensions
+
+HTMLElement extensions
+
+@defmethod HTMLElement addEventListener name proc
+Replace the default @code{addEventListener} with a version that stores
+all listeners in the dictionary @var{listeners}.
+@end defmethod
+
+@defivar HTMLElement listeners
+Dictionary of all registered listeners to this element.
+Keys are taken from @code{addEventListener}.
+@end defivar
+
+@defmethod DOMTokenList find regexp
+Finds the first element of the DOMTokenList whichs value matches
+the supplied regexp. Returns a pair of the index and the value.
+@end defmethod
+
+@defmethod Object format args ...
+Returns a string representation of the given object.
+Allows extending for custom types,
+@ref{date-format}
+@end defmethod
+
+@node General
+@subsection General
+
+@defun zip args ...
+Takes a list of lists, and returns a single list of tuples.
+@example
+» zip([1,2,3,4,5], "Hello")
+← [[1,'H'],[2,'e'],[3,'l'],[4,'l'],[5,'o']]
+@end example
+@end defun
+
+@defun makeElement name [attr=@{@}]
+Creates a new DOM element of type @var{name}, with all keys in
+@var{attr} transfered to it. For example, the equivalent of
+@example
+<input type='number'/>
+@end example
+would be
+@verbatim
+values.push(makeElement('input', {
+ type: 'number',
+}));
+@end verbatim
+.
+@end defun
+
+@defun round_time time fraction
+TODO
+@end defun
+
+@defun date_to_percent date
+Retuns how far along the date specified by @var{date} is, between 0
+and 100, where 00:00 maps to 0, and 23:59 to ~100.
+@end defun
+
+@defun gensym [pxrefix='gensym']
+Generates a new string which is (hopefully) globally unique.
+Compare with @code{gensym} from Lisp.
+@end defun
+
+@defun setVar str val
+Set the CSS var @var{str} to @var{val} on the root element.
+@end defun
+
+@defun asList thing
+Ensures that @var{thing} is a list. Returning it outright if it
+already is one, otherwise wrapping it in a list.
+@end defun
+
+@node Date
+@subsection Date
+
+Some extensions to the builtin class ``Date'' is made.
+
+@defivar Date utc
+Boolean indicating if the given timestamp is in UTC or local time.
+true means UTC.
+@end defivar
+
+@defivar Date dateonly
+Boolean indicating if the time component of the Date object should be disregarded.
+@end defivar
+
+@defun parseDate str
+Takes a string @var{str}, which should be in ISO-8601 date-format, and
+returns a javascript Date object.
+@end defun
+
+@defun copyDate date
+Creates a new instance of the given Date @var{date}, also transfers my
+custom fields.
+@end defun
+
+@defun to_local date
+@anchor{to_local}
+Returns a Date object (which may be new) which is guaranteed in local
+time.
+This means that the @var{utc} field is @code{false}, and that
+@code{to_local(current_time())} should show what your wall-clock shows.
+@end defun
+
+@defmethod Date format str args ...
+@anchor{date-format}
+Formats a Date object according to the format specification @var{str}.
+Keeping with Guile each format specifier starts with a ~.
+
+@c table formatting borrowed from Gulie Reference (SRFI-19 Date to string)
+@multitable {MMMM} {MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM}
+@item @nicode{~~} @tab literal ~
+@c Almost all fields are left padded. How do I signify this
+@c with a single footnote?
+@item @nicode{~Y} @tab year, left-padding with zeroes.
+@item @nicode{~m} @tab month number, left padded with zeroes.
+@item @nicode{~d} @tab day of month.
+@item @nicode{~H} @tab hour
+@item @nicode{~M} @tab minute
+@item @nicode{~S} @tab second
+@item @nicode{~Z} @tab 'Z' if Date is UTC, otherwise nothing
+
+@item @nicode{~L} @tab Converts the date to local time
+(@pxref{to_local}) (doesn't modify source object). Outputs nothing
+@end multitable
+@end defmethod
+
+@defun format_date date str
+Equivalent to @code{(@var{date}).format(@var{str})}.
+@c TODO link
+@end defun
+