summaryrefslogtreecommitdiffstats
path: root/lib/blink/message.rb
blob: 31d5fa50368ddd024eb73531792c6af96d0fc149 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# $Id$

module Blink
    #------------------------------------------------------------
    # provide feedback of various types to the user
    # modeled after syslog messages
    # each level of message prints in a different color
	class Message
		@@messages = Array.new
		@@levels = [ :debug, :verbose, :notice, :warning, :error ]
		@@colors = {
			:debug => SLATE,
			:verbose => ORANGE,
			:notice => PINK,
			:warning => GREEN,
			:error => YELLOW
		}

		attr_accessor :level, :message, :source

        def Message.loglevels
            return @@levels
        end

		def initialize(args)
			unless args.include?(:level) && args.include?(:message) &&
						args.include?(:source) 
				raise "Blink::Message called incorrectly"
			end

			if args[:level].class == String
				@level = args[:level].intern
			elsif args[:level].class == Symbol
				@level = args[:level]
			else
				raise "Level is not a string or symbol: #{args[:level].class}"
			end
			@message = args[:message]
			@source = args[:source]
			@time = Time.now
			# this should include the host name, and probly lots of other
			# stuff, at some point
			unless @@levels.include?(level)
				raise "Invalid message level #{level}"
			end

			@@messages.push(self)
			Blink.newmessage(self)
		end

		def to_s
			# this probably won't stay, but until this leaves the console,
			# i'm going to use coloring...
			#return "#{@time} #{@source} (#{@level}): #{@message}"
			#return @@colors[@level] + "%s %s (%s): %s" % [
			#	@time, @source, @level, @message
			#] + RESET
			return @@colors[@level] + "%s (%s): %s" % [
				@source, @level, @message
			] + RESET
		end
	end
    #------------------------------------------------------------
end