slow.monster

STUDIO HAZE · jeniapp

Topaz source

Open by house policy. Topaz is our own language.

Topaz 5.20.2 · 63 files

apps/unicode-convert/convert.tpz

Topaz · 1721 B · Original file

1// 유니코드 변환. 공백이나 줄바꿈으로 나눈 10진수 코드포인트를 글자로 바꿉니다.
2// 입력은 "44032 110 111" 같은 토큰 목록이고, 출력은 바꾼 글과 바꾸지 못한 토큰 목록을 담은 HTML 조각입니다.
3// 같은 입력이면 인터프리터와 웹 빌드에서 바이트까지 같은 출력을 냅니다.
4// 16진수와 U+ 표기는 읽지 않으며 바꾸지 못한 토큰을 조용히 버리지 않고 따로 보여 줍니다.
5// Unicode converter: decimal code points to text, listing tokens that are not valid scalars.
7// 공용 도우미 시작 (본문이스케이프)
8// 여러 도구가 같은 원본을 씁니다. 여기서 고치지 않고 원본에서 고친 뒤 다시 생성합니다.
10// 요소 본문에 넣는 사용자 입력에 씁니다. 큰따옴표를 그대로 두므로 속성 값에는 이스케이프를 씁니다.
11function 본문이스케이프(원문: string) -> string {
12 원문.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;")
15// 공용 도우미 끝
17function 변환(텍스트: string) -> string {
18 let 토큰들 = 텍스트.replace("\n", " ").split(" ").filter(토큰 => 토큰 != "")
19 let 글자들 = 토큰들.map(토큰 => toInt(토큰).flatMap(fromCodePoint))
20 let 무효들 = [for i in 0..<토큰들.length if 글자들[i] == None => 토큰들[i]]
21 let 결과 = 글자들.map(글자 => 글자 ?? "").join("")
22 let 무효부 = if 무효들.length > 0 {
23 "<div class=\"bad\">무효 {무효들.length}개: {본문이스케이프(무효들.join(" "))}</div>"
24 } else {
25 ""
26 }
27 "<div class=\"uni\"><div class=\"out\">{본문이스케이프(결과)}</div>{무효부}</div>"
30input() |> 변환 |> print

SHA256 cce02585556f98db9218ad939c0196e59d346a671931cebb703a9d0def3ecf82