mirror of
https://github.com/gohugoio/hugo.git
synced 2024-12-27 18:04:29 +00:00
parent
9bf76fd7e8
commit
d7dcc76d27
4 changed files with 106 additions and 0 deletions
|
@ -1037,6 +1037,9 @@ config:
|
|||
rightAngleQuote: '»'
|
||||
rightDoubleQuote: '”'
|
||||
rightSingleQuote: '’'
|
||||
CJK:
|
||||
eastAsianLineBreaks: false
|
||||
escapedSpace: false
|
||||
parser:
|
||||
attribute:
|
||||
block: false
|
||||
|
|
|
@ -136,6 +136,19 @@ func newMarkdown(pcfg converter.ProviderConfig) goldmark.Markdown {
|
|||
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())
|
||||
}
|
||||
|
|
|
@ -626,3 +626,76 @@ unsafe = false
|
|||
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")
|
||||
}
|
||||
|
|
|
@ -43,6 +43,11 @@ var Default = Config{
|
|||
Linkify: true,
|
||||
LinkifyProtocol: "https",
|
||||
TaskList: true,
|
||||
CJK: CJK{
|
||||
Enable: false,
|
||||
EastAsianLineBreaks: false,
|
||||
EscapedSpace: false,
|
||||
},
|
||||
},
|
||||
Renderer: Renderer{
|
||||
Unsafe: false,
|
||||
|
@ -76,6 +81,7 @@ type Extensions struct {
|
|||
Linkify bool
|
||||
LinkifyProtocol string
|
||||
TaskList bool
|
||||
CJK CJK
|
||||
}
|
||||
|
||||
// Typographer holds typographer configuration.
|
||||
|
@ -105,6 +111,17 @@ type Typographer struct {
|
|||
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
|
||||
|
|
Loading…
Reference in a new issue