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
// 요소 본문에 넣는 사용자 입력에 씁니다. 큰따옴표를 그대로 두므로 속성 값에는 이스케이프를 씁니다.11
function 본문이스케이프(원문: string) -> string {12
원문.replace("&", "&").replace("<", "<").replace(">", ">")13
}15
// 공용 도우미 끝17
function 변환(텍스트: 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>"28
}30
input() |> 변환 |> printSHA256 cce02585556f98db9218ad939c0196e59d346a671931cebb703a9d0def3ecf82