wunderbar 0.8.2 → 0.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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