markup/goldmark: Update the CJK extension to allow specifying line break styles

This commit follows https://github.com/yuin/goldmark/pull/411
This commit is contained in:
OMOTO Tsukasa
2023-10-29 18:13:56 +09:00
committed by GitHub
parent 3f64b5a3de
commit db14238ba3
5 changed files with 69 additions and 7 deletions

View File

@@ -140,7 +140,11 @@ func newMarkdown(pcfg converter.ProviderConfig) goldmark.Markdown {
if cfg.Extensions.CJK.Enable {
opts := []extension.CJKOption{}
if cfg.Extensions.CJK.EastAsianLineBreaks {
opts = append(opts, extension.WithEastAsianLineBreaks())
if cfg.Extensions.CJK.EastAsianLineBreaksStyle == "css3draft" {
opts = append(opts, extension.WithEastAsianLineBreaks(extension.EastAsianLineBreaksCSS3Draft))
} else {
opts = append(opts, extension.WithEastAsianLineBreaks())
}
}
if cfg.Extensions.CJK.EscapedSpace {

View File

@@ -675,6 +675,60 @@ eastAsianLineBreaks=true
c.Assert(got, qt.Contains, "<p>私は太郎です。プログラミングが好きで、運動が苦手です。</p>\n")
}
func TestConvertCJKWithExtensionWithEastAsianLineBreaksOptionWithSimple(t *testing.T) {
c := qt.New(t)
content := `
私は太郎です。
Programming が好きで、
運動が苦手です。
`
confStr := `
[markup]
[markup.goldmark]
[markup.goldmark.extensions.CJK]
enable=true
eastAsianLineBreaks=true
eastAsianLineBreaksStyle="simple"
`
cfg := config.FromTOMLConfigString(confStr)
conf := testconfig.GetTestConfig(nil, cfg)
b := convert(c, conf, content)
got := string(b.Bytes())
c.Assert(got, qt.Contains, "<p>私は太郎です。\nProgramming が好きで、運動が苦手です。</p>\n")
}
func TestConvertCJKWithExtensionWithEastAsianLineBreaksOptionWithStyle(t *testing.T) {
c := qt.New(t)
content := `
私は太郎です。
Programming が好きで、
運動が苦手です。
`
confStr := `
[markup]
[markup.goldmark]
[markup.goldmark.extensions.CJK]
enable=true
eastAsianLineBreaks=true
eastAsianLineBreaksStyle="css3draft"
`
cfg := config.FromTOMLConfigString(confStr)
conf := testconfig.GetTestConfig(nil, cfg)
b := convert(c, conf, content)
got := string(b.Bytes())
c.Assert(got, qt.Contains, "<p>私は太郎です。Programming が好きで、運動が苦手です。</p>\n")
}
func TestConvertCJKWithExtensionWithEscapedSpaceOption(t *testing.T) {
c := qt.New(t)

View File

@@ -44,9 +44,10 @@ var Default = Config{
LinkifyProtocol: "https",
TaskList: true,
CJK: CJK{
Enable: false,
EastAsianLineBreaks: false,
EscapedSpace: false,
Enable: false,
EastAsianLineBreaks: false,
EastAsianLineBreaksStyle: "simple",
EscapedSpace: false,
},
},
Renderer: Renderer{
@@ -118,6 +119,9 @@ type CJK struct {
// Whether softline breaks between east asian wide characters should be ignored.
EastAsianLineBreaks bool
// Styles of Line Breaking of EastAsianLineBreaks: "simple" or "css3draft"
EastAsianLineBreaksStyle string
// Whether a '\' escaped half-space(0x20) should not be rendered.
EscapedSpace bool
}