在 Go 的 README.md 中的评论标签之间插入链接

Insert links between comment tags in README.md in Go

我想在我的 README.md 文件中的评论标签之间插入链接,因为我正在动态生成链接。我写了一个函数来做到这一点,但问题是它也取代了评论标签。我需要修改我的功能以在评论标签之间插入链接,而不是将其作为一个整体替换。

//README.md

### HTTP APIs

<!--HTTP-API-start-->

<!--HTTP-API-end-->

### AMQP APIs

<!--AMQP-API-start-->

<!--AMQP-API-end-->

这是我为插入链接而编写的函数。一个可能的解决方案是将评论标签与 httpAPIAmqpAPI 字符串一起附加,但这不是我要找的,因为它替换了文件中的当前标签。

func GenerateGodocLinkInReadme(amqpLinks string, httpLinks string) {

    path := `../../README.md`
    formattedContent, err := ioutil.ReadFile(path)
    if err != nil {
        panic(err)
    }

    httpAPI := "<!--HTTP-API-start-->" +
        amqpLinks +
        "\n" +
        "<!--HTTP-API-end-->"

    AmqpAPI := "<!--AMQP-API-start-->" +
        httpLinks +
        "\n" +
        "<!--AMQP-API-end-->"

    formattedContent = regexp.MustCompile(`<!--AMQP-API-start-->([\s\S]*?)<!--AMQP-API-end-->`).ReplaceAll(formattedContent, []byte(AmqpAPI))
    exitOnFail(ioutil.WriteFile(path, formattedContent, 0644))
    formattedContent = regexp.MustCompile(`<!--HTTP-API-start-->([\s\S]*?)<!--HTTP-API-end-->`).ReplaceAll(formattedContent, []byte(httpAPI))
    exitOnFail(ioutil.WriteFile(path, formattedContent, 0644))
}

此功能正常工作,但它也替换了评论标签。我需要修改这个函数,以便它在评论标签之间插入链接。

试试这个。

func GenerateGodocLinkInReadme(amqpLinks string, httpLinks string) {
    path := `README.md`
    formattedContent, err := ioutil.ReadFile(path)
    if err != nil {
        panic(err)
    }
    amqpRegex := regexp.MustCompile(`<!--AMQP-API-start-->([\s\S]*?)<!--AMQP-API-end-->`)
    httpRegex := regexp.MustCompile(`<!--HTTP-API-start-->([\s\S]*?)<!--HTTP-API-end-->`)

    prevAmqpLinks := string(amqpRegex.FindSubmatch((formattedContent))[1]) // Second index of returns links between tags
    prevHttpLinks := string(httpRegex.FindSubmatch((formattedContent))[1]) // Second index of returns links between tags
    httpAPI := prevHttpLinks + httpLinks + "\n"
    AmqpAPI := prevAmqpLinks + amqpLinks + "\n"
    formattedContent = amqpRegex.ReplaceAll(formattedContent, []byte(`<!--AMQP-API-start-->` + AmqpAPI + `<!--AMQP-API-end-->`))
    formattedContent = httpRegex.ReplaceAll(formattedContent, []byte(`<!--HTTP-API-start-->` + httpAPI + `<!--HTTP-API-end-->`))
    exitOnFail(ioutil.WriteFile(path, formattedContent, 0644))
}