mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-04-27 11:31:05 +00:00
Same rationale as for runtime. With tests, the blackfriday replacement was actually meaningful, so I refactored some imports. Signed-off-by: Aurélien Bombo <abombo@microsoft.com>
70 lines
1.3 KiB
Go
70 lines
1.3 KiB
Go
//
|
|
// Copyright (c) 2019 Intel Corporation
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
package main
|
|
|
|
import (
|
|
"strings"
|
|
|
|
bf "github.com/russross/blackfriday/v2"
|
|
)
|
|
|
|
// forceCreateHeadings extracts "missed" headings from the specified node,
|
|
// returning a slice of the newly headings created (which need to be added by the
|
|
// caller).
|
|
//
|
|
// Alas, Black Friday isn't 100% reliable...
|
|
func (d *Doc) forceCreateHeadings(node *bf.Node) ([]Heading, error) {
|
|
if err := checkNode(node, bf.Text); err != nil {
|
|
return []Heading{}, err
|
|
}
|
|
|
|
chunk := string(node.Literal)
|
|
|
|
if chunk == "" {
|
|
// No text in this node
|
|
return []Heading{}, nil
|
|
}
|
|
|
|
lines := strings.Split(chunk, "\n")
|
|
if len(lines) <= 1 {
|
|
// No headings lurking in this text node
|
|
return []Heading{}, nil
|
|
}
|
|
|
|
var headings []Heading
|
|
|
|
for _, line := range lines {
|
|
if !strings.HasPrefix(line, anchorPrefix) {
|
|
continue
|
|
}
|
|
|
|
fields := strings.Split(line, anchorPrefix)
|
|
name := strings.Join(fields, "")
|
|
name = strings.TrimSpace(name)
|
|
|
|
count := strings.Count(line, anchorPrefix)
|
|
|
|
heading := Heading{
|
|
Name: name,
|
|
Level: count,
|
|
}
|
|
|
|
id, err := createHeadingID(heading.Name)
|
|
if err != nil {
|
|
return []Heading{}, err
|
|
}
|
|
|
|
heading.LinkName = id
|
|
|
|
headings = append(headings, heading)
|
|
|
|
extraHeadings++
|
|
}
|
|
|
|
return headings, nil
|
|
}
|