* Missing files

* Work on post exploration code by traversing dates
This commit is contained in:
albert
2010-10-27 20:16:43 -04:00
parent f9cdcef2c0
commit fc0a076aca
32 changed files with 371 additions and 189 deletions

72
app/logical/date_tag.rb Normal file
View File

@@ -0,0 +1,72 @@
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

View File

@@ -43,6 +43,10 @@ class PostSet
tag_array.size == 1
end
def date_tag
tag_array.grep(/date:/).first
end
def load_associations
if is_single_tag?
@wiki_page = WikiPage.find_by_title(tags)