Module: TDiary::CommentManager

Included in:
Style::BaseDiary
Defined in:
lib/tdiary/comment_manager.rb

Instance Method Summary collapse

Instance Method Details

#add_comment(com) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/tdiary/comment_manager.rb', line 16

def add_comment( com )
	(@comments << com).sort!{|a, b| a.date <=> b.date}
	if not @last_modified or @last_modified < com.date
		@last_modified = com.date
	end
	com
end

#count_comments(all = false) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/tdiary/comment_manager.rb', line 24

def count_comments( all = false )
	i = 0
	@comments.each do |comment|
		i += 1 if all or comment.visible?
	end
	i
end

#each_comment(limit = -1 )) ⇒ Object



32
33
34
35
36
37
# File 'lib/tdiary/comment_manager.rb', line 32

def each_comment( limit = -1 )
	@comments.each_with_index do |com,idx|
		break if idx >= limit and limit >= 0
		yield com
	end
end

#each_comment_tail(limit = 3) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/tdiary/comment_manager.rb', line 39

def each_comment_tail( limit = 3 )
	idx = 0
	comments = @comments.collect {|c|
		idx += 1
		if c.visible? then
			[c, idx]
		else
			nil
		end
	}.compact
	s = comments.size - limit
	s = 0 if s < 0
	for idx in s...comments.size
		yield comments[idx][0], comments[idx][1] # idx is start with 1.
	end
end

#each_visible_comment(limit = -1 )) ⇒ Object



56
57
58
59
60
61
62
# File 'lib/tdiary/comment_manager.rb', line 56

def each_visible_comment( limit = -1 )
	@comments.each_with_index do |com,idx|
		break if idx >= limit and limit >= 0
		next unless com.visible?
		yield com,idx+1 # idx is start with 1.
	end
end

#each_visible_trackback(limit = -1 )) ⇒ Object



64
65
66
67
68
69
70
71
72
73
# File 'lib/tdiary/comment_manager.rb', line 64

def each_visible_trackback( limit = -1 )
	i = 0
	@comments.each do |com|
		break if i >= limit and limit >= 0
		next unless /^TrackBack$/ =~ com.name
		next unless com.visible_true?
		i += 1
		yield com, i
	end
end

#each_visible_trackback_tail(limit = 3) ⇒ Object



75
76
77
78
79
80
81
82
83
# File 'lib/tdiary/comment_manager.rb', line 75

def each_visible_trackback_tail( limit = 3 )
	i = 0
	@comments.find_all {|com|
		com.visible_true? and /^TrackBack$/ =~ com.name
	}.reverse[0,limit].reverse.each do |com|
		i += 1 # i starts with 1.
		yield com,i
	end
end