if pageparser.HasShortcode(contentToRender) {
contentToRenderb := []byte(contentToRender)
// String contains a shortcode.
- parseInfo.itemsStep1, err = pageparser.ParseBytesMain(contentToRenderb, pageparser.Config{})
+ parseInfo.itemsStep1, err = pageparser.ParseBytes(contentToRenderb, pageparser.Config{
+ NoFrontMatter: true,
+ NoSummaryDivider: true,
+ })
if err != nil {
return "", err
}
"Footer: Footer|p2||",
)
}
+
+func TestPagesFromGoTmplMore(t *testing.T) {
+ t.Parallel()
+
+ files := `
+-- hugo.toml --
+disableKinds = ['home','rss','section','sitemap','taxonomy','term']
+[markup.goldmark.renderer]
+unsafe = true
+-- content/s1/_content.gotmpl --
+{{ $page := dict
+ "content" (dict "mediaType" "text/markdown" "value" "aaa <!--more--> bbb")
+ "title" "p1"
+ "path" "p1"
+ }}
+ {{ .AddPage $page }}
+-- layouts/_default/single.html --
+summary: {{ .Summary }}|content: {{ .Content}}
+`
+
+ b := hugolib.Test(t, files)
+
+ b.AssertFileContent("public/s1/p1/index.html",
+ "<p>aaa</p>|content: <p>aaa</p>\n<p>bbb</p>",
+ )
+}
}
type Config struct {
- NoFrontMatter bool
+ NoFrontMatter bool
+ NoSummaryDivider bool
}
// note: the input position here is normally 0 (start), but
// can be set if position of first shortcode is known
func newPageLexer(input []byte, stateStart stateFunc, cfg Config) *pageLexer {
lexer := &pageLexer{
- input: input,
- stateStart: stateStart,
- cfg: cfg,
+ input: input,
+ stateStart: stateStart,
+ summaryDivider: summaryDivider,
+ cfg: cfg,
lexerShortcodeState: lexerShortcodeState{
currLeftDelimItem: tLeftDelimScNoMarkup,
currRightDelimItem: tRightDelimScNoMarkup,
}
func createSectionHandlers(l *pageLexer) *sectionHandlers {
+ handlers := make([]*sectionHandler, 0, 2)
+
shortCodeHandler := §ionHandler{
l: l,
skipFunc: func(l *pageLexer) int {
},
}
- summaryDividerHandler := §ionHandler{
- l: l,
- skipFunc: func(l *pageLexer) int {
- if l.summaryDividerChecked || l.summaryDivider == nil {
- return -1
- }
- return l.index(l.summaryDivider)
- },
- lexFunc: func(origin stateFunc, l *pageLexer) (stateFunc, bool) {
- if !l.hasPrefix(l.summaryDivider) {
- return origin, false
- }
+ handlers = append(handlers, shortCodeHandler)
- l.summaryDividerChecked = true
- l.pos += len(l.summaryDivider)
- // This makes it a little easier to reason about later.
- l.consumeSpace()
- l.emit(TypeLeadSummaryDivider)
+ if !l.cfg.NoSummaryDivider {
+ summaryDividerHandler := §ionHandler{
+ l: l,
+ skipFunc: func(l *pageLexer) int {
+ if l.summaryDividerChecked {
+ return -1
+ }
+ return l.index(l.summaryDivider)
+ },
+ lexFunc: func(origin stateFunc, l *pageLexer) (stateFunc, bool) {
+ if !l.hasPrefix(l.summaryDivider) {
+ return origin, false
+ }
- return origin, true
- },
- }
+ l.summaryDividerChecked = true
+ l.pos += len(l.summaryDivider)
+ // This makes it a little easier to reason about later.
+ l.consumeSpace()
+ l.emit(TypeLeadSummaryDivider)
- handlers := []*sectionHandler{shortCodeHandler, summaryDividerHandler}
+ return origin, true
+ },
+ }
+
+ handlers = append(handlers, summaryDividerHandler)
+
+ }
return §ionHandlers{
l: l,