You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于ERB语法的YAML元素求值:提取指定元素并输出YAML字符串

处理含ERB代码块的YAML文件:提取并执行指定元素的ERB模板

可以用Ruby实现这个需求,因为Ruby原生支持ERB模板解析和YAML处理,以下是完整的实现代码:

require 'yaml'
require 'erb'

# 读取目标YAML文件内容
yaml_content = File.read('your_target_file.yaml')
# 将YAML解析为Ruby数组
yaml_data = YAML.load(yaml_content)

# 指定要提取的元素索引(注意:第1个元素对应索引0,第2个对应索引1,以此类推)
target_index = 0 # 替换为你需要的第N个元素的索引(N-1)
target_item = yaml_data[target_index]

# 创建ERB执行的上下文绑定
binding_context = binding
# 执行pre字段中的ERB代码,将变量注入上下文
ERB.new(target_item['pre']).result(binding_context)

# 用上下文渲染sentence字段的ERB模板
processed_sentence = ERB.new(target_item['sentence']).result(binding_context)

# 构建输出的YAML结构
output_item = {
  'id' => target_item['id'],
  'pre' => '',
  'sentence' => processed_sentence
}

# 转换为YAML字符串并输出
puts YAML.dump([output_item])

代码说明

  1. YAML读取与解析:通过YAML.load将文件内容转换为Ruby数组,方便单独操作每个元素
  2. 目标元素提取:根据需求的第N个元素,对应数组的N-1索引(Ruby数组从0开始计数)
  3. ERB执行流程:先运行pre字段中的ERB代码生成变量,再用这些变量渲染sentence字段的ERB模板
  4. 输出构建:清空pre字段内容,保留原id和处理后的sentence,最终转换为标准YAML格式输出

示例运行结果

当target_index设为0(提取第1个元素)时,输出的YAML内容如下:

---
- id: "1"
  pre: ""
  sentence: "The result of 3 + 4 is 7"

内容的提问来源于stack exchange,提问作者somenxavier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 17:53:18