2006-01-19 Thu

0119の暇人 [行動] はてぶ

天平の湯
かなえ亭 --22時ごろ
旭小屋

買物ログ [買物ログ] はてぶ

労働 0 0
遊 天平の湯 800
食費 ジュース 140

cl2kaimonocsv.rb [修行][rubyの勉強][chalow] はてぶ

[src]
#!/usr/bin/env ruby
$KCODE="EUC"
#
##!/usr/bin/env perl
# $Id: ChangeLog 1250 2007-06-05 14:58:37Z akapy $
# ChangeLog メモで家計簿!
# ref. <http://nais.to/~yto/doc/zb/0016.html#kakeibo>
#
# ■フォーマット
#買a物ログ:
# ^\t[費目][スペース][コメント][金額]$
# - スペースは半角でも全角でも良い。
# - 金額は半角数字。桁カンマは入れてはいけない。
#
# ■注意
# - 日本語コードは EUC を仮定
# - Excel に読み込ませる前に文字コードを Shift-JIS に変換する必要あり
#
# ■記述例&実行例
#
# $ cat ChangeLog
# 2003-08-02 YAMASHITA Tatsuo <yto@example.com>
#
# * できごと: だらだらしてた。
#
# * p:買a物ログ:
# 食 スーパー 1050
# 本 コンビニで雑誌 380
#
# 2003-08-01 YAMASHITA Tatsuo <yto@example.com>
#
# * できごと: 川崎で映画。
#
# * p:買a物ログ:
# 外 ファーストフード 525
# 遊 映画 2000
# 交 川崎往復 420
# 食 スーパー 780
#
# 2003-07-31 YAMASHITA Tatsuo <yto@example.com>
#
# * できごと: 渋谷に出掛けた。
#
# * p:買a物ログ:
# 外 レストラン 3000
# 交 渋谷往復 640
# 雑 ペンとメモ帳 550
#
# $ cl2moneycsv.pl ChangeLog
# , 外, 食, 交, 遊, 本, 音, 雑, 衣, 他
# 2003.07.31,3000, 0, 640, 0, 0, 0, 550, 0, 0
# 2003.08.01, 525, 780, 420,2000, 0, 0, 0, 0, 0
# 2003.08.02, 0,1050, 0, 0, 380, 0, 0, 0, 0
# $ cl2moneycsv.pl -m ChangeLog (←月毎に集計)
# , 外, 食, 交, 遊, 本, 音, 雑, 衣, 他
# 2003-07,3000, 0, 640, 0, 0, 0, 550, 0, 0
# 2003-08, 525,1830, 420,2000, 380, 0, 0, 0, 0
# $ cl2moneycsv.pl -m ChangeLog | nkf -s > kaimono.csv

# use strict;

# 費目 an item of expendidure
#my @lioe = ('外', '食', '交', '遊', '本', '音', '雑', '衣', '他')
lioe = ["外","食","交","遊","本","音","雑","衣","他"]
#lioe = %w(外 食 交 )

inside_flag = 0

entry = {}
p lioe

#while (<>) {
#while <>
while line = ARGF.gets
    if /^((\d{4}-\d\d)-\d\d)/ =~ line then # 日付をキープ
    date = $1 # = year-month-day
# $date =~ s|-|.|g # for Excel
# p date
    elsif /買a物ログ:/ =~ line then # 家計簿データ記述ブロックの始まり
inside_flag = 1
    elsif inside_flag == 1 then # ブロック内
if /^\s*$/ =~ line and inside_flag == 1 then # ブロックの終わり
    inside_flag = 0
else # /^\t(.+?)(\s|\xa1\xa1).*(\s|\xa1\xa1)(\d+)$/
  kamoku = $1
  naiyou = $2
  kingaku = $3
  p date,line.chomp.split(nil)
# p date,kamoku,naiyou,kingaku
  # $1,$2,$3,$4,$5
       end
    end
end

=begin
85,89,92
#print " " x 10, ", ", join(', ', @lioe), "\n"
p " " x 10, ", ", join(', ', lioe), "\n"

#foreach date (sort keys entry) {
# print "$date,"
# print join(',', map {sprintf "%4d", $entry{$date}{$_}} @lioe), "\n"
#}
date.times
   p date ;
end

=end
[src]
<<

天平の湯で勉強 [ひとりごと] はてぶ

家は寒いのと、集中できない(テレビを見てしまったり)ので天平の湯で勉強してみた。
小劇場は一日中カラオケがこだましてたけどちょっとだけ結果が出た。