Newer
Older
Ruby / memo.rb
#!usr/bin/env ruby
# -*- coding: utf-8 -*-

#このプログラムは、メモづくりを簡単に行えるプログラムがあればいいなと思い、作った。
#このテーマにした理由は、自分の親がいつも出かけるときにメモを置いて行くのだが、時間がなくて書けなかったり、メモ帳がなかったりして書けないことがあったりしたため、そのような場合に、すぐに書けて、メモ帳代わりになるプログラムがあったら便利だろうなと思ったから。
#また、自分は一日の予定(to do)をよくホワイトボードに書いているのだが、置く場所がなく、じゃまだったりすることがあるので、パソコン内に保存しておけたら楽だと思った。
#だが、今まで、プログラムがずっと動いていないと、入力した内容が保持されないと思っていたので、他のプログラムを作る予定だった。でも、rubyではcsvファイルやtxtファイルの読み込みができるので、もしかしたら書き込みも可能なのかもしれないと考え、やってみたらできたので、これを使ってプログラムを作ってみることにした。

#実装したい機能
#・メモの記入
#・書いたメモの保存
#・箇条書きonとoffの切り替え
#・記入済みのメモの表示
#・to_doでの、リスト内の完了したことの消去
#・to_doで、やることが全て完了したときの、to_doの自動消去
#・メモの細かいデータの保存(書いた日付など)
#・メモがいつになったら表示される/消去されるなどの設定
#・不要になったメモの削除
#・複数のメモの作成
#・表示時、削除時での、メモが存在しない場合のメッセージ
#・メモの検索(年、月、日、内容など)

#結果...悩みを解決できるプログラムは作れたと思う。だが、これは必要最低限で、まだ普通のメモ帳と変わらないレベルまでしか作れていないので、普通のメモ帳よりこのプログラムが便利になるように、まだ実装*
******
to_do = []******

while true
  puts "メモの作成\nメモを見る\nメモの削除\n1or2or3"
  sentaku = gets.chomp
  if sentaku == "1"
    puts "1.to doリスト作成\n2.ただのメモ\nメモの種類を選択してください。1or2"
    memo_kind = gets.chomp
    puts "次に、箇条書きをするかを入力してください。on or off"
    kazyougaki = gets.chomp
    if memo_kind == "1"
      file_to_do = File.open('to_do.txt',"w+")
      puts "内容を書き込んでください。終わる場合はendと入力してください。"
      num = 1
      while true
        if kazyougaki == "on"
          printf("%d:",num)
          print "・"
        end
        naiyou = gets.chomp
        if naiyou == "end"
          break
        else
          if kazyougaki == "on"
            file_to_do.printf("%d:",num)
            num += 1
            file_to_do.print "・"
          end
          file_to_do.printf("%s\n",naiyou)
        end
      end
      file_to_do.close
    elsif memo_kind == "2"
      puts "内容を書き込んでください。終わる場合はendと入力してください。"
      file_memo = File.open('memo.txt',"w+")
      while true
        if kazyougaki == "on"
          print "・"
        end
        naiyou = gets.chomp
        if naiyou == "end"
          break
        else
          if kazyougaki == "on"
            file_memo.print "・"
          end
          file_memo.printf("%s\n",naiyou)
        end
      end
      file_memo.close
    end
    redo
  elsif sentaku == "2"
    puts "どちらのメモを見ますか?\nto_do or memo"
    begin
      see = gets.chomp
      if see == "to_do"
        puts File.read('to_do.txt')
        puts "終了したものは消すことができます。\n消したいものの番号を入力してください。終わる場合はendと入力してください。"
        while true
          File.readlines("to_do.txt").each do |line|
            to_do << line.chomp
          end
          if to_do.length == 0
            File.delete("to_do.txt")
            puts "to_doの内容が全て終了したため、to_doが削除されました。"
            break
          end
          finish = gets.chomp
          if finish == "end"
            break
          else
            to_do.delete_at(finish.to_i - 1)
            file_to_do = File.open('to_do.txt',"w")
            file_to_do.puts to_do
            file_to_do.close
            puts File.read('to_do.txt')
            to_do = []
            redo
          end
        end
        redo
      elsif see == "memo"
        File.readlines("memo.txt").each do |line|
          p line.chomp
        end
      end
    rescue Errno::ENOENT
      puts "そのメモは存在しないか、すでに消された可能性があります。"
    end
  elsif sentaku == "3"
    puts "どちらのメモを削除しますか?\nto_do or memo"
    begin
      delete = gets.chomp
      if delete == "to_do"
        File.delete("to_do.txt")
      elsif delete == "memo"
        File.delete("memo.txt")
      end
    rescue Errno::ENOENT
      puts "そのメモは存在しないか、すでに消された可能性があります。"
    end
  end
  redo
end