Skip to content

Commit 5ece7b1

Browse files
authored
Merge pull request #89 from wafflestudio/fix/sugang-period-newline-preservation
fix(syncwithsite): literal \n 보존 처리
2 parents 17d542f + 2ba1fc4 commit 5ece7b1

1 file changed

Lines changed: 10 additions & 6 deletions

File tree

src/main/kotlin/com/wafflestudio/team8server/syncwithsite/service/SyncWithSiteService.kt

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,21 @@ class SyncWithSiteService(
2929
companion object {
3030
private const val SUGANG_URL = "https://sugang.snu.ac.kr/sugang/co/co010.action"
3131
private const val TIMEOUT_MS = 15_000
32-
private const val NL_MARKER = "\u0000NL\u0000"
3332
}
3433

3534
private fun textWithBr(elements: Elements): String {
3635
if (elements.isEmpty()) return ""
37-
return elements
38-
.joinToString("") { elem ->
36+
val raw =
37+
elements.joinToString("\n") { elem ->
3938
val clone = elem.clone()
40-
clone.select("br").forEach { it.replaceWith(TextNode(NL_MARKER)) }
41-
clone.text()
42-
}.replace(NL_MARKER, "\n")
39+
clone.select("br").forEach { it.replaceWith(TextNode("\n")) }
40+
clone.wholeText()
41+
}
42+
return raw
43+
.replace("\r\n", "\n")
44+
.replace(Regex("\\n[ \\t]+"), " ")
45+
.replace(Regex("[ \\t]+\\n"), "\n")
46+
.replace(Regex("\\n{2,}"), "\n")
4347
.trim()
4448
}
4549

0 commit comments

Comments
 (0)