Sha256: fec7df1fead8b8fa2b390d05f19548ae8b5a85eed242cb6ccb6abcc844f77e2b

Contents?: true

Size: 1.78 KB

Versions: 31

Compression:

Stored size: 1.78 KB

Contents

# -*- coding: utf-8; -*-
#
# module CommentManager
#	 Management comments in a day. Include in Diary class.
#
module TDiary
	module CommentManager
		private
		#
		# call this method when initialize
		#
		def init_comments
			@comments = []
		end

		public
		def add_comment( com )
			@comments << com
			if not @last_modified or @last_modified < com.date
				@last_modified = com.date
			end
			com
		end

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

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

		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

		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

		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

		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
	end
end

# Local Variables:
# mode: ruby
# indent-tabs-mode: t
# tab-width: 3
# ruby-indent-level: 3
# End:
# vim: ts=3

Version data entries

31 entries across 30 versions & 1 rubygems

Version Path
tdiary-5.0.0 lib/tdiary/comment_manager.rb
tdiary-4.2.1 vendor/bundle/ruby/2.3.0/gems/tdiary-4.2.0/lib/tdiary/comment_manager.rb
tdiary-4.2.1 lib/tdiary/comment_manager.rb
tdiary-4.2.0 lib/tdiary/comment_manager.rb
tdiary-4.1.3 lib/tdiary/comment_manager.rb
tdiary-4.1.2 lib/tdiary/comment_manager.rb
tdiary-4.1.1 lib/tdiary/comment_manager.rb
tdiary-4.1.0 lib/tdiary/comment_manager.rb
tdiary-4.1.0.20141126 lib/tdiary/comment_manager.rb
tdiary-4.0.5.1 tdiary/comment_manager.rb
tdiary-4.0.5 tdiary/comment_manager.rb
tdiary-4.0.4 tdiary/comment_manager.rb
tdiary-4.0.3 tdiary/comment_manager.rb
tdiary-4.0.2.20140201 tdiary/comment_manager.rb
tdiary-4.0.2 tdiary/comment_manager.rb
tdiary-4.0.1.20131102 tdiary/comment_manager.rb
tdiary-4.0.1.20130929 tdiary/comment_manager.rb
tdiary-4.0.1.20130903 tdiary/comment_manager.rb
tdiary-4.0.1 tdiary/comment_manager.rb
tdiary-4.0.0.20130826 tdiary/comment_manager.rb