🙌

使用しているModuleまとめ

2023/09/16に公開

開始月から終了月までの各月を出力させたい時や計算したい時

module Util
  class Month
    def self.each_month(start_month, end_month)
      Enumerator.new do |y|
        head = start_month
        tail = end_month

        while head <= tail
          y << head
          head = head.next_month
        end
      end
    end
  end
end
  • 使い方
months = Util::Month.each_month(Date.new(2023, 1, 1), Date.new(2023, 6, 1))

months.each do |month|
  puts "#{month}"
end

# 出力内容
# 2023-01-01
# 2023-02-01
# 2023-03-01
# 2023-04-01
# 2023-05-01
# 2023-06-01

3桁の区切り「カンマ」を削除、追加したいとき

  • tr_commaメソッドはカンマを削除
  • to_s_delimitedメソッドは3桁ごとにカンマで区切る
module Util
  class Converter
    # 3桁の区切り「カンマ」を削除
    def self.tr_comma(str)
      return str unless str.is_a?(String) && str.include?(',')

      str.tr(',', '')
    end

    # 3桁の区切り「カンマ」を生成
    def self.to_s_delimited(num)
      num.to_i.to_s(:delimited)
    end
  end
end
  • 使い方
# 3桁ごとのカンマを削除
result1 = Util::Converter.tr_comma("1,234,567")
puts result1  # 出力: "1234567"

# 数値を3桁ごとにカンマで区切る
result2 = Util::Converter.to_s_delimited(1234567)
puts result2  # 出力: "1,234,567"

タイプスタンプを文字列に付与したい場合

module Util
  class TimeStamp
    def self.with_timestamp(string, date: Time.zone.now, format: '%Y%m%d')
      "#{string}_#{date.strftime(format)}"
    end
  end
end
  • 使い方
puts Util::TimeStamp.with_timestamp("filename")
# 出力例: "filename_20230917"(今日の日付が2023-09-17である場合)

Discussion