The issr-core Reference Manual

This is the issr-core Reference Manual, version 0.1, generated automatically by Declt version 4.0 beta 2 "William Riker" on Mon Feb 26 16:08:53 2024 GMT+0.

Table of Contents


1 Systems

The main system appears first, followed by any subsystem dependency.


1.1 issr-core

Make Interactive-Server-Side-Rendered web pages with declaritive and recursive programming. This is the core functionality is reusable for all server modules.

Author

Charles Jackson <>

License

LLGPL

Version

0.1

Dependencies
  • plump (system).
  • global-vars (system).
  • str (system).
  • tailrec (system).
Source

issr-core.asd.

Child Components

2 Files

Files are sorted by type and then listed depth-first from the systems components trees.


2.1 Lisp


2.1.1 issr-core/issr-core.asd

Source

issr-core.asd.

Parent Component

issr-core (system).

ASDF Systems

issr-core.

Packages

issr-core-asd.


2.1.2 issr-core/package.lisp

Source

issr-core.asd.

Parent Component

issr-core (system).

Packages

issr-core.


2.1.3 issr-core/issr-core.lisp

Dependency

package.lisp (file).

Source

issr-core.asd.

Parent Component

issr-core (system).

Public Interface
Internals

descendant (function).


3 Packages

Packages are listed by definition order.


3.1 issr-core

Source

package.lisp.

Use List

common-lisp.

Public Interface
Internals

descendant (function).


3.2 issr-core-asd

Source

issr-core.asd.

Use List
  • asdf/interface.
  • common-lisp.

4 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


4.1 Public Interface


4.1.1 Special variables

Special Variable: *first-time*

T if it is the first time a connection is being made. Do NOT set globally; only bind dynamically. This should be the same as ‘(null ‘socket’)’.

Package

issr-core.

Source

issr-core.lisp.

Special Variable: *id*

Used to identify the socket at the first connection. Do NOT set globally; only bind dymaically.

Package

issr-core.

Source

issr-core.lisp.

Special Variable: *socket*

The current socket being used.
Do NOT set globally; only bind dymaically.

Package

issr-core.

Source

issr-core.lisp.

Special Variable: *ws-port*

The port to host the websocket server on.

Package

issr-core.

Source

issr-core.lisp.


4.1.2 Ordinary functions

Function: clean (node)

Remove whitespace and comments from the plump dom.

Package

issr-core.

Source

issr-core.lisp.

Function: diff-dom (old-dom new-dom &optional index indexes instructions)

Return a list of instructions to update the dom of OLD-DOM to look like NEW-DOM. OLD-DOM and NEW-DOM should both be plump virtual doms.
See issr.js for possible instructions.
Does not preserve OLD-DOM.
Every element in OLD-DOM should have an id attribute.

INDEXES: Reversed list of indexes to reach the current parent.
INDEX: (aref (children parent) INDEX) to get current node.

Package

issr-core.

Source

issr-core.lisp.

Function: ensure-ids (node)

Ensures that plump dom NODE and all of its subtrees have the id attribute.
If an element does not have an id attribute, ‘ensure-ids’ mutates it to have one. Returns the possibly modified NODE.

Package

issr-core.

Source

issr-core.lisp.

Function: generate-id (&optional length &key not-in)

Genereate a random number that has LENGTH digits and is not a member of NOT-IN. No leading zeros.

Package

issr-core.

Source

issr-core.lisp.

Function: hash-keys (hash-table)
Package

issr-core.

Source

issr-core.lisp.


4.2 Internals


4.2.1 Ordinary functions

Function: descendant (node indexes)

Return the dom node which is the child of ancestor NODE. INDEXES is a list of locations of the children list of NODE.

Package

issr-core.

Source

issr-core.lisp.


Appendix A Indexes


A.1 Concepts