Вставьте ссылки между тегами комментариев в README.md в Go - PullRequest
0 голосов
/ 17 апреля 2020

Я хочу вставить ссылки между тегами комментариев в моем файле README.md, так как я генерирую ссылки динамически. Я написал функцию, которая делает именно это, но проблема в том, что она также заменяет теги комментариев. Мне нужно изменить мою функцию, чтобы вставлять ссылки между тегами комментариев, а не заменять их целиком.

//README.md

### HTTP APIs

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

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

### AMQP APIs

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

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

Вот функция, которую я написал для вставки ссылок. Возможным решением было бы добавить теги комментария вместе со строками httpAPI и AmqpAPI, но это не то, что я ищу, поскольку он заменяет текущие теги в файле.

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))
}

Это Функция работает правильно, но она также заменяет теги комментариев. Мне нужно изменить эту функцию, чтобы она вставляла ссылки между тегами комментариев.

1 Ответ

2 голосов
/ 17 апреля 2020

Попробуйте это.

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))
}
...