function
Library: Base 64 (OMFFBASE64)
Import : omffbase64.xmd |
Returns: a scannable input source for streaming data |
export external string source function reader from value string source input-data
Use base64.reader
to read its value string source
input-data argument, and
return the binary data converted from a Base 64 encoding to raw binary octets. That is, the provided data is in
Base 64, but the program sees binary data.
Any input data not recognized as part of a Base 64 encoding is ignored, so this library should not be used to validate Base 64 encoding.
The function read-attachment ()
below reads as much Base 64 as can be found in its string
source
argument, passes it through base64.reader
, thereby converting it from Base 64 to raw binary data,
and emits the raw data on its #current-output
.
import "omffbase64.xmd" prefixed by base64. define string source function read-attachment (value string source s) as output base64.reader from (s take [letter | digit | "+/=%10#%13#"]+)
Base 64 data can be padded with one or two =
characters when the original binary data is not a
multiple of three bytes. When base64.reader
is used to decode such a padded string
, the trailing
bytes are mapped to null bytes. If these trailing null bytes are undesired, they can be removed by using pattern
matching, as in
output (omffbase64.reader from #current-input) take any ++ lookahead ("%0#"* value-end)
To use base64.reader
, you must import OMFFBASE64 into your program using an
import declaration such as:
import "omffbase64.xmd" prefixed by base64.