wunderbar 0.8.2 → 0.8.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -163,9 +163,11 @@ class HtmlMarkup
163
163
  block.call
164
164
  rescue ::Exception => exception
165
165
  text = exception.inspect
166
+ Wunderbar.warn text
166
167
  exception.backtrace.each do |frame|
167
168
  next if frame =~ %r{/wunderbar/}
168
169
  next if frame =~ %r{/gems/.*/builder/}
170
+ Wunderbar.warn " #{frame}"
169
171
  text += "\n #{frame}"
170
172
  end
171
173
 
@@ -202,6 +204,13 @@ class HtmlMarkup
202
204
  @x.declare!(*args)
203
205
  end
204
206
 
207
+ def _coffeescript(text)
208
+ require 'coffee-script'
209
+ _script CoffeeScript.compile(text)
210
+ rescue LoadError
211
+ _script text, :lang => 'text/coffeescript'
212
+ end
213
+
205
214
  def target!
206
215
  @x.target!
207
216
  end
@@ -0,0 +1,54 @@
1
+ require 'logger'
2
+
3
+ module Wunderbar
4
+ def self.logger
5
+ return @logger if @logger
6
+ @logger = Logger.new(STDOUT)
7
+ @logger.level = Logger::WARN
8
+ @logger.formatter = proc { |severity, datetime, progname, msg|
9
+ "_#{severity} #{msg}\n"
10
+ }
11
+ @logger
12
+ end
13
+
14
+ def self.log_level=(level)
15
+ return unless level
16
+
17
+ case level.to_s.downcase
18
+ when 'debug'; logger.level = Logger::DEBUG
19
+ when 'info'; logger.level = Logger::INFO
20
+ when 'warn'; logger.level = Logger::WARN
21
+ when 'error'; logger.level = Logger::ERROR
22
+ when 'fatal'; logger.level = Logger::FATAL
23
+ else
24
+ warn "Invalid log_level specified: #{level}"
25
+ end
26
+ end
27
+
28
+ # convenience methods
29
+ def self.debug(*args, &block)
30
+ logger.debug *args, &block
31
+ end
32
+
33
+ def self.info(*args, &block)
34
+ logger.info *args, &block
35
+ end
36
+
37
+ def self.warn(*args, &block)
38
+ logger.warn *args, &block
39
+ end
40
+
41
+ def self.error(*args, &block)
42
+ logger.error *args, &block
43
+ end
44
+
45
+ def self.fatal(*args, &block)
46
+ logger.fatal *args, &block
47
+ end
48
+ end
49
+
50
+ Wunderbar.log_level = :debug if ARGV.delete '--debug'
51
+ Wunderbar.log_level = :info if ARGV.delete '--info'
52
+ Wunderbar.log_level = :warn if ARGV.delete '--warn'
53
+ Wunderbar.log_level = :error if ARGV.delete '--error'
54
+ Wunderbar.log_level = :fatal if ARGV.delete '--fatal'
@@ -2,7 +2,7 @@ module Wunderbar
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 8
5
- TINY = 2
5
+ TINY = 3
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
data/lib/wunderbar.rb CHANGED
@@ -8,4 +8,5 @@ require 'wunderbar/html-methods'
8
8
  require 'wunderbar/job-control'
9
9
  require 'wunderbar/installation'
10
10
  require 'wunderbar/builder'
11
+ require 'wunderbar/logger'
11
12
 
@@ -5,6 +5,12 @@ require 'wunderbar'
5
5
  class HtmlMarkupTest < Test::Unit::TestCase
6
6
  def setup
7
7
  $x = nil # until this hack is removed html-methods.rb
8
+ @original_log_level = Wunderbar.logger.level
9
+ Wunderbar.log_level = :fatal
10
+ end
11
+
12
+ def teardown
13
+ Wunderbar.logger.level = @original_log_level
8
14
  end
9
15
 
10
16
  def test_html
@@ -117,4 +123,17 @@ class HtmlMarkupTest < Test::Unit::TestCase
117
123
  x.declare! :DOCTYPE, 'html'
