Markdown Format | JSON API | MCP Server Tool
= Psych::Nodes (from gem psych-5.4.0) ------------------------------------------------------------------------ = Overview When using Psych.load to deserialize a YAML document, the document is translated to an intermediary AST. That intermediary AST is then translated in to a Ruby object graph. In the opposite direction, when using Psych.dump, the Ruby object graph is translated to an intermediary AST which is then converted to a YAML document. Psych::Nodes contains all of the classes that make up the nodes of a YAML AST. You can manually build an AST and use one of the visitors (see Psych::Visitors) to convert that AST to either a YAML document or to a Ruby object graph. Here is an example of building an AST that represents a list with one scalar: # 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 The stream is the root of the tree. We can then convert the tree to YAML: stream.to_yaml => "---\n- foo\n" Or convert it to Ruby: stream.to_ruby => [["foo"]] == YAML AST Requirements A valid YAML AST must have one Psych::Nodes::Stream at the root. A Psych::Nodes::Stream node must have 1 or more Psych::Nodes::Document nodes as children. Psych::Nodes::Document nodes must have one and only one child. That child may be one of: * Psych::Nodes::Sequence * Psych::Nodes::Mapping * Psych::Nodes::Scalar Psych::Nodes::Sequence and Psych::Nodes::Mapping nodes may have many children, but Psych::Nodes::Mapping nodes should have an even number of children. All of these are valid children for Psych::Nodes::Sequence and Psych::Nodes::Mapping nodes: * Psych::Nodes::Sequence * Psych::Nodes::Mapping * Psych::Nodes::Scalar * Psych::Nodes::Alias Psych::Nodes::Scalar and Psych::Nodes::Alias are both terminal nodes and should not have any children. ------------------------------------------------------------------------
Generated by phpMan Author: Che Dong Under GNU General Public License
2026-06-02 08:48 @216.73.216.198 CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)