안드로이드 개발 팁 #47 - 마크다운 텍스트를 HTML 텍스트로 변환 방법steemCreated with Sketch.

마크다운 텍스트를 HTML 텍스트로 변환 방법

No. 47
23.10.04 (수) | Written by @dorian-mobileapp

시작하며…

스팀 앱을 주제로 사이드 프로젝트 진행 중인데, 정작 개발은 안 하고 자료 정리만 계속 하고 있네요. 포스트 화면 개발을 진행하면서 새로 배운 내용들이 좀 있고, 내용 정리를 할 필요가 있다고 해서 그렇게 되었어요. 이왕 하는 거 빨리 마치고 다시 개발을 시작할 수 있으면 좋겠어요.

오늘은 마크다운 텍스트를 HTML 텍스트로 변환하는 방법에 대해 정리합니다. 처음에는 오픈 소스로 공개된 마크다운 뷰를 사용하려 했지만, 유튜브 영상 보여주기 그리고 이미지 URL을 이미지로 변환하기 등의 추가 작업들이 필요했습니다. 마크다운 뷰 대신 마크다운 텍스트를 HTML 텍스트로 변환하여 웹뷰에 보여주기로 했습니다. 그래야 앞에 말씀드린 추가 작업들이 가능하니까요.


필요 라이브러리

  • commonmark: 마크다운 텍스트를 HTML 텍스트로 변환 지원
  • commonmark-ext-gfm-tables: 테이블 지원 기능 추가
  • build.gradle 파일의 dependencies 블록에 라이브러리 추가 코드 (2023. 10. 04 기준)
dependencies {
    // ...
    implementation 'org.commonmark:commonmark:0.20.0'
    implementation 'org.commonmark:commonmark-ext-gfm-tables:0.20.0'
}

마크다운 텍스트를 HTML 텍스트로 변환하는 String 클래스의 확장 메소드

HTML 텍스트로 변환하기 위해 여러 종류의 객체들이 필요한데요. 변환 작업을 편리하게 하기 위해 String 클래스의 확장 메소드를 아래와 같이 정의하였습니다. 마크다운 텍스트를 담은 문자열 객체의 convertMarkdownToHtml() 메소드를 호출하면, HTML 텍스트가 리턴됩니다.

import org.commonmark.ext.gfm.tables.TablesExtension
import org.commonmark.node.Node
import org.commonmark.parser.Parser
import org.commonmark.renderer.html.HtmlRenderer

fun String.convertMarkdownToHtml(): String {
    val extensions = listOf(TablesExtension.create())
    val parser = Parser.builder().extensions(extensions).build()
    val rootNode: Node = parser.parse(this)
    val renderer = HtmlRenderer.builder().extensions(extensions).build()
    return renderer.render(rootNode)
}

참고 링크


지난 안드로이드 개발 팁


Layout provided by Steemit Enhancer hommage by ayogom


Posted through the ECble app (https://ecble.etain.club)


Posted through the ECblog app (https://blog.etain.club)


Posted through the ECblog app (https://blog.etain.club)
Sort:  

안녕하세요.
SteemitKorea팀에서 제공하는 'steemit-enhancer'를 사용해 주셔서 감사합니다. 개선 사항이 있으면 언제나 저에게 연락을 주시면 되고, 관심이 있으신 분들은 https://cafe.naver.com/steemitkorea/425 에서 받아보실 수 있습니다. 사용시 @응원해 가 포함이 되며, 악용시에는 모든 서비스에서 제외될 수 있음을 알려드립니다.

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.


안녕하세요.
이 글은 SteemitKorea팀(@ayogom)님께서 저자이신 @dorian-mobileapp님을 응원하는 글입니다.
소정의 보팅을 해드렸습니다 ^^ 항상 좋은글 부탁드립니다
SteemitKorea팀에서는 보다 즐거운 steemit 생활을 위해 노력하고 있습니다.
이 글은 다음날 다시 한번 포스팅을 통해 소개 될 예정입니다. 감사합니다!

Upvoted! Thank you for supporting witness @jswit.

Coin Marketplace

STEEM 0.04
TRX 0.33
JST 0.080
BTC 62952.14
ETH 1665.57
USDT 1.00
SBD 0.42