在 Hugo 中用字符串按键查找数据

Posted

技术标签:

【中文标题】在 Hugo 中用字符串按键查找数据【英文标题】:Looking up data by key in Hugo with a string 【发布时间】:2019-02-16 12:51:03 【问题描述】:

我正在尝试创建一个基于 HUGO 的 API 文档站点,该站点读取 JSON 模式,并以 html 格式打印它们。

我快到了,但我不知道如何准确地传递我想要的部分数据。

给定一个标准的 JSON 模式文件,如下所示:

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

我想显示该路径的详细信息,然后使用“ref”中的架构定义呈现部分。我找到了一种方法来读取该 ref 参数并将其解析为定义的参考。下面的“目标”如下所示:

目标:.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 中没有这样的运气。我根本找不到从该目标键字符串到实际参数的方法。

帮助!我错过了一些明显的东西吗?我是不是搞错了?

【问题讨论】:

你能分享更多目录结构的细节吗? json 文件是否在“数据”目录中?您如何到达调用部分的地步?你在创造一种新的类型吗? JSON 模式文件在 /data,模板在 /layouts/_default,模式部分在 /layouts/partials。我能够从架构中获取数据以及渲染模板和部分,我根本无法将数据传递给部分。 【参考方案1】:

我认为你需要使用 dict https://gohugo.io/functions/dict/

您的 partial "schema" $target 可以更改为 partial "schema" (dict "target_name" $target)

在“模式”部分中,您可以使用" .target_name " 访问值

【讨论】:

感谢您的浏览!看来,使用这个,“模式”部分得到一个看起来像这样的新地图:"target_name": ".definitions.loginResponse" 不幸的是,我仍然无法使用该字符串查找数据。我非常希望能够做到这一点:schema["definitions.loginResponse"]【参考方案2】:

想通了!如果有人遇到同样的问题,只需使用 Hugo 的 index function 即可完成参数查找。

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

对于$target,在父上下文下,它只是 index . $target

【讨论】:

以上是关于在 Hugo 中用字符串按键查找数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中用空格将字符串填充到固定长度?

如何在VB中用PostMessage向指定窗口发送带有修饰键的组合键?

4月13日

按键精灵大漠插件。现在我在后台窗口抓取截图把我要识别的那个文字提取点阵建立了只有这个点阵的字库,

用js查找中文字符串位置

linux进入vim的编辑模式与命令模式操作命令