本文簡要介紹ruby語言中 Psych::Nodes模塊
的用法。
概述
當使用 Psych.load
反序列化 YAML
文檔時,該文檔被轉換為中間 AST。然後將該中間 AST 轉換為 Ruby 對象圖。
在相反的方向上,當使用 Psych.dump
時,Ruby 對象圖被轉換為中間 AST,然後轉換為 YAML
文檔。
Psych::Nodes
包含構成 YAML
AST 節點的所有類。您可以手動構建 AST 並使用其中一個訪問者(請參閱 Psych::Visitors
)將該 AST 轉換為 YAML
文檔或 Ruby 對象圖。
下麵是一個構建 AST 的示例,該 AST 表示具有一個標量的列表:
# Create our nodes
stream = Psych::Nodes::Stream.new
doc = Psych::Nodes::Document.new
seq = Psych::Nodes::Sequence.new
scalar = Psych::Nodes::Scalar.new('foo')
# Build up our tree
stream.children << doc
doc.children << seq
seq.children << scalar
流是樹的根。然後我們可以將樹轉換為 YAML:
stream.to_yaml => "---\n- foo\n"
或者將其轉換為 Ruby:
stream.to_ruby => [["foo"]]
YAML
AST 要求
一個有效的 YAML
AST 必須在根中有一個 Psych::Nodes::Stream
。 Psych::Nodes::Stream
節點必須有 1 個或多個 Psych::Nodes::Document
節點作為子節點。
Psych::Nodes::Document
節點必須有一個且隻有一個子節點。那個孩子可能是以下之一:
Psych::Nodes::Sequence
和 Psych::Nodes::Mapping
節點可能有很多子節點,但 Psych::Nodes::Mapping
節點應該有偶數個子節點。
所有這些都是 Psych::Nodes::Sequence
和 Psych::Nodes::Mapping
節點的有效子節點:
Psych::Nodes::Scalar
和 Psych::Nodes::Alias
都是終端節點,不應有任何子節點。
相關用法
- Ruby Node.type用法及代碼示例
- Ruby NotifyTemplateEntry類用法及代碼示例
- Ruby NoMethodError類用法及代碼示例
- Ruby NilClass.to_f用法及代碼示例
- Ruby NilClass.to_d用法及代碼示例
- Ruby NilClass.to_a用法及代碼示例
- Ruby NilClass.to_h用法及代碼示例
- Ruby NilClass.to_i用法及代碼示例
- Ruby Numeric truncate()用法及代碼示例
- Ruby Numeric rect()用法及代碼示例
- Ruby Name.subdomain_of?用法及代碼示例
- Ruby Numeric.i用法及代碼示例
- Ruby Numeric angle()用法及代碼示例
- Ruby Numeric phase()用法及代碼示例
- Ruby Name.new用法及代碼示例
- Ruby Numeric div()用法及代碼示例
- Ruby Numeric integer()用法及代碼示例
- Ruby Numeric positive?用法及代碼示例
- Ruby Numeric.eql?用法及代碼示例
- Ruby Numeric conjugate()用法及代碼示例
- Ruby Numeric finite?()用法及代碼示例
- Ruby Numeric abs()用法及代碼示例
- Ruby Numeric remainder()用法及代碼示例
- Ruby Numeric.coerce用法及代碼示例
- Ruby Numeric ceil()用法及代碼示例
注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 Nodes模塊。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。