extensions = append(extensions, extension.Footnote)
}
+ if cfg.Extensions.CJK.Enable {
+ opts := []extension.CJKOption{}
+ if cfg.Extensions.CJK.EastAsianLineBreaks {
+ opts = append(opts, extension.WithEastAsianLineBreaks())
+ }
+
+ if cfg.Extensions.CJK.EscapedSpace {
+ opts = append(opts, extension.WithEscapedSpace())
+ }
+ c := extension.NewCJK(opts...)
+ extensions = append(extensions, c)
+ }
+
if cfg.Parser.AutoHeadingID {
parserOptions = append(parserOptions, parser.WithAutoHeadingID())
}
return testconfig.GetTestConfig(nil, cfg)
}
+
+func TestConvertCJK(t *testing.T) {
+ c := qt.New(t)
+
+ content := `
+私は太郎です。
+プログラミングが好きです。\ 運動が苦手です。
+`
+
+ confStr := `
+[markup]
+[markup.goldmark]
+`
+
+ cfg := config.FromTOMLConfigString(confStr)
+ conf := testconfig.GetTestConfig(nil, cfg)
+
+ b := convert(c, conf, content)
+ got := string(b.Bytes())
+
+ c.Assert(got, qt.Contains, "<p>私は太郎です。\nプログラミングが好きです。\\ 運動が苦手です。</p>\n")
+}
+
+func TestConvertCJKWithExtensionWithEastAsianLineBreaksOption(t *testing.T) {
+ c := qt.New(t)
+
+ content := `
+私は太郎です。
+プログラミングが好きで、
+運動が苦手です。
+`
+
+ confStr := `
+[markup]
+[markup.goldmark]
+[markup.goldmark.extensions.CJK]
+enable=true
+eastAsianLineBreaks=true
+`
+
+ cfg := config.FromTOMLConfigString(confStr)
+ conf := testconfig.GetTestConfig(nil, cfg)
+
+ b := convert(c, conf, content)
+ got := string(b.Bytes())
+
+ c.Assert(got, qt.Contains, "<p>私は太郎です。プログラミングが好きで、運動が苦手です。</p>\n")
+}
+
+func TestConvertCJKWithExtensionWithEscapedSpaceOption(t *testing.T) {
+ c := qt.New(t)
+
+ content := `
+私は太郎です。
+プログラミングが好きです。\ 運動が苦手です。
+`
+
+ confStr := `
+[markup]
+[markup.goldmark]
+[markup.goldmark.extensions.CJK]
+enable=true
+escapedSpace=true
+`
+
+ cfg := config.FromTOMLConfigString(confStr)
+ conf := testconfig.GetTestConfig(nil, cfg)
+
+ b := convert(c, conf, content)
+ got := string(b.Bytes())
+
+ c.Assert(got, qt.Contains, "<p>私は太郎です。\nプログラミングが好きです。運動が苦手です。</p>\n")
+}
Linkify: true,
LinkifyProtocol: "https",
TaskList: true,
+ CJK: CJK{
+ Enable: false,
+ EastAsianLineBreaks: false,
+ EscapedSpace: false,
+ },
},
Renderer: Renderer{
Unsafe: false,
Linkify bool
LinkifyProtocol string
TaskList bool
+ CJK CJK
}
// Typographer holds typographer configuration.
Apostrophe string
}
+type CJK struct {
+ // Whether to enable CJK support.
+ Enable bool
+
+ // Whether softline breaks between east asian wide characters should be ignored.
+ EastAsianLineBreaks bool
+
+ // Whether a '\' escaped half-space(0x20) should not be rendered.
+ EscapedSpace bool
+}
+
type Renderer struct {
// Whether softline breaks should be rendered as '<br>'
HardWraps bool