combofeed.rb #1

  • //
  • guest/
  • matt_attaway/
  • seymour/
  • main/
  • lib/
  • combofeed.rb
  • View
  • Commits
  • Open Download .zip Download (2 KB)
class ComboFeed < Feed


	def initialize( link, token=nil, regex=nil )
		super( link, token, regex )
	end

	def buildFeed( date )

		@rss = RSS::Maker.make( version ) do |m|
			m.channel.title = title
			m.channel.link = link
			m.channel.description = description
			m.items.do_sort = true 
		end

		# build all necessary feeds
		@feeds.each do |f|
			
			if( f == "+" || f == "-" || f == "_"  )
				next
			end
			
			f.buildFeed( date )
		end

		action = "+"

		# join the resulting feeds
		@feeds.each do |f|
			
			if(f == "+" || f == "-" || f == "_"  )
				action = f
				next
			end

			# crude way to join the arrays
			if( @rss.items.length == 0 )
				f.rss.items.each do |i|
					@rss.items << i
				end
							
			elsif( action == "_" )
				@rss.items.delete_if { |i|
					seen = false
				
					f.rss.items.each do |e|
						if( e.title == i.title )
							seen = true
							break
						end
					end
					
					!seen
				}
			elsif( action == "+" )
				f.rss.items.each { |i|
					seen = false
				
					@rss.items.each do |e|
						if( e.title == i.title )
							seen = true
							break
						end
					end
					
					if( !seen )
						@rss.items << i
					end
				}
			elsif( action == "-" )
				@rss.items.delete_if { |i|
					seen = false
				
					f.rss.items.each do |e|
						if( e.title == i.title )
							seen = true
							break
						end
					end
					
					seen
				}
			end
		end
	end
	
	def title
		tmp = ""
	
		@feeds.each do |f|
			
			if( f == "+" || f == "-" || f == "_" )
				tmp += " " + f + " "
				next
			end
			
			tmp += f.title
		end
		
		tmp
	end

	def description
		tmp = ""
	
		@feeds.each do |f|
			
			if( f == "+" || f == "-" || f == "_" )
				next
			end
			
			tmp += f.description + " "
		end
		
		tmp
	end

end


begin
end
# Change User Description Committed
#1 14058 Matt Attaway Rename p4tter to Seymour so that I can actually find it