23. Bigloo The Programming Language (4.6a) User manual for version 4.6a January 2025 -- Web

main page

top: | Bigloo The Programming Language (4.6a) User manual for version 4.6a January 2025

Web

Chapters

This chapter describes the Bigloo API for Web programming.

### 23.1 Overview

The Bigloo web library supports tools helping Web programming. It contains XML, JSON, and CSS parsers, WebDAV tools, and function for handling the web formats of dates.

### 23.2 XML

xml-parse input-port #!key (content-length 0) (make-element (lambda (tag attr body start-pos) (list tag attr body))) (make-comment (lambda (str pos) str)) (make-declaration (lambda (str pos) (cons 'declaration str))) (make-cdata (lambda (str pos) (cons 'cdata str))) (make-xml-declaration (lambda (attr pos) (cons 'xml-decl attr))) (make-instruction (lambda (str pos) (cons 'instruction str))) (specials '()) (strict #t) (encoding 'UTF-8) (eoi #f)

bigloo procedure

Parses an XML documention. The arguments are:

- `input-port` the input port containing the document to be parsed.
- `content-length` if > 0, the number of characters to parse.
- `procedure` element constructor for backward compatibility. A function of 3 arguments: tag, attributes, children.
- `make-element` the element constructor. A function of 4 arguments: tag, attributes, children, start position.
- `make-comment` the comment constructor. A function of 2 arguments: the comment and the start position.
- `make-declaration` the declaration constructor. A function of 2 arguments: the declaration and the start position.
- `make-cdata` the cdata constructor. A function of 2 arguments: the cdata and the start position.
- `make-xml-declaration` the xml declaration constructor. A function of 2 arguments: the xml-declaration and the start position.
- `make-instruction` the instruction constructor. A function of 2 arguments: the instruction and the start position.
- `specials` an alist `(tag . parse)` of tags to be parsed using special parsers. This can be used to parse elements (e.g., HTML elements) that do not comply with strict syntax, for instance because they do not accept closing tags.
- `strict` a boolean, require strict xml syntax conformance.
- `encoding` a string, characters encoding.
- `eoi` an optional predicat that is true on end-of-input.

html-parse input-port #!key (content-length 0) (procedure list) (encoding 'UTF-8) (eoi #f) | bigloo procedure

Parse an HTML document. The optional arguments are:

- `input-port` the input port containing the document to be parsed.
- `content-length` if > 0, the number of characters to parse.
- `procedure` the function invoked to construct elements.
- `encoding` characters encoding.
- `eoi` an optional predicat that is true on end-of-input.

This function is mere wrapper of `xml-parse`.

unhtml-port input-port output-port #!key table | bigloo procedure

Removes tags from `input-port` and write the result to `output-port`. If provided, `table` must a hashtable associating HTML escape sequences (e.g., "&amp;") to strings used in the replacement.

unhtml str::bstring #!optional table | bigloo procedure

Removes HTML tags from the string `str`.

xml-string-decode str | bigloo procedure

xml-string-decode! str | bigloo procedure

xml-string-encode str | bigloo procedure

Decode/encode XML strings.

    (xml-string-decode "foo&gt;bar&#032;gee") =>  "foo>bar gee"

html-string-decode str | bigloo procedure

html-string-encode str | bigloo procedure

Decode/encode HTML strings.

    (xml-string-decode "foo&amp;bar&#quot;gee") =>  "foo&bar\"gee"

### 23.3 WebDAV

This section describes the functions that may help implementing WebDAV servers and clients.

&webdav-access-control-exception::&access-control-exception | class

The class used to raised access denied. It contains one field:

- `header`

webdav-directory->list url #!key (timeout 0) (proxy #f) | bigloo procedure

webdav-directory->path-list url #!key (timeout 0) (proxy #f) | bigloo procedure

The list of files, respec. urls, in the directory `url`.

webdav-directory->prop-list url #!key (timeout 0) (proxy #f) | bigloo procedure

The list of properties of a WebDAV repository.