118
124
  assert_equal %{<!DOCTYPE "html">\n}, x.target!
119
125
  end
126
+
127
+ begin
128
+ require 'coffee-script'
129
+
130
+ def test_coffeescript
131
+ x = HtmlMarkup.new
132
+ x.html {_coffeescript 'alert "foo"'}
133
+ assert_match %r[<script\slang="text/javascript">\s+\(function\(\)\s
134
+ \{\s+alert\("foo"\);\s+\}\).call\(this\);\s+</script>]x, x.target!
135
+ end
136
+ rescue LoadError
137
+ end
138
+
120
139
  end
@@ -0,0 +1,76 @@
1
+ require 'test/unit'
2
+ require 'rubygems'
3
+ require 'wunderbar'
4
+ require 'logger'
5
+
6
+ class TestLogger
7
+ attr_accessor :messages
8
+ def initialize
9
+ @messages = Hash.new {|hash, key| hash[key] = Array.new}
10
+ @original_logger = Wunderbar.logger
11
+ logger = self
12
+ Wunderbar.instance_eval {@logger = logger}
13
+ end
14
+
15
+ def method_missing(method, *args)
16
+ if [:debug, :info, :warn, :error, :fatal].include? method
17
+ @messages[method] << args.first
18
+ else
19
+ @original_logger.send(method, *args)
20
+ end
21
+ end
22
+
23
+ def teardown
24
+ logger = @original_logger
25
+ Wunderbar.instance_eval {@logger = logger}
26
+ end
27
+ end
28
+
29
+ class LoggerTest < Test::Unit::TestCase
30
+ def setup
31
+ @logger = TestLogger.new
32
+ end
33
+
34
+ def teardown
35
+ @logger.teardown
36
+ end
37
+
38
+ def test_debug
39
+ Wunderbar.debug 'Sneezy'
40
+ assert @logger.messages[:debug].include? 'Sneezy'
41
+ end
42
+
43
+ def test_info
44
+ Wunderbar.info 'Sleepy'
45
+ assert @logger.messages[:info].include? 'Sleepy'
46
+ end
47
+
48
+ def test_warn
49
+ Wunderbar.warn 'Dopey'
50
+ assert @logger.messages[:warn].include? 'Dopey'
51
+ end
52
+
53
+ def test_error
54
+ Wunderbar.error 'Doc'
55
+ assert @logger.messages[:error].include? 'Doc'
56
+ end
57
+
58
+ def test_fatal
59
+ Wunderbar.fatal 'Happy'
60
+ assert @logger.messages[:fatal].include? 'Happy'
61
+ end
62
+
63
+ def test_loglevel
64
+ assert Wunderbar.logger.level == Logger::WARN
65
+ Wunderbar.log_level = 'debug'
66
+ assert Wunderbar.logger.level == Logger::DEBUG
67
+ Wunderbar.log_level = 'info'
68
+ assert Wunderbar.logger.level == Logger::INFO
69
+ Wunderbar.log_level = 'warn'
70
+ assert Wunderbar.logger.level == Logger::WARN
71
+ Wunderbar.log_level = 'error'
72
+ assert Wunderbar.logger.level == Logger::ERROR
73
+ Wunderbar.log_level = 'fatal'
74
+ assert Wunderbar.logger.level == Logger::FATAL
75
+ end
76
+ end
data/wunderbar.gemspec CHANGED
@@ -2,22 +2,22 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "wunderbar"
5
- s.version = "0.8.2"
5
+ s.version = "0.8.3"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Sam Ruby"]
9
- s.date = "2012-02-04"
9
+ s.date = "2012-02-05"
10
10
  s.description = " Provides a number of globals, helper methods, and monkey patches which\n simplify the generation of HTML and the development of CGI scripts.\n"
11
11
  s.email = "rubys@intertwingly.net"
