トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

Diary/2011-12-13

旅程

出張の申請をするときに旅程を書かなければいけないのだけど
地味に面倒....
というわけで駅前探検倶楽部のテキストデータから旅程出せるような
スクリプトを書いてみた.

format.rb(216)

path = []
goal = ""

data = $stdin.read
data.split("\n").each{ |line|
  if /^●(.+)/ =~ line then
    path << $1
  elsif /^○(.+)/ =~ line then
    path << $1
  elsif /^↓(.+)/ =~ line then
    path << $1
  elsif /^■(.+)/ =~ line then
    goal = $1
  elsif /\d\d:\d\d/ =~ line then
  elsif / +([^\(].+)\(.+\)\[.+\]/ =~ line then
    path << $1
  elsif /徒歩/ =~ line then
    path << "徒歩"
  elsif /バス/ =~ line then
    path << "バス"
  elsif / +(\D+)(\d+)便/ =~ line then
    path << $1
  end
}

flag = false
im = ""
ret_path = path.reverse
path.each{|elem|
  print im
  print "(" if flag
  print elem
  print ")" if flag
  im = " → "
  flag = !flag
}
print " → "
print goal
flag = true
ret_path.each{|elem|
  print im
  print "(" if flag
  print elem
  print ")" if flag
  im = " → "
  flag = !flag
}
puts


たとえば,調布→湯河原で検索した結果

●調布
|  15:18発
|    京王線(準特急)[新宿行]17分
| △15:35着
○新宿
|  15:42発
|    JR山手線(内回り)[渋谷方面行]19分
|  16:01着
○品川
|  16:10発
|    ひかり479号(自由席)[岡山行]32分
|  16:42着
○熱海
|  16:51発
|    JR東海道本線(快速アクティー)[東京行]5分
|  16:56着
■湯河原


ruby format.rb

のあと標準入力から入力すると,

調布 → (京王線) → 新宿 → (JR山手線) → 品川 → (ひかり479号) → 熱海
→ (JR東海道本線) → 湯河原 → (JR東海道本線) → 熱海 → (ひかり479号) → 品川
→ (JR山手線) → 新宿 → (京王線) → 調布

とか出力される.