pangdudu-rofl 0.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc ADDED
@@ -0,0 +1,38 @@
1
+ = ROFL
2
+
3
+ My little logger wrapper. Will give you easy access to logger functions with
4
+ class and caller method info.
5
+
6
+ rofl,lol.
7
+
8
+ == Installation
9
+
10
+ sudo gem install pangdudu-rofl --source=http://gems.github.com
11
+
12
+ == Usage
13
+
14
+ look at the test_rofl.rb or simply do this:
15
+
16
+ require 'rubygems'
17
+ require 'rofl'
18
+ include Rofl
19
+
20
+ you can than use the methods: elog,wlog,ilog,dlog
21
+
22
+ where elog is like:
23
+ logger.error (text if you like)
24
+ wlog is like:
25
+ logger.warning (text if you like)
26
+ ilog is like:
27
+ logger.info (text if you like)
28
+ dlog is like:
29
+ logger.debug (text if you like)
30
+
31
+
32
+ == Rule the universe!
33
+
34
+ Log,log,log.
35
+
36
+ == License
37
+
38
+ GPL -> http://www.gnu.org/licenses/gpl.txt
data/bin/rofl ADDED
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/ruby
2
+ require 'rofl'
3
+ include Rofl
4
+
5
+ class Test
6
+ def initialize
7
+ dlog "initialize"
8
+ end
9
+ def call_hello_world
10
+ other_method
11
+ hello_world
12
+ other_method
13
+ end
14
+ def hello_world
15
+ other_method
16
+ dlog "hello world!"
17
+ other_method
18
+ end
19
+ def other_method
20
+ puts "puts git other method called"
21
+ end
22
+ end
23
+
24
+ test = Test.new
25
+ test.call_hello_world
data/lib/rofl.rb ADDED
@@ -0,0 +1,64 @@
1
+ require 'logger'
2
+
3
+ #little happy logger module
4
+ module Rofl
5
+
6
+ attr_accessor :debugname,:logger
7
+
8
+ #check if there already is a logger, kind of a constructor
9
+ def rofl_logger_check
10
+ if @logger.nil?
11
+ #to stop output from getting messy, we use a logger
12
+ @logger = Logger.new(STDOUT)
13
+ @logger.level = Logger::DEBUG
14
+ #@logger.datetime_format = "%Y-%m-%d %H:%M:%S" #useful for logging to a file
15
+ @logger.datetime_format = "%H:%M:%S" #useful for debugging
16
+ @debugname = self.class if @debugname.nil? #only used to inform the user
17
+ @tracing = false
18
+ #enable tracing
19
+ if @tracing
20
+ require 'rofl_trace'
21
+ include RoflTrace
22
+ rofl_enable_trace
23
+ end
24
+ end
25
+ end
26
+ #error message
27
+ def elog text="error"
28
+ rofl_logger_check #check if logger is setup
29
+ @logger.error "#{@debugname}.#{rofl_meth_trace}: #{text.to_s}"
30
+ end
31
+ #warning
32
+ def wlog text="warning"
33
+ rofl_logger_check #check if logger is setup
34
+ @logger.warning "#{@debugname}.#{rofl_meth_trace}: #{text.to_s}"
35
+ end
36
+ #info message
37
+ def ilog text="info"
38
+ rofl_logger_check #check if logger is setup
39
+ @logger.info "#{@debugname}.#{rofl_meth_trace}: #{text.to_s}"
40
+ end
41
+ #debug message
42
+ def dlog text="debug"
43
+ rofl_logger_check #check if logger is setup
44
+ @logger.debug "#{@debugname}.#{rofl_meth_trace}: #{text.to_s}"
45
+ end
46
+ #get method call trace
47
+ def rofl_meth_trace
48
+ skip = 2 #indicates how many items we skip in the execution stack trace
49
+ call_trace = caller(skip)
50
+ last_meth = call_trace[0][/\`.*?\'/]
51
+ last_meth_name = last_meth.delete("\`").delete("\'") #what was the right string method for this?
52
+ return last_meth_name
53
+ end
54
+ #check if we or an object are ready to rofl
55
+ def rofl? object=self
56
+ has_rofl = (defined? object.rofl?).eql? "method"
57
+ dlog "object of class: #{object.class} is rock'n'rofl." if has_rofl
58
+ return has_rofl
59
+ end
60
+ end
61
+ #finally we just include ourselves, a little dirty ... what the hell :)
62
+ include Rofl
63
+ #and check, if we're ready to go
64
+ rofl_logger_check
data/lib/rofl_trace.rb ADDED
@@ -0,0 +1,26 @@
1
+ #this module supplies useful trace output for the logger
2
+ module RoflTrace
3
+ #enable vm wide tracing
4
+ def rofl_enable_trace event_regex = /^(call)/
5
+ #this is the Kernel::set_trace_func that we overwrite
6
+ trace_func = Proc.new do |event, file, line, id, binding, classname|
7
+ if event =~ event_regex
8
+ e = {:event=>event,:file=>file,:line=>line,:id=>id,:binding=>binding,:classname=>classname}
9
+ rofl_trace_event_callback e
10
+ end
11
+ end
12
+ set_trace_func trace_func
13
+ return
14
+ end
15
+
16
+ #disable vm wide tracing
17
+ def rofl_disable_trace
18
+ set_trace_func nil
19
+ end
20
+
21
+ #fires when there is a new trace event
22
+ def rofl_trace_event_callback trace_event
23
+ puts "new trace:"
24
+ trace_event.each { |n,t| puts "#{n}: #{t.inspect}"}
25
+ end
26
+ end
data/lib/test_rofl.rb ADDED
@@ -0,0 +1,24 @@
1
+ require 'rofl'
2
+ include Rofl
3
+
4
+ class Test
5
+ def initialize
6
+ dlog "initialize"
7
+ end
8
+ def call_hello_world
9
+ other_method
10
+ hello_world
11
+ other_method
12
+ end
13
+ def hello_world
14
+ other_method
15
+ dlog "hello world!"
16
+ other_method
17
+ end
18
+ def other_method
19
+ puts "puts git other method called"
20
+ end
21
+ end
22
+
23
+ test = Test.new
24
+ test.call_hello_world
metadata ADDED
@@ -0,0 +1,57 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pangdudu-rofl
3
+ version: !ruby/object:Gem::Version
4
+ version: "0.1"
5
+ platform: ruby
6
+ authors:
7
+ - pangdudu
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-07-17 00:00:00 -07:00
13
+ default_executable: rofl
14
+ dependencies: []
15
+
16
+ description: My logger wrapper, includes funkiness.
17
+ email: pangdudu@github
18
+ executables:
19
+ - rofl
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README.rdoc
24
+ files:
25
+ - README.rdoc
26
+ - bin/rofl
27
+ - lib/rofl.rb
28
+ - lib/rofl_trace.rb
29
+ - lib/test_rofl.rb
30
+ has_rdoc: true
31
+ homepage: http://github.com/pangdudu/rofl
32
+ post_install_message:
33
+ rdoc_options: []
34
+
35
+ require_paths:
36
+ - lib
37
+ required_ruby_version: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: "0"
42
+ version:
43
+ required_rubygems_version: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: "0"
48
+ version:
49
+ requirements: []
50
+
51
+ rubyforge_project: rofl
52
+ rubygems_version: 1.2.0
53
+ signing_key:
54
+ specification_version: 2
55
+ summary: rofl! peace.
56
+ test_files: []
57
+