OmniMark supports filter functions: functions that can filter a source of data, or can filter while data is being written.
Often some conversion of data is required on inbound or outbound data: for example, conversion on output from UTF-8 to one of the Japanese Industry Standard character codes, or conversion into an encrypted form, such as Blowfish
.
Two types are allowed to be specified for function arguments types and function return types: string source
and string sink
.
A string source
argument can be passed anything that can be scanned or submitted, including calls to other string source
functions. A string source
argument allows read-in data to be converted by the function, and the converted data to be used as an input. Amongst other things, it can be passed to another filter function—they can be chained together.
A string sink
argument does the same thing as a string source
argument in the other direction: it can be any use of file
or a call to a string sink
function of the sort that's allowed on the right-hand-side of an open
action, following as
.
string source
and string sink
arguments must be value
arguments.
Here's what two functions look like:
export external string source function reader from value string source input-data export external string sink function writer bom value switch add-bom optional initial {true} big-endian value switch make-big-endian optional initial {true} into value string sink output-data