Class: Ymdtree

Inherits:
Object
  • Object
show all
Defined in:
lib/middleman-blog-ymd/ymdtree.rb

Class Method Summary collapse

Class Method Details

.add(y, m, d) ⇒ Object



16
17
18
# File 'lib/middleman-blog-ymd/ymdtree.rb', line 16

def add(y , m , d)
	@hash[y][m][d] = true
end

.days_of(y, m) ⇒ Object



25
26
27
# File 'lib/middleman-blog-ymd/ymdtree.rb', line 25

def days_of( y, m )
	@hash[y][m].keys
end

.first_month_of_year(y) ⇒ Object



63
64
65
66
67
# File 'lib/middleman-blog-ymd/ymdtree.rb', line 63

def first_month_of_year(y)
	ms = @hash[y].keys
	sorted_ms = ms.sort
	sorted_ms.first
end

.hashObject



13
14
15
# File 'lib/middleman-blog-ymd/ymdtree.rb', line 13

def hash
	return @hash
end

.init(blog_data) ⇒ Object



5
6
7
8
9
10
11
12
# File 'lib/middleman-blog-ymd/ymdtree.rb', line 5

def init(blog_data)
	blog_data.articles.each{|article|
			year_value = article.date.gmtime.year
			month_value =article.date.gmtime.month
			day_value =article.date.gmtime.day
			add(year_value, month_value, day_value)
	}
end

.last_month_of_year(y) ⇒ Object



57
58
59
60
61
# File 'lib/middleman-blog-ymd/ymdtree.rb', line 57

def last_month_of_year(y)
	ms = @hash[y].keys
	sorted_ms = ms.sort
	sorted_ms.last
end

.months_of(y) ⇒ Object



22
23
24
# File 'lib/middleman-blog-ymd/ymdtree.rb', line 22

def months_of( y )
	@hash[y].keys
end

.next_month(y, m) ⇒ Object



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/middleman-blog-ymd/ymdtree.rb', line 87

def next_month( y , m)
	month_array = @hash[y].to_a
	month_array = month_array.collect{|month|
		month[0]
	}
	m_idx = month_array.index(m)
	if m_idx == 0
		if next_year(y)
			return [ next_year(y), first_month_of_year( next_year(y) ) ] 
			# preious year of last month
		else
			return nil
		end
	else 
		return [y , month_array[ m_idx - 1 ] ]
	end
end

.next_year(y) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/middleman-blog-ymd/ymdtree.rb', line 43

def next_year(y)
	ys = years
	sorted_ys = ys.sort
	yidx = sorted_ys.index(y)
	case yidx
	when (sorted_ys.length - 1)
		return nil
	when nil
		raise Error , "argument year doesn't exist"
	else
		return sorted_ys[yidx + 1]
	end
end

.previous_month(y, m) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/middleman-blog-ymd/ymdtree.rb', line 69

def previous_month( y , m)
	month_array = @hash[y].to_a
	month_array = month_array.collect{|month|
		month[0]
	}
	m_idx = month_array.index(m)
	if m_idx == ( month_array.length - 1 )
		if previous_year(y)
			return [ previous_year(y), last_month_of_year( previous_year(y) )] 
			# preious year of last month
		else
			return nil
		end
	else
		return [ y, month_array[ m_idx + 1 ] ]
	end
end

.previous_year(y) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/middleman-blog-ymd/ymdtree.rb', line 29

def previous_year(y)
	ys = years
	sorted_ys = ys.sort
	yidx = sorted_ys.index(y)
	case yidx
	when 0
		return nil
	when nil
		raise Error , "argument year doesn't exist"
	else
		return sorted_ys[yidx - 1]
	end
end

.yearsObject



19
20
21
# File 'lib/middleman-blog-ymd/ymdtree.rb', line 19

def years
	@hash.keys
end