image

  • フォト Amazonギフト券
    ※この時計の時刻は、閲覧しているパソコンのものであり、必ずしも正確な時間とは限りません

検索

最近のトラックバック

無料ブログはココログ

« ピックアップ: ユーザー造反で Digg が敗北宣言, プログラミングの6大10項目, etc... | トップページ | sqlite3 に郵便番号を読み込んだ »

2007-05-03

xfy meets yaml

xfy から ruby スクリプトを実行して文字列を得られるようにしただけでも、
いろいろ可能性が広がった気がする。
(xvcd や java でロジックを書くのは ryby に比べると格段に面倒だ)

簡単なウイザードの例があった。
- http://www.mnet.ne.jp/~tnomura/note.html
> > note: 簡単 Q&A 作成プログラム note.rb

これは、ウイザードの画面内容と画面遷移関係を yaml で定義している。
このアイデアを使うと、xfy でも ウィザードを簡単に作れそうな気がする。

yaml については次から始まる一連の記事が参考になる。
- http://jp.rubyist.net/magazine/?0009-YAML
> > Rubyist Magazine - プログラマーのための YAML 入門 (初級編)

サンプル例をいくつか実行してみた。

# See http://jp.rubyist.net/magazine/?0009-YAML

require 'yaml'
require 'pp'

str  =<<EOS
- aaa
- bbb
- ccc
EOS

data = YAML.load(str)
pp data
# ["aaa", "bbb", "ccc"]

#----------------------
str =<<EOS
A: aaa
B:
  B1: bbb1
  B2: bbb2
C: ccc
EOS

data = YAML.load(str)
pp data
# {"A"=>"aaa", "B"=>{"B1"=>"bbb1", "B2"=>"bbb2"}, "C"=>"ccc"}

#----------------------
str =<<EOS
[aaa, bbb, ccc]
EOS

data = YAML.load(str)
pp data
# ["aaa", "bbb", "ccc"]

#----------------------
str =<<EOS
{ A: aaa, B: bbb, C: ccc }
EOS

data = YAML.load(str)
pp data
# {"A"=>"aaa", "B"=>"bbb", "C"=>"ccc"}

#----------------------
str =<<EOS
decimal1:  123                           # 整数 (10 進数)
decimal2:  1,234,567,890                 # 整数 (10 進数)
octal:     0644                          # 整数 (8 進数)
hexa:      0xFF                          # 整数 (16 進数)
float1:    0.05                          # 浮動小数点
bool1:     true                          # 真
bool2:     yes                           # 真
bool3:     on                            # 真
bool4:     false                         # 偽
bool5:     no                            # 偽
bool6:     off                           # 偽
null1:     ~                             # Null 値
null2:     null                          # Null 値
date:      2005-01-01                    # 日付
stamp:     2005-01-01 00:00:00 +09:00    # タイムスタンプ
str1:      'true'                        # 文字列
str2:      "2005"                        # 文字列
symbol:    :foo                          # シンボル (Syck の独自機能)
EOS

data = YAML.load(str)
pp data

# {"str1"=>"true",
#  "bool5"=>false,
#  "str2"=>"2005",
#  "bool6"=>false,
#  "symbol"=>:foo,
#  "date"=>#<Date: 4906743/2,0,2299161>,
#  "null1"=>nil,
#  "float1"=>0.05,
#  "null2"=>nil,
#  "octal"=>420,
#  "decimal1"=>123,
#  "decimal2"=>1234567890,
#  "hexa"=>255,
#  "stamp"=>Sat Jan 01 00:00:00 JST 2005,
#  "bool1"=>true,
#  "bool2"=>true,
#  "bool3"=>true,
#  "bool4"=>false}

#-----------------
## YAML ドキュメント
str = <<EOS
- name: Shiina
  birth: 1998-01-01
  age: 6
  favorite:
    - Thomas
    - Pokemon
- name: Sumire
  smoker: false
  birth: 2000-02-02
  age: 4
EOS

## オブジェクトに変換する
require 'yaml'
require 'pp'
yaml = YAML.load(str)
pp yaml

# [{"name"=>"Shiina",
#   "age"=>6,
#   "birth"=>#<Date: 4901629/2,0,2299161>,
#   "favorite"=>["Thomas", "Pokemon"]},
#   {"name"=>"Sumire",
#   "smoker"=>false,
#   "age"=>4,
#   "birth"=>#<Date: 4903153/2,0,2299161>}]

#-------------------
## YAML データ (「---」で区切って複数のデータを記述している)
str = <<END
---
name:   Ruby
url:    http://www.ruby-lang.org
---
name:   Python
url:    http://www.python.org
---
name:   PHP
url:    http://www.php.net
END

## YAML ドキュメントをひとつずつ読み込む
require 'yaml'
YAML.load_documents(str) do |doc|
  p doc
end

# {"name"=>"Ruby", "url"=>"http://www.ruby-lang.org"}
# {"name"=>"Python", "url"=>"http://www.python.org"}
# {"name"=>"PHP", "url"=>"http://www.php.net"}

#--- End of File ---

« ピックアップ: ユーザー造反で Digg が敗北宣言, プログラミングの6大10項目, etc... | トップページ | sqlite3 に郵便番号を読み込んだ »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/184434/14936957

この記事へのトラックバック一覧です: xfy meets yaml:

« ピックアップ: ユーザー造反で Digg が敗北宣言, プログラミングの6大10項目, etc... | トップページ | sqlite3 に郵便番号を読み込んだ »

mokuji

2013年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

google

  • twitter
  • __
  • _
    Googleボットチェッカー

合わせて読む

  • 合わせて読む
    フィードメーター - katoy: cocolog あわせて読みたい

リンク