Go — github.com/minjun0219/mdwire/go
Rust 코어를 Go 로 옮긴 구현이며 표준 라이브러리만 씁니다. 같은 테스트 케이스를 통과하고 무작위 입력과 실제 문서로 Rust 코어와 같은 결과를 출력하는지도 대조합니다. 전체 레퍼런스는 pkg.go.dev에 있습니다.
go get github.com/minjun0219/mdwire/go@latest
Render
import "github.com/minjun0219/mdwire/go"
parts := mdwire.Render(input, mdwire.TelegramHTML) // []string
완성된 문서를 변환합니다. 길이 제한을 넘으면 열린 마크업이 없는 지점에서 나눕니다.
RenderWith
out := mdwire.RenderWith(input, mdwire.SlackMarkdown, mdwire.Options{Limit: 4096})
out.Parts // []string
out.Repairs.ClosedEmphasis // 아래 Repairs 참고
Options
제로 값이 곧 기본값입니다.
type Options struct {
Limit int // 0 = 채널의 Limit(). MinLimit(256) 보다 작으면 올림
HTML HTMLOptions // HTML 채널에서만
}
type HTMLOptions struct {
LineBreaks LineBreaks // LineBreaksBR(제로 값) | LineBreaksSpace
Images Images // ImagesLink(제로 값) | ImagesLoad
Schemes []string // nil = http, https, mailto. 목록을 주면 기본값을 대체. nil 이 아닌 빈 슬라이스는 어떤 스킴도 허용하지 않음
}
Streamer
s := mdwire.NewStreamer(mdwire.SlackMarkdown)
var out []byte
for _, chunk := range chunks {
s.PushTo(chunk, &out) // 청크마다 할당 없음
}
s.FinishTo(&out)
NewStreamer(ch) · NewStreamerWith(ch, opts) |
문서 하나에 스트리머 하나를 씁니다. |
PushTo(chunk, *[]byte) · Push(chunk) string |
지금 보내도 안전한 출력입니다. 할당이 없는 쪽은 PushTo 입니다. |
FinishTo(*[]byte) · Finish() string |
남은 출력입니다. 열린 마크업은 닫아서 반환합니다. |
PreviewTo(*[]byte) · Preview() string |
메시지 전체를 다시 렌더링할 때 붙이는 뒷부분입니다. |
CloseOpenTo(*[]byte) · CloseOpen() string |
이미 보낸 블록 마크업만 닫는 뒷부분입니다. |
Revised() bool |
Finish 다음에 호출합니다. 완성본이 마지막 미리보기와 다른지 알려 줍니다. |
Repairs() Repairs |
지금까지 센 정규화 보고를 반환합니다. |
계약은 Concepts에 있습니다.
Channel
const ( TelegramHTML Channel = iota; SlackMarkdown; Plain; GithubMarkdown; HTML; NotionMarkdown )
상수의 숫자 값은 Channels() 의 순서와 다릅니다. 채널을 저장하거나 주고받을 때는 이름을 쓰세요.
Channels() []Channel |
모든 채널을 반환합니다. |
(Channel) Name() string · ParseChannel(string) (Channel, bool) |
문자열 이름과 채널을 서로 바꿉니다. |
(Channel) Limit() int |
조각 길이 제한을 반환합니다. |
Repairs
type Repairs struct {
ClosedEmphasis, ClosedFence, RevertedCodeSpan, DroppedMarker, GuessedPair int
// 채널에 맞춰 바꾼 것
EscapedChar, TagEmphasis, StrippedHTML, RewrittenBullet, RewrittenTable, ConvertedMarker int
}
Repaired() 는 하나라도 고쳤는지(앞의 네 필드), Changed() 는 고쳤든 바꿨든 하나라도 했는지 알려
줍니다. 각 필드가 세는 것은 Concepts에 있습니다.
표시 폭
CharWidth(rune) int, StrWidth(string) int 는 고정폭 표에 쓰는 표시 폭 함수입니다.
CLI
go install github.com/minjun0219/mdwire/go/cmd/mdwire@latest 로 Rust 와 같은 CLI 를 설치할 수 있습니다.
플래그도 같고, -V/--version 만 없습니다. 자세한 내용은 CLI를 참고하세요.