pattern
Library: UTF-8 (OMUTF8)
Import : omutf8.xmd |
export switch function multi-byte-char overlong-handling value error-handling-type overlong-handling optional
The function utf8.multi-byte-char
matches only multi-byte UTF-8 encoded characters (those with numeric
values greater than 128). By default, utf8.multi-byte-char
will not match overlong values. You can change
this behavior by specifying the overlong-handling argument
as utf8.allowed
. If overlong-handling is specified
as utf8.not-allowed-with-throw
, an overlong value will trigger a throw
to utf8.overlong-sequence
. If it is not specified, or specified as utf8.not-allowed
,
overlong sequences are not matched and the pattern functions will return false
.
The following program uses utf8.multi-byte-char
to match multi-byte UTF-8 characters and re-emit them
as XML character entities:
import "omutf8.xmd" prefixed by utf8. process repeat scan "flamb%195#%169#" match utf8.single-byte-char+ => c output c match utf8.multi-byte-char => c local integer n initial { utf8.code-point of c } do when n > 255 output "&#x" || "16rud" % n || ";" else output "b" % n done again
To use utf8.multi-byte-char
, you must import OMUTF8 into your program using
an import declaration such as:
import "omutf8.xmd" prefixed by utf8.