Class: Defoker::DateBaseName

Inherits:
Object
  • Object
show all
Defined in:
lib/date_base_name.rb

Overview

DateBaseName provides methods that various kind of date-base formated name. date base, month base, year base, and etc…

Class Method Summary collapse

Class Method Details

.to_yyyy(year, additional: '') ⇒ String

Get year-base formated name. if additional is empty, return year YYYY. if additional is not empty, return year YYYY_additional.

Examples:

only year

DateBaseName.new.to_yyyy(Date.new(2014)) #=> "2014"

year with additional text

DateBaseName.new.to_yyyy(Date.new(2014), additional: 'hoge') #=> "2014_hoge"

Parameters:

  • year (Date, DateTime)

    target year

  • additional (String) (defaults to: '')

    additional text. If you want to get only year, you can omit this option.

Returns:

  • (String)

    year-based formated name



116
117
118
119
120
121
# File 'lib/date_base_name.rb', line 116

def self.to_yyyy(year, additional: '')
  DateBaseNameValidators.validate_date(year)
  v = year.strftime('%Y')
  return v if additional.empty?
  "#{v}_#{additional}"
end

.to_yyyy_list(year, count: 3, additional: '') ⇒ Array(String)

Get year-base formated name list. if additional is empty, return year YYYY. if additional is not empty, return year YYYY_additional.

Examples:

only year

DateBaseName.new.to_yyyymm_list(Date.new(2014), count: 4))
=> ["2014","2015","2016","2017"]

only year (omit count. default = 3)

DateBaseName.new.to_yyyymm_list(Date.new(2014)))
=> ["2014","2015","2016"]

year with additional text

DateBaseName.new.to_yyyymm_list(Date.new(2014), count: 4, additional: 'hoge')
=> ["2014_hoge","2015_hoge","2016_hoge","2017_hoge"]

Parameters:

  • year (Date, DateTime)

    year

  • count (Fixnum) (defaults to: 3)

    year count. default = 3.

  • additional (String) (defaults to: '')

    additional text. If you want to get only year, you can omit this option.

Returns:

  • (Array(String))

    year-based formated names



142
143
144
145
146
147
# File 'lib/date_base_name.rb', line 142

def self.to_yyyy_list(year, count: 3, additional: '')
  DateBaseNameValidators.validate_date(year)
  count.times.with_object([]) do |i, memo|
    memo << to_yyyy(year >> (i * 12), additional: additional)
  end
end

.to_yyyymm(month, additional: '') ⇒ String

Get month-base formated name. if additional is empty, return month YYYYMM. if additional is not empty, return month YYYYMM_additional.

Examples:

only month

DateBaseName.new.to_yyyymm(Date.new(2014,9)) #=> "201409"

month with additional text

DateBaseName.new.to_yyyymm(Date.new(2014,9), additional: 'hoge') #=> "201409_hoge"

Parameters:

  • month (Date, DateTime)

    target month

  • additional (String) (defaults to: '')

    additional text. If you want to get only month, you can omit this option.

Returns:

  • (String)

    month-based formated name



69
70
71
72
73
74
# File 'lib/date_base_name.rb', line 69

def self.to_yyyymm(month, additional: '')
  DateBaseNameValidators.validate_date(month)
  v = month.strftime('%Y%m')
  return v if additional.empty?
  "#{v}_#{additional}"
end

.to_yyyymm_list(month, count: 3, additional: '') ⇒ Array(String)

Get month-base formated name list. if additional is empty, return month YYYYMM. if additional is not empty, return month YYYYMM_additional.

Examples:

only month

DateBaseName.new.to_yyyymm_list(Date.new(2014,10), count: 4))
=> ["201410","201411","20141","201501"]

only month (omit count. default = 3)

DateBaseName.new.to_yyyymm_list(Date.new(2014,10)))
=> ["201410","201411","20141"]

month with additional text

DateBaseName.new.to_yyyymm_list(Date.new(2014,9,9), count: 4, additional: 'hoge')
=> ["201410_hoge","201411_hoge","20141_hoge","201501_hoge"]

Parameters:

  • month (Date, DateTime)

    month

  • count (Fixnum) (defaults to: 3)

    month count. default = 3.

  • additional (String) (defaults to: '')

    additional text. If you want to get only month, you can omit this option.

Returns:

  • (Array(String))

    month-based formated names



95
96
97
98
99
100
# File 'lib/date_base_name.rb', line 95

def self.to_yyyymm_list(month, count: 3, additional: '')
  DateBaseNameValidators.validate_date(month)
  count.times.with_object([]) do |i, memo|
    memo << to_yyyymm(month >> i, additional: additional)
  end
end

.to_yyyymmdd(date, additional: '') ⇒ String

Get date-base formated name. if additional is empty, return date YYYYMMDD. if additional is not empty, return date YYYYMMDD_additional.

Examples:

only date

DateBaseName.new.to_yyyymmdd(Date.new(2014,9,9)) #=> "20140909"

date with additional text

DateBaseName.new.to_yyyymmdd(Date.new(2014,9,9), additional: 'hoge') #=> "20140909_hoge"

Parameters:

  • date (Date, DateTime)

    target date

  • additional (String) (defaults to: '')

    additional text. If you want to get only date, you can omit this option.

Returns:

  • (String)

    date-based formated name



22
23
24
25
26
27
# File 'lib/date_base_name.rb', line 22

def self.to_yyyymmdd(date, additional: '')
  DateBaseNameValidators.validate_date(date)
  v = date.strftime('%Y%m%d')
  return v if additional.empty?
  "#{v}_#{additional}"
end

.to_yyyymmdd_list(day, count: nil, additional: '') ⇒ Array(String)

Get date-base formated name list. if additional is empty, return date YYYYMMDD. if additional is not empty, return date YYYYMMDD_additional.

Examples:

only date

DateBaseName.new.to_yyyymmdd_list(Date.new(2014,9,9), Date.new(2014,9,12))
=> ["20140909","20140910","20140911","20140912"]

date with additional text

DateBaseName.new.to_yyyymmdd_list(Date.new(2014,9,9), count: Date.new(2014,9,12), additional: 'hoge')
=> ["20140909_hoge", "20140910_hoge", "20140911_hoge", "20140912_hoge"]

range

DateBaseName.new.to_yyyymmdd_list(Date.new(2014,9,9)..Date.new(2014,9,12), additional: 'hoge')
=> ["20140909_hoge", "20140910_hoge", "20140911_hoge", "20140912_hoge"]

Parameters:

  • day (Date, DateTime, Range)

    date or from-count range

  • count (Date) (defaults to: nil)

    count date.

  • additional (String) (defaults to: '')

    additional text. If you want count get only date, you can omit this option.

Returns:

  • (Array(String))

    date-based formated names



48
49
50
51
52
53
# File 'lib/date_base_name.rb', line 48

def self.to_yyyymmdd_list(day, count: nil, additional: '')
  DateBaseNameValidators.validate_date(day)
  count.times.with_object([]) do |i, memo|
    memo << to_yyyymmdd(day + i, additional: additional)
  end
end