Ruby 2.1.0 リファレンスマニュアル > ライブラリ一覧 > psychライブラリ > Psychモジュール

module Psych

クラスの継承リスト: Psych

要約

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

目次

特異メソッド
dump dump_stream libyaml_version load load_documents load_file load_stream parse parse_file parse_stream parser to_json
定数
LIBYAML_VERSION VERSION

特異メソッド

dump(o, options = {}) -> String[permalink][rdoc]
dump(o, io, options = {}) -> ()

Ruby のオブジェクト o を YAML ドキュメントに変換します。

io に IO オブジェクトを指定した場合は、変換されたドキュメントが その IO に書き込まれます。 指定しなかった場合は変換されたドキュメントが文字列としてメソッドの返り値と なります。

options で出力に関するオプションを以下の指定できます。

:version

YAML document に付加するバージョンを [major, minor] という配列、 もしくは文字列で指定します

:header

出力にヘッダを付けるかどうかを真偽値で指定します

:indentation

インデントのレベルを 1 から 9 までの整数で指定します

:canonical

出力の style が canonical であるかどうかを真偽値で指定します

:line_width

「好ましい」行幅を整数値で指定します

[PARAM] o:
変換するオブジェクト
[PARAM] io:
出力先
[PARAM] options:
出力オプション

# Dump an array, get back a YAML string
Psych.dump(['a', 'b'])  # => "---\n- a\n- b\n"

# Dump an array to an IO object
Psych.dump(['a', 'b'], StringIO.new)  # => #<StringIO:0x000001009d0890>

# Dump an array with indentation set
Psych.dump(['a', ['b']], :indentation => 3) # => "---\n- a\n-  - b\n"

# Dump an array to an IO with indentation set
Psych.dump(['a', ['b']], StringIO.new, :indentation => 3)
dump_stream(*objects) -> String[permalink][rdoc]

オブジェクト列を YAML ドキュメント列に変換します。

[PARAM] objects:
変換対象のオブジェクト列

Psych.dump_stream("foo\n  ", {}) # => "--- ! \"foo\\n  \"\n--- {}\n"
libyaml_version -> [Integer, Integer, Integer][permalink][rdoc]

libyaml のバージョンを返します。

[major, minor patch-level] という 3 つの整数からなる配列を返します。

[SEE_ALSO] Psych::LIBYAML_VERSION

load(yaml, filename = nil) -> object[permalink][rdoc]

YAML ドキュメントを Ruby のデータ構造(オブジェクト)に変換します。

入力に複数のドキュメントが含まれている場合は、先頭のものを変換して 返します。

filename はパース中に発生した例外のメッセージに用います。

[PARAM] yaml:
YAML ドキュメント(文字列 or IO オブジェクト)
[PARAM] filename:
例外メッセージのためのファイル名
[EXCEPTION] Psych::SyntaxError:
YAMLドキュメントに文法エラーが発見されたときに発生します

[SEE_ALSO] Psych.parse

Psych.load("--- a")           # => 'a'
Psych.load("---\n - a\n - b") # => ['a', 'b']

begin
  Psych.load("--- `", "file.txt")
rescue Psych::SyntaxError => ex
  p ex.file    # => 'file.txt'
  p ex.message # => "(file.txt): found character that cannot start any token while scanning for the next token at line 1 column 5"
end
load_documents(yaml) -> [object][permalink][rdoc]
load_documents(yaml) {|obj| ... } -> ()

複数の YAML ドキュメントを含むデータを Ruby のオブジェクトに変換します。 このメソッドは deprecated です。Psych.load_stream を代わりに 使ってください。

[PARAM] yaml:
YAML ドキュメント(文字列 or IO オブジェクト)
[EXCEPTION] Psych::SyntaxError:
YAMLドキュメントに文法エラーが発見されたときに発生します
load_file(filename) -> object[permalink][rdoc]

filename で指定したファイルを YAML ドキュメントとして Ruby のオブジェクトに変換します。

[PARAM] filename:
ファイル名
[EXCEPTION] Psych::SyntaxError:
YAMLドキュメントに文法エラーが発見されたときに発生します
load_stream(yaml, filename=nil) -> [object][permalink][rdoc]
load_stream(yaml, filename=nil) {|obj| ... } -> ()

複数の YAML ドキュメントを含むデータを Ruby のオブジェクトに変換します。

ブロックなしの場合はオブジェクトの配列を返します。

Psych.load_stream("--- foo\n...\n--- bar\n...") # => ['foo', 'bar']

ブロックありの場合は各オブジェクト引数としてそのブロックを呼び出します。

list = []
Psych.load_stream("--- foo\n...\n--- bar\n...") do |ruby|
  list << ruby
end
list # => ['foo', 'bar']

filename はパース中に発生した例外のメッセージに用います。

[PARAM] yaml:
YAML ドキュメント(文字列 or IO オブジェクト)
[PARAM] filename:
例外メッセージのためのファイル名
[EXCEPTION] Psych::SyntaxError:
YAMLドキュメントに文法エラーが発見されたときに発生します
parse(yaml, filename = nil) -> Psych::Nodes::Document[permalink][rdoc]

YAML ドキュメントをパースし、YAML の AST を返します。

入力に複数のドキュメントが含まれている場合は、先頭のものを AST に変換して 返します。

filename はパース中に発生した例外のメッセージに用います。

AST については Psych::Nodes を参照してください。

[PARAM] yaml:
YAML ドキュメント(文字列 or IO オブジェクト)
[PARAM] filename:
例外メッセージのためのファイル名
[EXCEPTION] Psych::SyntaxError:
YAMLドキュメントに文法エラーが発見されたときに発生します

[SEE_ALSO] Psych.load

Psych.parse("---\n - a\n - b") # => #<Psych::Nodes::Document:...>

begin
  Psych.parse("--- `", "file.txt")
rescue Psych::SyntaxError => ex
  p ex.file    # => 'file.txt'
  p ex.message # => "(file.txt): found character that cannot start any token while scanning for the next token at line 1 column 5"
end
parse_file(filename) -> Psych::Nodes::Document[permalink][rdoc]

filename で指定したファイルをパースして YAML の AST を返します。

[PARAM] filename:
パースするファイルの名前
[EXCEPTION] Psych::SyntaxError:
YAMLドキュメントに文法エラーが発見されたときに発生します
parse_stream(yaml) -> Psych::Nodes::Stream[permalink][rdoc]
parse_stream(yaml) {|node| ... } -> ()

YAML ドキュメントをパースします。 yaml が 複数の YAML ドキュメントを含む場合を取り扱うことができます。

ブロックなしの場合は YAML の AST (すべての YAML ドキュメントを 保持した Psych::Nodes::Stream オブジェクト)を返します。

ブロック付きの場合は、そのブロックに最初の YAML ドキュメント の Psych::Nodes::Document オブジェクトが渡されます。 この場合の返り値には意味がありません。

[SEE_ALSO] Psych::Nodes

Psych.parse_stream("---\n - a\n - b") # => #<Psych::Nodes::Stream:0x00>
parser -> Psych::Parser[permalink][rdoc]

デフォルトで使われるのパーサを返します。

to_json(o) -> String[permalink][rdoc]

Ruby のオブジェクト o を JSON の文字列に変換します。

[PARAM] o:
変換対象となるオブジェクト

定数

LIBYAML_VERSION -> String[permalink][rdoc]

libyaml のバージョン。

VERSION -> String[permalink][rdoc]

Psych のバージョン。