Contents

stefanspringer1/fastreplace

This package offers an efficient way to replace certain Unicode code points (either represented by `UnicodeScalar` or `UInt32`) with other values. Those methods might be more efficient than the replacement methods of the Swift standard library where grapheme clusters are consider

Duplicate keys produced by a macro

Be careful not to produce duplicate keys by using e.g. the #codepoint or #codepointForEntity macro: The following code compiles without a warning (at least with Swift version 6.0.0, cf. the bug report):

 text.replacing([
    #codepointForEntity("½"): " 1 / 2 ",
    #codepointForEntity("½"): " 1 / 2 ",
    #codepointForEntity("⅓"): " 1 / 3 ",
])

But #codepointForEntity("½") and #codepointForEntity("½") are both expanded to 0xBD, so we have defined a dictionary with duplicate keys. If you used this value directly as keys, this would produce the warning “Dictionary literal of type '[UInt32 : String]' has duplicate entries for integer literal key '0xBD'”. The lack of warning in the case of the macro usage is fatal, because during the run the program then crashes with a Trace/BPT trap ... error.

Package Metadata

Repository: stefanspringer1/fastreplace

Default branch: main

README: README.md