Ruby 2.3.0 リファレンスマニュアル > ライブラリ一覧 > psychライブラリ

library psych

要約

yaml のバックエンドライブラリです。libyaml ベースで作成されてお り、YAML バージョン 1.1 を扱う事ができます。

概要

Psych を用いると YAML のパースと出力ができます。 これらの機能は libyaml http://pyyaml.org/wiki/LibYAML を用いて 実装されています。さらに Ruby の大半のオブジェクトと YAML フォーマットの データの間を相互に変換することができます。

基本的な使いかた

require 'psych'
# YAML のテキストをパースする
Psych.load("--- foo") # => "foo"

# YAML のデータを出力
Psych.dump("foo")     # => "--- foo\n...\n"
{ :a => 'b'}.to_yaml  # => "---\n:a: b\n"

基本的な使い方はこれだけです。簡単な用事は Psych.loadPsych.dump で片付きます。

YAML のパース

Psych は YAML ドキュメントのパースができます。 ユーザの必要に応じ、高水準な API から低水準な API まで用意されています。 最も低水準なものは、イベントベースな API です。中程度の水準のものとして YAML の AST(Abstract Syntax Tree)にアクセスする APIがあります。 高水準な API では、YAML のドキュメントを Ruby のオブジェクトに変換する ことができます。

低水準 パース API

低水準のパース API は利用者が入力となる YAML ドキュメントについて すでに良く知っていて、AST を構築したり Ruby のオブジェクトに変換する のが無駄である場合に使います。この API については Psych::Parser を参照してください。イベントベースの API です。

中水準 パース API

Psych には YAML ドキュメントの AST にアクセスする API があります。 この AST は Psych::ParserPsych::TreeBuilder で構築します。 Psych.parse_streamPsych::NodesPsych::Nodes::Node などを経由して AST を解析したり操作したりできます。

高水準 パース API

YAML ドキュメントをパースして Ruby のオブジェクトに変換することができます。 詳しくは Psych.load を見てください。

YAML ドキュメントの出力

Psych は YAML ドキュメントを出力する機能があります。 高・中・底の三つの水準の API があります。 低水準 API はイベントベースの API で、中水準のものは AST を構築する API、 高水準の API は Ruby のオブジェクトを直接 YAML ドキュメントに変換する API です。これはパースの高・中・底水準 API と対応しています。

低水準出力 API

低水準出力 API はイベントベースな仕組みです。 各イベントは Psych::Emitter オブジェクトに送られます。 このオブジェクトには、 各イベントをどのように YAML ドキュメントに変換するかをセットしておきます。 この API は出力フォーマットがあらかじめわかっている場合や性能が重要な 場合に利用します。

詳しくは Psych::Emitter を見てください。

中水準出力 API

中水準 API では、利用者が AST を構築し YAML ドキュメントに変換します。 この AST は YAML ドキュメントをパースして得られるものと同じものです。 詳しくは Psych::NodesPsych::Nodes::NodePsych::TreeBuilder を参照してください。

高水準出力 API

高水準 API を使うと Ruby のデータ構造(オブジェクト)を YAML のドキュメントに 変換できます。 詳しくは Psych.dump を参照してください。

クラス

Psych::Handler

Psych::Parser で用いるイベントハンドラの抽象基底クラスです。

  Psych::Emitter

Psych::Parser でパースし、生じたイベントから YAML ドキュメントを再構築するようなハンドラです。

  Psych::TreeBuilder

YAML AST を構築するためのクラスです。

Psych::Nodes::Node

YAML AST のノードを表す抽象クラスです。

  Psych::Nodes::Alias

YAML の alias http://yaml.org/spec/1.1/#alias を表すクラス。

  Psych::Nodes::Document

YAML ドキュメントを表すクラスです。

  Psych::Nodes::Mapping

YAML の mapping http://yaml.org/spec/1.1/#mapping を表すクラスです。

  Psych::Nodes::Scalar

YAML の scalar http://yaml.org/spec/1.1/#id858081 を表すクラスです。

  Psych::Nodes::Sequence

YAML sequence http://yaml.org/spec/1.1/#sequence/syntax を表すクラスです。

  Psych::Nodes::Stream

YAML stream を表すクラス。

Psych::Parser

YAML のパーサ。

Psych::ScalarScanner

YAML の scalar 型を読み込んで Ruby の built-in 型に変換するクラス。

Psych::Visitors

Psych 内部で利用する各種 Visitor class を保持しているモジュール。

Psych::Visitors::Visitor

Psych 内部で利用する、Visitor パターンのための 抽象クラス。

  Psych::Visitors::YAMLTree

Ruby オブジェクトから YAML の AST を構築するためのクラスです。

   Psych::Stream

入力されたオブジェクトから変換された YAML document を指定した IO に出力する機能を持つクラスです。

Psych::Omap

YAML の ordered mapping を表すクラスです。

Psych::Set

YAML の unordered set を表すクラスです。

Psych::Parser::Mark

YAML document の位置を表現するクラスです。

モジュール

Psych

yaml のバックエンドのためのモジュールです。

Psych::Nodes

Psych が中間データとして利用している AST (Abstract Syntax Tree) に 関するモジュール。

例外クラス

Psych::Exception

Psych 関連のエラーを表す例外です。

  Psych::BadAlias

YAML の alias が不正である(本体が見つからない)というエラーを表す例外です。

Psych::SyntaxError

YAML の文法エラーを表すクラスです。

追加・再定義されるメソッド

Kernel#psych_y Module#psych_yaml_as Object#psych_to_yaml Object.yaml_tag