::=(
f
key ( format | selector | value )* comment? )
A viewer can use a format transform to alter the appearance of an expression on screen. These can be as simple as text formatting or as complex as a music player or a slideshow viewer.
A format expression can be considered an arbitrary function call that runs in the viewer.
The key specifies which function should be run and can also be used to group functions together into formatting chains with each previous function's result curried to the next function. The atom's value and metadata act as parameters to the first function call.
(@LAND Edwin Land :brand Polaroid (f bold)) ⇒ Edwin Land
(@LAND :brand (f upper)) ⇒ POLAROID
(@LAND :brand (f wordmark (f upper) (f bold) (f italic))) ⇒ POLAROID
(c tm (f sx-70-tm (f font Pill Gothic :size 12 pt :weight 500)))
(@LAND :brand (f workmark)) (@SX-70 SX-70 (f sx-70-tm)) ⇒ POLAROID SX-70
(@wonder-if-take-you-home Wonder If I Take You Home :artist (@lisa-lisa) :year (@1985) (f song-player)) ⇒ song-player interface
(c disney-documents (f biblio)) ⇒ automated bibliography
(c disney-documents (f timeline :tick-marks 5)) ⇒ timeline of canon
(v my-thesis (f timeline images)) ⇒ timeline of images in a view
(@my-program [filespec] (f js)) ⇒ run a JS file in the viewer
Format functions are atoms with one limitation: they cannot contain other atoms or transforms, only other formats, selectors, or values. Otherwise, the storage and recall of formats is identical to other atoms. This allows formats to be defined on-the-fly, stored in canon, views, streams, worlds, and machines, and recalled and used in short form like other atoms.