Поиск данных по ключу в Hugo со строкой - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь создать сайт документации API на основе HUGO, который читает схемы JSON и печатает их в HTML.

Я почти на месте, но я озадачен тем, как именно передатьданные, которые я хочу к частичной.

Учитывая стандартный файл схемы JSON, такой как следующее:

{"paths": {
  "/auth/login": {
    "get": {
    "operationId": "login",
    "responses": {
      "200": {
        "description": "",
        "schema": {
          "ref": "#/definitions/loginResponse"
        }
      }
    }
  },
},
"definitions": {
  "loginResponse": {
    "type": "object"
  }
}}

Я хотел бы отобразить детали этого пути, а затем визуализировать частичное с использованием определения схемы в "исх».Я нашел способ прочитать этот ref param и разобрать его в качестве ссылки для определения.«Цель» ниже выглядит следующим образом:

Цель: .definitions.loginResponse

{{ range $path, $methods := .paths }}
  <h4>{{ $path }}</h4>

  {{ range $method, $items := $methods }}
    <h5>{{ $method }}</h5>
    <ul>
      {{ range $status, $info := .responses }}
        <li>
          <div>{{ $status }}</div>
          <h6>Ref: {{ $info.schema.ref }}</h6>
          <p>Target: {{ $target := (printf ".definitions.%s" (index (findRE "[^/]+(/?$)" $info.schema.ref) 0))}}</p>
          <div>{{ partial "schema" $target }}</div>
        </li>
      {{ end }}
    </ul>
  {{end}}
{{end}}

Проблема в том, что $target является строкой.В Javascript я просто смог бы передать его в качестве ключа для получения этого параметра объекта: schema["definitions.loginResponse"].

Однако в HUGO такой удачи нет.Я просто не могу найти способ перейти от этой целевой строки ключей к реальному параметру.

Помогите!Я что-то упускаю из виду?Я все об этом ошибаюсь?

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

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

.
{{ $target := index $info.schema "$ref" | findRE "[^/]+(/?$)" }}

С $target в родительском контексте это просто {{ index . $target }}.

0 голосов
/ 15 сентября 2018

Я думаю, что вам нужно использовать dict https://gohugo.io/functions/dict/

Ваш {{ partial "schema" $target }} может быть изменен на {{ partial "schema" (dict "target_name" $target) }}

В части "схемы" вы можете получить доступ к значению с помощью "{{ .target_name }}"

...