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>
94 lines
1.8 KiB
Go
94 lines
1.8 KiB
Go
//
|
|
// Copyright (c) 2019 Intel Corporation
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
bf "github.com/russross/blackfriday/v2"
|
|
)
|
|
|
|
// linkDescription extracts the description from the specified link node.
|
|
func linkDescription(l *bf.Node) (string, error) {
|
|
if err := checkNode(l, bf.Link); err != nil {
|
|
return "", err
|
|
}
|
|
|
|
// A link description can be comprised of various elements so scan
|
|
// through them to build up the final value.
|
|
|
|
text := ""
|
|
node := l.FirstChild
|
|
|
|
for node != nil {
|
|
switch node.Type {
|
|
case bf.Code:
|
|
text += string(node.Literal)
|
|
case bf.Text:
|
|
text += string(node.Literal)
|
|
default:
|
|
logger.WithField("node", node).Debug("ignoring node")
|
|
}
|
|
|
|
if node == l.LastChild {
|
|
break
|
|
}
|
|
|
|
node = node.Next
|
|
}
|
|
|
|
return text, nil
|
|
}
|
|
|
|
// headingName extracts the heading name from the specified Heading node in
|
|
// plain text, and markdown. The latter is used for creating TOC's which need
|
|
// to include the original markdown value.
|
|
func headingName(h *bf.Node) (name, mdName string, err error) {
|
|
if err = checkNode(h, bf.Heading); err != nil {
|
|
return "", "", err
|
|
}
|
|
|
|
// A heading can be comprised of various elements so scan
|
|
// through them to build up the final value.
|
|
|
|
node := h.FirstChild
|
|
|
|
for node != nil {
|
|
switch node.Type {
|
|
case bf.Code:
|
|
value := string(node.Literal)
|
|
|
|
name += value
|
|
mdName += fmt.Sprintf("`%s`", value)
|
|
case bf.Text:
|
|
value := string(node.Literal)
|
|
|
|
name += value
|
|
mdName += value
|
|
case bf.Link:
|
|
// yep, people do crazy things like adding links into titles!
|
|
descr, err := linkDescription(node)
|
|
if err != nil {
|
|
return "", "", err
|
|
}
|
|
|
|
name += descr
|
|
mdName += descr
|
|
default:
|
|
logger.WithField("node", node).Debug("ignoring node")
|
|
}
|
|
|
|
if node == h.LastChild {
|
|
break
|
|
}
|
|
|
|
node = node.Next
|
|
}
|
|
|
|
return name, mdName, nil
|
|
}
|