webdav-file-exists? url #!key (timeout 0) (proxy #f) | bigloo procedure

Return `#t` if and only if `url` exists, returns `#f` otherwise.

webdav-directory? url #!key (timeout 0) (proxy #f) | bigloo procedure

Return `#t` if and only if `url` is a directory, returns `#f` otherwise.

webdav-file-modification-time url #!key (timeout 0) (proxy #f) | bigloo procedure

The last modification time of `url`.

webdav-file-size url #!key (timeout 0) (proxy #f) | bigloo procedure

The file size.

webdav-delete-file url #!key (timeout 0) (proxy #f) | bigloo procedure

webdav-delete-directory url #!key (timeout 0) (proxy #f) | bigloo procedure

Delete a file, respec. a directory.

webdav-make-directory url #!key (timeout 0) (proxy #f) | bigloo procedure

webdav-make-directories url #!key (timeout 0) (proxy #f) | bigloo procedure

Create a directory, respec. a directory hierarchy.

webdav-rename-file url dst #!key (timeout 0) (proxy #f) | bigloo procedure

webdav-cop-file url dst #!key (timeout 0) (proxy #f) | bigloo procedure

Rename, respec. copy, a WebDAV file.

webdav-put-file url obj #!key (timeout 0) (proxy #f) | bigloo procedure

Create a WebDAV file at `url` whose content is `obj`.

### 23.4 CSS

CSS files and rules are internally represented as an abstract syntax tree defined by the `css` class hierarchy given belown.
The type of fields whose names end with `*` is `pair-nil`. The type of fields whose names end with `+` is `pair`.

css-url value::bstring | class

css-ext value::bstring | class

css-stylesheed charset comment* import* rule*-nil | class

css-charset charset::bstring spec::bstring | class

css-comment cdo::bstring cdc::bstring content | class

css-import value medium* | class

css-media medium+ ruleset* | class

css-media-query operator type::bstring expr* | class

css-page ident pseudopage declaration* | class

css-fontface declaration* | class

css-keyframes operator::bstring ident::bstring keyframe* | class

css-pseudopage ident | class

css-ruleset stamp::int specificity selector+ declaration* | class

css-keyframe selector declaration* | class

css-selector element attr* | class

css-selector-class name | class

css-selector-hash name | class

css-selector-name name | class

css-selector-attr ident op arg | class

css-selector-pseudo expr fun | class

css-declaration proprety expr prio | class

css-function fun expr | class

css-hash-color value::bstring | class

css-write ast o::output-port | bigloo procedure

Output a CSS AST into a CSS document.

css->ast::css-stylesheet i::input-port #!key extension eoff | bigloo procedure

Parses a CSS document.

### 23.5 Date

w3c-datetime-timestamp | bigloo procedure

Returns the current date as a w3c datetime.

w3c-datetime->date | bigloo procedure

date->w3c-datetime | bigloo procedure

Convert from and to Bigloo Dates and W3C dates.

### 23.6 JSON

json-parse i::input-port #!key array-alloc array-set array-return object-alloc object-set object-return parse-error (undefined #t) reviver expr constant-alloc string-alloc | bigloo procedure

Parses a JSON document. The keywored arguments are:

- `array-alloc` a function of 0 argument invoked when parsing an array.
- `array-set` a function of 3 arguments invoked after each array element is parsed. The first argument is the result of the last `array-alloc` call. The second argument is the index, and the last, the element value.
- `array-return` a function of two arguments, the allocated array and the length.
- `object-alloc` a function of 0 argument.
- `object-set` a function of 3 arguments.
- `object-return` a function of 1 argument.
- `parse-error` a function of 3 arguments.
- `undefined` the value used to represent `undefined`.
- `constant-alloc` a function of one argument, the parsed contant.
- `string-alloc` a function of one argument, the parsed string.
- `reviver` either `#f` or a function of three arguments, invoked after parsing an object property.
- `expr` if false, check end-of-file after parsing the last JSON value.

This Html page has been produced by Skribe.
Last update Mon Jan 27 07:55:49 2025.