Hatena::ブログ(Diary)

cooldaemonの備忘録 RSSフィード

2006-10-05

YAML.pm を利用した YAML syntax checker

id:cooldaemon:20060714 で書いた内容の YAML 版。

#!/usr/bin/perl
use strict;
use warnings;

use YAML;

my $file_name = $ARGV[0];
if (!$file_name) {
  print "Usage : yaml_checker.pl [YAML file name]?n";
  exit;
}

eval {
  YAML::LoadFile( $file_name );
};

$@ ? print $@ : print 'Syntax OK!!';
print "?n";

これを、適当な名前で保存して実行権限を与え・・・.vimrc に下記を追加する。

autocmd Syntax yaml map ,t :w<CR>:!~/bin/yaml_checker.pl %<CR> | set makeprg=~/bin/yaml_checker.pl? %

「~/bin/yaml_checker.pl」の箇所はお好きな名前で。

そのうち、kwalify と vim 連携ネタも考えてみよ。

2006-04-06

文法とか

Clouder氏が運営する有名ブログ Clouder::Blogger2006年4月5日 のエントリ のエントリを見て思った事をメモ。

YAMLで改行を含む値を表現する方法

key: |
  this is example
  this is example

ってやるみたい。

改行を含む値を表現するには '|' を使う以外に、下記の方法もある。

key : "this is example?nthis is example"

※例によって・・・「¥」が「?」になってる orz

逆に改行を無視する方法として、下記の二つの方法がある。

foo : 'this is example ?n this is example'
bar : >
  this is example
  this is example

ちなみに今一番知りたいのは、YAMLファイルで上の方で定義した値を下の方で使いたい場合どうするか。教えてエロい人!

foo: 1
bar: 2
baz: ***←ここでfooとかbarの値を使いたい。例えば 123 を表現したいとか。「$foo _ $bar _ 3」とかできないのかなと

頑張っても、こんな感じゃないかなぁと。

foo : &foo 1
bar : &bar 2
baz :
    - *foo
    - *bar
    - 3

私も方法が知りたい・・・。

上記全ての参照元はココ→ http://yaml.org/spec/current.html