12
- s.extra_rdoc_files = ["COPYING", "README", "lib/wunderbar.rb", "lib/wunderbar/builder.rb", "lib/wunderbar/cgi-methods.rb", "lib/wunderbar/environment.rb", "lib/wunderbar/html-methods.rb", "lib/wunderbar/installation.rb", "lib/wunderbar/job-control.rb", "lib/wunderbar/version.rb"]
13
- s.files = ["COPYING", "README", "Rakefile", "lib/wunderbar.rb", "lib/wunderbar/builder.rb", "lib/wunderbar/cgi-methods.rb", "lib/wunderbar/environment.rb", "lib/wunderbar/html-methods.rb", "lib/wunderbar/installation.rb", "lib/wunderbar/job-control.rb", "lib/wunderbar/version.rb", "test/test_html_markup.rb", "Manifest", "wunderbar.gemspec", "test/test_builder.rb"]
12
+ s.extra_rdoc_files = ["COPYING", "README", "lib/wunderbar.rb", "lib/wunderbar/builder.rb", "lib/wunderbar/cgi-methods.rb", "lib/wunderbar/environment.rb", "lib/wunderbar/html-methods.rb", "lib/wunderbar/installation.rb", "lib/wunderbar/job-control.rb", "lib/wunderbar/logger.rb", "lib/wunderbar/version.rb"]
13
+ s.files = ["COPYING", "README", "Rakefile", "lib/wunderbar.rb", "lib/wunderbar/builder.rb", "lib/wunderbar/cgi-methods.rb", "lib/wunderbar/environment.rb", "lib/wunderbar/html-methods.rb", "lib/wunderbar/installation.rb", "lib/wunderbar/job-control.rb", "lib/wunderbar/logger.rb", "lib/wunderbar/version.rb", "test/test_builder.rb", "test/test_html_markup.rb", "test/test_logger.rb", "wunderbar.gemspec", "Manifest"]
14
14
  s.homepage = "http://github.com/rubys/wunderbar"
15
15
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Wunderbar", "--main", "README"]
16
16
  s.require_paths = ["lib"]
17
17
  s.rubyforge_project = "wunderbar"
18
18
  s.rubygems_version = "1.8.15"
19
19
  s.summary = "HTML Generator and CGI application support"
20
- s.test_files = ["test/test_html_markup.rb", "test/test_builder.rb"]
20
+ s.test_files = ["test/test_logger.rb", "test/test_html_markup.rb", "test/test_builder.rb"]
21
21
 
22
22
  if s.respond_to? :specification_version then
23
23
  s.specification_version = 3
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wunderbar
3
3
  version: !ruby/object:Gem::Version
4
- hash: 59
4
+ hash: 57
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 8
9
- - 2
10
- version: 0.8.2
9
+ - 3
10
+ version: 0.8.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sam Ruby
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-02-04 00:00:00 Z
18
+ date: 2012-02-05 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: builder
@@ -61,6 +61,7 @@ extra_rdoc_files:
61
61
  - lib/wunderbar/html-methods.rb
62
62
  - lib/wunderbar/installation.rb
63
63
  - lib/wunderbar/job-control.rb
64
+ - lib/wunderbar/logger.rb
64
65
  - lib/wunderbar/version.rb
65
66
  files:
66
67
  - COPYING
@@ -73,11 +74,13 @@ files:
73
74
  - lib/wunderbar/html-methods.rb
74
75
  - lib/wunderbar/installation.rb
75
76
  - lib/wunderbar/job-control.rb
77
+ - lib/wunderbar/logger.rb
76
78
  - lib/wunderbar/version.rb
79
+ - test/test_builder.rb
77
80
  - test/test_html_markup.rb
78
- - Manifest
81
+ - test/test_logger.rb
79
82
  - wunderbar.gemspec
80
- - test/test_builder.rb
83
+ - Manifest
81
84
  homepage: http://github.com/rubys/wunderbar
82
85
  licenses: []
83
86
 
@@ -118,5 +121,6 @@ signing_key:
118
121
  specification_version: 3
119
122
  summary: HTML Generator and CGI application support
120
123
  test_files:
124
+ - test/test_logger.rb
121
125
  - test/test_html_markup.rb
122
126
  - test/test_builder.rb