remove datetag
This commit is contained in:
@@ -1,72 +0,0 @@
|
||||
class DateTag
|
||||
attr_accessor :tag, :start_date, :end_date
|
||||
|
||||
def self.new_from_range(start, stop)
|
||||
new("#{start.to_formatted_s(:db)}..#{stop.to_formatted_s(:db)}")
|
||||
end
|
||||
|
||||
def initialize(tag)
|
||||
@tag = tag
|
||||
end
|
||||
|
||||
def is_single_day?
|
||||
tag =~ /^\d+-\d+-\d+$/
|
||||
end
|
||||
|
||||
def is_range?
|
||||
!is_single_day
|
||||
end
|
||||
|
||||
def start_date
|
||||
return date if is_single_day?
|
||||
extract_ranges
|
||||
start_date
|
||||
end
|
||||
|
||||
def end_date
|
||||
return date if is_single_day?
|
||||
extract_ranges
|
||||
end_date
|
||||
end
|
||||
|
||||
def previous_week
|
||||
DateTag.new_from_range(1.week.ago(start_date), 1.week.ago(end_date))
|
||||
end
|
||||
|
||||
def next_week
|
||||
DateTag.new_from_range(1.week.since(start_date), 1.week.since(end_date))
|
||||
end
|
||||
|
||||
def previous_month
|
||||
DateTag.new_from_range(1.month.ago(start_date), 1.month.ago(end_date))
|
||||
end
|
||||
|
||||
def next_month
|
||||
DateTag.new_from_range(1.month.since(start_date), 1.month.since(end_date))
|
||||
end
|
||||
|
||||
def date
|
||||
Date.parse(tag)
|
||||
end
|
||||
|
||||
private
|
||||
def extract_ranges
|
||||
case tag
|
||||
when /\A(.+?)\.\.(.+)/
|
||||
self.start_date = Date.parse($1)
|
||||
self.end_date = Date.parse($2)
|
||||
|
||||
when /\A<(.+)/, /\A<=(.+)/, /\A\.\.(.+)/
|
||||
self.start_date = 20.years.ago
|
||||
self.end_date = Date.parse($1)
|
||||
|
||||
when /\A>(.+)/, /\A>=(.+)/, /\A(.+)\.\.\Z/
|
||||
self.start_date = Date.parse($1)
|
||||
self.end_date = Date.today
|
||||
|
||||
else
|
||||
self.start_date = Date.today
|
||||
self.end_date = Date.today
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user