Mercurial > cgi-bin > hgweb.cgi > PassMan
view src/main/kotlin/name/blackcap/passman/See.kt @ 0:a6cfdffcaa94
Initial commit, incomplete but it runs sorta.
author | David Barts <n5jrn@me.com> |
---|---|
date | Sun, 11 Sep 2022 16:11:37 -0700 |
parents | |
children | eafa3779aef8 |
line wrap: on
line source
package name.blackcap.passman import java.util.Formatter private val UNPRINTABLE = setOf<Character.UnicodeBlock>( Character.UnicodeBlock.COMBINING_DIACRITICAL_MARKS, Character.UnicodeBlock.COMBINING_DIACRITICAL_MARKS_EXTENDED, Character.UnicodeBlock.COMBINING_HALF_MARKS, Character.UnicodeBlock.COMBINING_DIACRITICAL_MARKS_SUPPLEMENT, Character.UnicodeBlock.COMBINING_MARKS_FOR_SYMBOLS, Character.UnicodeBlock.HIGH_PRIVATE_USE_SURROGATES, Character.UnicodeBlock.HIGH_SURROGATES, Character.UnicodeBlock.LOW_SURROGATES, Character.UnicodeBlock.PRIVATE_USE_AREA, Character.UnicodeBlock.SPECIALS, ) private val DELIM = '"' private val EXEMPT = setOf<Char>(' ') private val PREFIXED = setOf<Char>(DELIM, '\\') fun see(input: String): String { val accum = StringBuilder() val formatter = Formatter(accum) accum.append(DELIM) for (ch in input) { val block = Character.UnicodeBlock.of(ch) if (ch in EXEMPT) { accum.append(ch) } else if (block == null || block in UNPRINTABLE || Character.isSpaceChar(ch) || Character.isWhitespace(ch)) { formatter.format("\\u%04x", ch.code) } else if (ch in PREFIXED) { accum.append('\\') accum.append(ch) } else { accum.append(ch) } } accum.append(DELIM) return accum.toString() } fun dump(input: String): String { val accum = StringBuilder() var needSpace = false for (ch in input) { if (needSpace) { accum.append(' ') } accum.append(ch.code) needSpace = true } return accum.toString() }