{"id":25234,"date":"2024-02-29T21:39:12","date_gmt":"2024-02-29T12:39:12","guid":{"rendered":"http:\/\/www.tyosuke20xx.com\/blog\/?p=25234"},"modified":"2024-02-29T21:39:15","modified_gmt":"2024-02-29T12:39:15","slug":"ruby-%e3%83%a1%e3%83%a2%e3%82%a2%e3%83%97%e3%83%aa","status":"publish","type":"post","link":"http:\/\/www.tyosuke20xx.com\/blog\/?p=25234","title":{"rendered":"ruby \u30e1\u30e2\u30a2\u30d7\u30ea"},"content":{"rendered":"\n<pre class=\"wp-block-code\"><code>require 'date'\r\n\r\nclass Memo\r\n  attr_accessor :title, :content, :category, :created_at\r\n\r\n  def initialize(title, content, category)\r\n    @title = title\r\n    @content = content\r\n    @category = category\r\n    @created_at = DateTime.now\r\n  end\r\n\r\n  def to_s\r\n    \"#{@title}: #{@content} (Category: #{@category}) &#91;Created at: #{@created_at}]\"\r\n  end\r\nend\r\n\r\nclass MemoApp\r\n  def initialize\r\n    @memos = &#91;]\r\n    load_memos\r\n  end\r\n\r\n  def run\r\n    loop do\r\n      show_menu\r\n      choice = gets.chomp.to_i\r\n\r\n      case choice\r\n      when 1\r\n        create_memo\r\n      when 2\r\n        display_memos\r\n      when 3\r\n        search_memos\r\n      when 4\r\n        break\r\n      else\r\n        puts \"Invalid choice. Please try again.\"\r\n      end\r\n    end\r\n  end\r\n\r\n  private\r\n\r\n  def show_menu\r\n    puts \"\\nMemo App Menu\"\r\n    puts \"1. Create Memo\"\r\n    puts \"2. Display Memos\"\r\n    puts \"3. Search Memos\"\r\n    puts \"4. Exit\"\r\n    print \"Enter your choice: \"\r\n  end\r\n\r\n  def create_memo\r\n    print \"Enter memo title: \"\r\n    title = gets.chomp\r\n    print \"Enter memo content: \"\r\n    content = gets.chomp\r\n    print \"Enter memo category: \"\r\n    category = gets.chomp\r\n\r\n    memo = Memo.new(title, content, category)\r\n    @memos &lt;&lt; memo\r\n    save_memos\r\n    puts \"Memo created successfully!\"\r\n  end\r\n\r\n  def display_memos\r\n    if @memos.empty?\r\n      puts \"No memos found.\"\r\n    else\r\n      puts \"\\nMemos:\"\r\n      @memos.each_with_index do |memo, index|\r\n        puts \"#{index + 1}. #{memo}\"\r\n      end\r\n    end\r\n  end\r\n\r\n  def search_memos\r\n    print \"Enter search term: \"\r\n    term = gets.chomp.downcase\r\n    results = @memos.select { |memo| memo.title.downcase.include?(term) || memo.content.downcase.include?(term) || memo.category.downcase.include?(term) }\r\n    if results.empty?\r\n      puts \"No memos found matching the search term.\"\r\n    else\r\n      puts \"\\nSearch Results:\"\r\n      results.each { |memo| puts memo }\r\n    end\r\n  end\r\n\r\n  def load_memos\r\n    if File.exist?(\"memos.txt\")\r\n      File.open(\"memos.txt\", \"r\") do |file|\r\n        file.each_line do |line|\r\n          title, content, category, created_at = line.chomp.split(\": \")\r\n          @memos &lt;&lt; Memo.new(title, content, category)\r\n        end\r\n      end\r\n    end\r\n  end\r\n\r\n  def save_memos\r\n    File.open(\"memos.txt\", \"w\") do |file|\r\n      @memos.each do |memo|\r\n        file.puts \"#{memo.title}: #{memo.content}: #{memo.category}: #{memo.created_at}\"\r\n      end\r\n    end\r\n  end\r\nend\r\n\r\n# \u30e1\u30e2\u30a2\u30d7\u30ea\u306e\u5b9f\u884c\r\nmemo_app = MemoApp.new\r\nmemo_app.run\r\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[4,84],"tags":[3,85],"class_list":["post-25234","post","type-post","status-publish","format-standard","hentry","category-programming","category-ruby","tag-programming","tag-ruby"],"aioseo_notices":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/25234","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=25234"}],"version-history":[{"count":2,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/25234\/revisions"}],"predecessor-version":[{"id":25446,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/25234\/revisions\/25446"}],"wp:attachment":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=25234"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=25234"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=25234"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}