超簡単な家計簿をつけてみる

エクセルとかは面倒なので、エディタを使ってノート感覚で簡単につけることにする。こんな感じ。括弧内はコメントで、無視される。半角スペース、改行なども無視される。
201509.kakei

@9/28
-本=3139 <カルコス>
-缶コーヒー=151 <コンビニ>

@9/30
-hoge=1000 -たこ焼き=350
-アイス<抹茶>=100


Ruby で処理してこんな感じ。

9/28  3290円
9/30  1450円
合計4740円


Ruby スクリプト
kakeibo.rb

# encoding:Shift_JIS

class Kakeibo
  def sum
    s = 0
    get_month_data.each do |day|
      daysum = 0
      day[1].each {|data| daysum += data[1].to_i}
      puts "#{day[0][0]}/#{day[0][1]}  #{daysum}"
      s += daysum
    end
    puts "合計#{s}"
  end
  
  private
  def get_month_data
    text = File.read('201509.kakei').gsub(/\s/, "").gsub(/<[^>]*>/, "")
    getmonth(text)
  end
  
  def getmonth(text)
    month = []
    text.split(/@/).each do |nd|
      next if nd.empty?
      day = []; obj = []
      a = nd.split(/-/)
      day << a.shift.split(%r|/|)
      a.each {|data| obj << data.split(/=/)}
      day << obj; month << day
    end
    month
  end
end

Kakeibo.new.sum


getmonth メソッドの返り値(Array)はこんな感じ。

[
  [["9", "28"], [ ["本", "3139"], ["缶コーヒー", "151"] ]],
  [["9", "30"], [ ["hoge", "1000"], ["たこ焼き", "350"], ["アイス", "100"] ]]
]