opal 0.3.2 → 0.3.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (203) hide show
  1. data/README.md +85 -127
  2. data/bin/opal +3 -3
  3. data/lib/core.rb +114 -0
  4. data/{gems/core/lib → lib}/core/array.rb +68 -187
  5. data/{gems/core/lib → lib}/core/basic_object.rb +22 -5
  6. data/lib/core/class.rb +38 -0
  7. data/{gems/core/lib → lib}/core/dir.rb +1 -1
  8. data/lib/core/enumerable.rb +33 -0
  9. data/{gems/core/lib → lib}/core/error.rb +1 -4
  10. data/{gems/core/lib → lib}/core/false_class.rb +0 -0
  11. data/{gems/core/lib → lib}/core/file.rb +11 -3
  12. data/{gems/core/lib → lib}/core/hash.rb +12 -0
  13. data/{gems/core/lib → lib}/core/kernel.rb +114 -86
  14. data/lib/core/match_data.rb +33 -0
  15. data/lib/core/module.rb +97 -0
  16. data/{gems/core/lib → lib}/core/nil_class.rb +0 -0
  17. data/{gems/core/lib → lib}/core/numeric.rb +5 -0
  18. data/{gems/core/lib → lib}/core/object.rb +0 -0
  19. data/{gems/core/lib → lib}/core/proc.rb +13 -3
  20. data/{gems/core/lib → lib}/core/range.rb +10 -0
  21. data/{gems/core/lib → lib}/core/regexp.rb +33 -1
  22. data/{gems/core/lib → lib}/core/string.rb +25 -10
  23. data/{gems/core/lib → lib}/core/symbol.rb +3 -3
  24. data/{gems/core/lib → lib}/core/top_self.rb +0 -0
  25. data/{gems/core/lib → lib}/core/true_class.rb +0 -0
  26. data/lib/dev.rb +169 -0
  27. data/{gems/ospec/lib → lib}/ospec.rb +1 -0
  28. data/lib/ospec/autorun.rb +8 -0
  29. data/{gems/ospec/lib → lib}/ospec/dsl.rb +2 -2
  30. data/{gems/ospec/lib → lib}/ospec/example.rb +0 -0
  31. data/{gems/ospec/lib → lib}/ospec/example/before_and_after_hooks.rb +0 -0
  32. data/{gems/ospec/lib → lib}/ospec/example/errors.rb +0 -0
  33. data/{gems/ospec/lib → lib}/ospec/example/example_group.rb +0 -0
  34. data/{gems/ospec/lib → lib}/ospec/example/example_group_factory.rb +0 -3
  35. data/{gems/ospec/lib → lib}/ospec/example/example_group_hierarchy.rb +4 -3
  36. data/{gems/ospec/lib → lib}/ospec/example/example_group_methods.rb +1 -1
  37. data/{gems/ospec/lib → lib}/ospec/example/example_group_proxy.rb +3 -2
  38. data/{gems/ospec/lib → lib}/ospec/example/example_methods.rb +1 -1
  39. data/{gems/ospec/lib → lib}/ospec/example/example_proxy.rb +7 -7
  40. data/{gems/ospec/lib → lib}/ospec/expectations.rb +0 -0
  41. data/{gems/ospec/lib → lib}/ospec/expectations/errors.rb +0 -0
  42. data/{gems/ospec/lib → lib}/ospec/expectations/fail_with.rb +4 -3
  43. data/{gems/ospec/lib → lib}/ospec/expectations/handler.rb +6 -0
  44. data/lib/ospec/helpers/scratch.rb +18 -0
  45. data/{gems/ospec/lib → lib}/ospec/matchers.rb +2 -2
  46. data/{gems/ospec/lib → lib}/ospec/matchers/be.rb +0 -0
  47. data/{gems/ospec/lib → lib}/ospec/matchers/generated_descriptions.rb +0 -0
  48. data/{gems/ospec/lib → lib}/ospec/matchers/operator_matcher.rb +2 -0
  49. data/lib/ospec/matchers/raise_error.rb +38 -0
  50. data/lib/ospec/runner.rb +90 -0
  51. data/{gems/ospec/lib → lib}/ospec/runner/example_group_runner.rb +10 -13
  52. data/lib/ospec/runner/formatter/html_formatter.rb +139 -0
  53. data/{gems/ospec/lib → lib}/ospec/runner/formatter/terminal_formatter.rb +0 -0
  54. data/{gems/ospec/lib → lib}/ospec/runner/options.rb +1 -3
  55. data/{gems/ospec/lib → lib}/ospec/runner/reporter.rb +0 -9
  56. data/lib/racc/parser.rb +165 -0
  57. data/lib/strscan.rb +52 -0
  58. data/{lib → opal_lib}/opal.rb +2 -0
  59. data/opal_lib/opal/build_methods.rb +51 -0
  60. data/opal_lib/opal/builder.rb +164 -0
  61. data/opal_lib/opal/bundle.rb +70 -0
  62. data/opal_lib/opal/command.rb +68 -0
  63. data/{lib → opal_lib}/opal/context.rb +21 -9
  64. data/{lib → opal_lib}/opal/context/console.rb +0 -2
  65. data/opal_lib/opal/context/file_system.rb +34 -0
  66. data/{lib → opal_lib}/opal/context/loader.rb +26 -8
  67. data/opal_lib/opal/gem.rb +84 -0
  68. data/{lib → opal_lib}/opal/rake/builder_task.rb +2 -2
  69. data/opal_lib/opal/rake/spec_task.rb +32 -0
  70. data/{lib → opal_lib}/opal/ruby/nodes.rb +730 -109
  71. data/{lib → opal_lib}/opal/ruby/parser.rb +90 -23
  72. data/opal_lib/opal/ruby/ruby_parser.rb +4862 -0
  73. data/opal_lib/opal/ruby/ruby_parser.y +1454 -0
  74. data/opal_lib/opal/version.rb +4 -0
  75. data/runtime/class.js +359 -0
  76. data/runtime/debug.js +84 -0
  77. data/runtime/fs.js +199 -0
  78. data/runtime/init.js +558 -0
  79. data/runtime/loader.js +351 -0
  80. data/runtime/module.js +109 -0
  81. data/runtime/post.js +10 -0
  82. data/runtime/pre.js +7 -0
  83. data/runtime/runtime.js +351 -0
  84. metadata +88 -175
  85. data/.gitignore +0 -7
  86. data/Changelog +0 -31
  87. data/LICENSE +0 -75
  88. data/Rakefile +0 -86
  89. data/gems/core/README.md +0 -14
  90. data/gems/core/Rakefile +0 -8
  91. data/gems/core/core.gemspec +0 -13
  92. data/gems/core/lib/core.rb +0 -34
  93. data/gems/core/lib/core/class.rb +0 -31
  94. data/gems/core/lib/core/module.rb +0 -100
  95. data/gems/core/lib/core/vm.rb +0 -16
  96. data/gems/core/spec/core/array/append_spec.rb +0 -30
  97. data/gems/core/spec/core/array/assoc_spec.rb +0 -29
  98. data/gems/core/spec/core/array/at_spec.rb +0 -37
  99. data/gems/core/spec/core/array/clear_spec.rb +0 -22
  100. data/gems/core/spec/core/array/collect_bang_spec.rb +0 -27
  101. data/gems/core/spec/core/array/collect_spec.rb +0 -27
  102. data/gems/core/spec/core/array/compact_spec.rb +0 -41
  103. data/gems/core/spec/core/array/concat_spec.rb +0 -15
  104. data/gems/core/spec/core/array/constructor_spec.rb +0 -14
  105. data/gems/core/spec/core/array/each_spec.rb +0 -9
  106. data/gems/core/spec/core/array/element_reference_spec.rb +0 -4
  107. data/gems/core/spec/core/array/first_spec.rb +0 -35
  108. data/gems/core/spec/core/array/include_spec.rb +0 -9
  109. data/gems/core/spec/core/array/join_spec.rb +0 -6
  110. data/gems/core/spec/core/array/last_spec.rb +0 -51
  111. data/gems/core/spec/core/array/length_spec.rb +0 -6
  112. data/gems/core/spec/core/array/map_spec.rb +0 -33
  113. data/gems/core/spec/core/array/reverse_spec.rb +0 -6
  114. data/gems/core/spec/core/builtin_constants/builtin_constants_spec.rb +0 -7
  115. data/gems/core/spec/core/false/and_spec.rb +0 -10
  116. data/gems/core/spec/core/false/inspect_spec.rb +0 -6
  117. data/gems/core/spec/core/false/or_spec.rb +0 -10
  118. data/gems/core/spec/core/false/to_s_spec.rb +0 -6
  119. data/gems/core/spec/core/false/xor_spec.rb +0 -10
  120. data/gems/core/spec/core/file/join_spec.rb +0 -19
  121. data/gems/core/spec/core/hash/assoc_spec.rb +0 -32
  122. data/gems/core/spec/core/kernel/instance_eval_spec.rb +0 -0
  123. data/gems/core/spec/core/kernel/loop_spec.rb +0 -24
  124. data/gems/core/spec/core/kernel/raise_spec.rb +0 -0
  125. data/gems/core/spec/core/module/attr_accessor_spec.rb +0 -28
  126. data/gems/core/spec/core/number/lt_spec.rb +0 -12
  127. data/gems/core/spec/core/string/sub_spec.rb +0 -24
  128. data/gems/core/spec/core/true/and_spec.rb +0 -10
  129. data/gems/core/spec/core/true/inspect_spec.rb +0 -6
  130. data/gems/core/spec/core/true/or_spec.rb +0 -10
  131. data/gems/core/spec/core/true/to_s_spec.rb +0 -6
  132. data/gems/core/spec/core/true/xor_spec.rb +0 -10
  133. data/gems/core/spec/language/and_spec.rb +0 -61
  134. data/gems/core/spec/language/array_spec.rb +0 -68
  135. data/gems/core/spec/language/block_spec.rb +0 -38
  136. data/gems/core/spec/language/break_spec.rb +0 -36
  137. data/gems/core/spec/language/case_spec.rb +0 -103
  138. data/gems/core/spec/language/def_spec.rb +0 -21
  139. data/gems/core/spec/language/eigenclass_spec.rb +0 -60
  140. data/gems/core/spec/language/file_spec.rb +0 -13
  141. data/gems/core/spec/language/fixtures/block.rb +0 -21
  142. data/gems/core/spec/language/fixtures/super.rb +0 -293
  143. data/gems/core/spec/language/hash_spec.rb +0 -29
  144. data/gems/core/spec/language/if_spec.rb +0 -54
  145. data/gems/core/spec/language/loop_spec.rb +0 -11
  146. data/gems/core/spec/language/metaclass_spec.rb +0 -21
  147. data/gems/core/spec/language/method_spec.rb +0 -124
  148. data/gems/core/spec/language/next_spec.rb +0 -25
  149. data/gems/core/spec/language/or_spec.rb +0 -34
  150. data/gems/core/spec/language/redo_spec.rb +0 -24
  151. data/gems/core/spec/language/regexp_spec.rb +0 -26
  152. data/gems/core/spec/language/rescue_spec.rb +0 -20
  153. data/gems/core/spec/language/return_spec.rb +0 -47
  154. data/gems/core/spec/language/string_spec.rb +0 -25
  155. data/gems/core/spec/language/super_spec.rb +0 -32
  156. data/gems/core/spec/language/until_spec.rb +0 -157
  157. data/gems/core/spec/language/variables_spec.rb +0 -155
  158. data/gems/core/spec/language/while_spec.rb +0 -163
  159. data/gems/core/spec/spec_helper.rb +0 -5
  160. data/gems/core_fs/README.md +0 -19
  161. data/gems/dev/Rakefile +0 -5
  162. data/gems/dev/lib/dev.js +0 -99
  163. data/gems/dev/lib/dev/generator.js +0 -1264
  164. data/gems/dev/lib/dev/parser.js +0 -979
  165. data/gems/dev/lib/dev/ruby_parser.js +0 -1088
  166. data/gems/dev/lib/dev/ruby_parser.y +0 -1267
  167. data/gems/dev/lib/dev/string_scanner.js +0 -38
  168. data/gems/dev/tools/racc2js/README.md +0 -39
  169. data/gems/dev/tools/racc2js/math_parser.js +0 -222
  170. data/gems/dev/tools/racc2js/math_parser.rb +0 -133
  171. data/gems/dev/tools/racc2js/math_parser.y +0 -28
  172. data/gems/dev/tools/racc2js/parser.js +0 -218
  173. data/gems/dev/tools/racc2js/racc2js.rb +0 -153
  174. data/gems/json/README.md +0 -4
  175. data/gems/json/json.gemspec +0 -14
  176. data/gems/json/lib/json.rb +0 -64
  177. data/gems/json/lib/json/ext.rb +0 -51
  178. data/gems/json/lib/json/json2.js +0 -481
  179. data/gems/ospec/README.md +0 -0
  180. data/gems/ospec/lib/ospec/autorun.rb +0 -3
  181. data/gems/ospec/lib/ospec/runner.rb +0 -40
  182. data/gems/ospec/lib/ospec/runner/formatter/html_formatter.rb +0 -91
  183. data/gems/ospec/ospec.gemspec +0 -0
  184. data/gems/rquery/README.md +0 -9
  185. data/gems/rquery/lib/rquery.rb +0 -10
  186. data/gems/rquery/lib/rquery/ajax.rb +0 -4
  187. data/gems/rquery/lib/rquery/css.rb +0 -96
  188. data/gems/rquery/lib/rquery/document.rb +0 -25
  189. data/gems/rquery/lib/rquery/element.rb +0 -292
  190. data/gems/rquery/lib/rquery/event.rb +0 -108
  191. data/gems/rquery/lib/rquery/jquery.js +0 -8177
  192. data/gems/rquery/lib/rquery/request.rb +0 -138
  193. data/gems/rquery/lib/rquery/response.rb +0 -49
  194. data/gems/rquery/rquery.gemspec +0 -16
  195. data/lib/opal.js +0 -1597
  196. data/lib/opal/builder.rb +0 -117
  197. data/lib/opal/bundle.rb +0 -131
  198. data/lib/opal/command.rb +0 -11
  199. data/lib/opal/context/file_system.rb +0 -19
  200. data/lib/opal/gem.rb +0 -153
  201. data/lib/opal/ruby/ruby_parser.rb +0 -5170
  202. data/lib/opal/ruby/ruby_parser.y +0 -1298
  203. data/opal.gemspec +0 -15
@@ -3,4 +3,5 @@ require 'ospec/expectations'
3
3
  require 'ospec/example'
4
4
  require 'ospec/runner'
5
5
  require 'ospec/dsl'
6
+ require 'ospec/helpers/scratch'
6
7
 
@@ -0,0 +1,8 @@
1
+ require 'ospec'
2
+
3
+ if RUBY_ENGINE == 'opal-browser'
4
+ Spec::Runner.autorun_browser
5
+ else
6
+ Spec::Runner.autorun
7
+ end
8
+
@@ -1,10 +1,10 @@
1
1
  module Spec
2
+
2
3
  module DSL
4
+
3
5
  module Main
4
6
 
5
7
  def describe(name, &block)
6
- puts "describing:"
7
- puts block.inspect
8
8
  Spec::Example::ExampleGroupFactory.create_example_group name, &block
9
9
  end
10
10
  end # Main
File without changes
File without changes
@@ -10,9 +10,6 @@ module Spec
10
10
  end
11
11
 
12
12
  def self.create_example_group(group_name, &block)
13
- puts "creating example group"
14
- puts block
15
- puts self
16
13
  ExampleGroup.describe group_name, &block
17
14
  end
18
15
  end
@@ -6,13 +6,14 @@ module Spec
6
6
  class ExampleGroupHierarchy
7
7
 
8
8
  def initialize(example_group_class)
9
- @example_group_class
9
+ @example_group_class = example_group_class
10
10
  end
11
11
 
12
12
  def run_before_each(example)
13
- # @example_group_class.before_each_parts.each do |part|
13
+ @example_group_class.before_each_parts.each do |part|
14
14
  # puts "in each part before"
15
- # end
15
+ example.instance_eval &part
16
+ end
16
17
  end
17
18
 
18
19
  end
@@ -55,7 +55,7 @@ module Spec
55
55
 
56
56
  def run_examples(success, instance_variables, examples, run_options)
57
57
  examples.each do |example|
58
- example_group_instance = new example,
58
+ example_group_instance = new example,
59
59
  &example_implementations[example]
60
60
 
61
61
  example_group_instance.execute run_options, instance_variables
@@ -2,9 +2,9 @@
2
2
  module Spec
3
3
  module Example
4
4
  class ExampleGroupProxy
5
-
5
+
6
6
  attr_reader :description, :examples
7
-
7
+
8
8
  def initialize(example_group)
9
9
  @description = example_group.description
10
10
  @examples = example_group.example_proxies
@@ -12,3 +12,4 @@ module Spec
12
12
  end
13
13
  end
14
14
  end
15
+
@@ -4,7 +4,7 @@ module Spec
4
4
 
5
5
  module ExampleMethods
6
6
 
7
- # include Spec::Matchers
7
+ include Spec::Matchers
8
8
 
9
9
  def initialize(example_proxy, &implementation)
10
10
  @example_proxy = example_proxy
@@ -1,18 +1,18 @@
1
1
  module Spec
2
- module Example
2
+ module Example
3
3
  class ExampleProxy
4
-
4
+
5
5
  attr_reader :description
6
-
7
- def initialize(description, options, location)
6
+
7
+ def initialize(description, options = nil, location = nil)
8
8
  @description = description
9
9
  end
10
-
10
+
11
11
  def update(description)
12
12
  @description = description
13
13
  self
14
14
  end
15
-
16
- end
15
+ end # ExampleProxy
17
16
  end
18
17
  end
18
+
File without changes
@@ -1,8 +1,9 @@
1
- module Spec
1
+ module Spec
2
2
  module Expectations
3
-
4
- def self.fail_with(message, expected, target)
3
+
4
+ def self.fail_with(message, expected = nil, target = nil)
5
5
  raise Spec::Expectations::ExpectationNotMetError.new(message)
6
6
  end
7
7
  end
8
8
  end
9
+
@@ -8,6 +8,12 @@ module Spec
8
8
  Spec::Matchers.last_matcher = matcher
9
9
  if matcher.nil?
10
10
  return Spec::Matchers::PositiveOperatorMatcher.new actual
11
+ else
12
+ match = matcher.matches?(actual, &block)
13
+ return match if match
14
+
15
+ Spec::Expectations.fail_with matcher.failure_message_for_should
16
+ nil
11
17
  end
12
18
  end
13
19
  end
@@ -0,0 +1,18 @@
1
+ module ScratchPad
2
+ def self.clear
3
+ @record = nil
4
+ end
5
+
6
+ def self.record(arg)
7
+ @record = arg
8
+ end
9
+
10
+ def self.<<(arg)
11
+ @record << arg
12
+ end
13
+
14
+ def self.recorded
15
+ @record
16
+ end
17
+ end
18
+
@@ -1,14 +1,14 @@
1
1
  require 'ospec/matchers/operator_matcher'
2
2
  require 'ospec/matchers/be'
3
3
  require 'ospec/matchers/generated_descriptions'
4
+ require 'ospec/matchers/raise_error'
4
5
 
5
6
  module Spec
6
7
 
7
8
  module Matchers
8
9
 
9
10
  class Matcher
10
- # include Spec::Matchers
11
- # extend Spec::Matchers
11
+ include Spec::Matchers
12
12
 
13
13
  # attr_reader :expected, :actual
14
14
 
File without changes
@@ -50,3 +50,5 @@ module Spec
50
50
 
51
51
  end
52
52
  end
53
+
54
+
@@ -0,0 +1,38 @@
1
+ module Spec
2
+
3
+ module Matchers
4
+
5
+ class RaiseError
6
+
7
+ def initialize(expected_error_or_message = Exception, expected_message = nil, &block)
8
+ @block = block
9
+ @actual_error = nil
10
+ @expected_exception = Exception
11
+ end
12
+
13
+ def matches?(given_proc)
14
+ @raised_expected_exception = false
15
+ @with_expected_message = false
16
+
17
+ begin
18
+ given_proc.call
19
+ rescue => e
20
+ @raised_expected_exception = true
21
+ end
22
+
23
+ @raised_expected_exception
24
+ end
25
+
26
+ def failure_message_for_should
27
+ "expected #{@expected_exception}, but nothing was raised"
28
+ end
29
+ end # RaiseError
30
+
31
+ def raise_error(error = Exception, message = nil, &block)
32
+ Spec::Matchers::RaiseError.new error, message, &block
33
+ end
34
+
35
+ alias_method :raise_exception, :raise_error
36
+ end
37
+ end
38
+
@@ -0,0 +1,90 @@
1
+ require 'ospec/runner/options'
2
+ require 'ospec/runner/reporter'
3
+ require 'ospec/runner/example_group_runner'
4
+
5
+ require 'ospec/runner/formatter/html_formatter'
6
+ require 'ospec/runner/formatter/terminal_formatter'
7
+
8
+ module Spec
9
+ module Runner
10
+
11
+ def self.run
12
+ options.run_examples
13
+ end
14
+
15
+ def self.options
16
+ @options ||= Options.new
17
+ @options
18
+ end
19
+
20
+ # Autorun for the browser. This differs from {.autorun} because it wraps
21
+ # itself in a setTimeout call to make sure the browser is ready as we
22
+ # start adding to the DOM as we run. This won't use rquery because its
23
+ # nice to keep everything independant, and someone might write a better
24
+ # DOM library. All the dom interactions are simply inline javascript.
25
+ def self.autorun_browser
26
+ `setTimeout(function() {`
27
+ specs = Dir["spec/**/*.{rb,js}"]
28
+
29
+ if specs.length == 0
30
+ puts "ospec: no input files given"
31
+ else
32
+ if File.exist? "spec/spec_helper.js"
33
+ require File.expand_path("spec/spec_helper.js")
34
+ end
35
+
36
+ specs.each do |spec|
37
+ require spec
38
+ end
39
+ # require specs[0]
40
+ # idx = 49
41
+ # puts idx
42
+ # `console.log(specs[idx]);`
43
+ # puts specs[idx]
44
+ # puts specs[idx]
45
+ # require specs[idx]
46
+ end
47
+
48
+ Spec::Runner.run
49
+ puts Spec::Runner.options.formatters
50
+ `}, 0);`
51
+ nil
52
+ end
53
+
54
+ # Autorun gem/node context
55
+ def self.autorun
56
+ puts "in here"
57
+ puts ARGV.inspect
58
+ if ARGV.length == 0
59
+ specs = Dir["spec/**/*.{rb,js}"]
60
+
61
+ if specs.length == 0
62
+ puts "ospec: no input files given"
63
+ else
64
+
65
+ if File.exist? "spec/spec_helper.rb"
66
+ require File.expand_path "spec/spec_helper.rb"
67
+ end
68
+
69
+ specs.each do |spec|
70
+ require spec
71
+ end
72
+ end
73
+ # return
74
+ end
75
+
76
+ ARGV.each do |spec|
77
+ puts "should try and load #{spec}"
78
+ if File.exist? spec
79
+ puts "loading: " + File.expand_path(spec)
80
+ require File.expand_path(spec)
81
+ else
82
+ raise "Bad spec to load (does not exist): #{spec}"
83
+ end
84
+ end
85
+
86
+ Spec::Runner.run
87
+ end
88
+
89
+ end # Runner
90
+ end
@@ -1,44 +1,41 @@
1
- module Spec
1
+ module Spec
2
2
  module Runner
3
3
  class ExampleGroupRunner
4
-
4
+
5
5
  def initialize(options)
6
6
  @options = options
7
7
  end
8
-
8
+
9
9
  def run
10
10
  prepare
11
- # puts "RUNNING"
12
- #`console.log(#{example_groups})`
13
11
  example_groups.each do |group|
14
- # puts "running group!"
15
- #puts group
16
12
  group.run @options
17
13
  end
18
14
  finish
19
15
  end
20
-
16
+
21
17
  def example_groups
22
18
  @options.example_groups
23
19
  end
24
-
20
+
25
21
  def prepare
26
22
  rep = reporter
27
23
  rep.start number_of_examples
28
24
  end
29
-
25
+
30
26
  def finish
31
27
 
32
28
  end
33
-
29
+
34
30
  def reporter
35
31
  @options.reporter
36
32
  end
37
-
33
+
38
34
  def number_of_examples
39
35
  0
40
36
  end
41
-
37
+
42
38
  end # ExampleGroupRunner
43
39
  end
44
40
  end
41
+
@@ -0,0 +1,139 @@
1
+ module Spec
2
+ module Runner
3
+ module Formatter
4
+ class HtmlFormatter
5
+
6
+ attr_reader :example_group, :example_group_number
7
+
8
+ def initialize(options)
9
+ @options = options
10
+ @example_group_number = 0
11
+ @example_number = 0
12
+ @header_red = nil
13
+
14
+ setup_page_dom
15
+ end
16
+
17
+ ##
18
+ # Get the DOM ready for output
19
+ #
20
+ def setup_page_dom
21
+ content = [
22
+ "<style>#{css_content}</style>",
23
+ '<div class="rspec-report">',
24
+ '<div id="rspec-header">',
25
+ '<div id="label">',
26
+ '<h1>Rspec Code Examples</h1>',
27
+ '</div>',
28
+
29
+ '<div id="summary">',
30
+ '<p id="totals">0</p>',
31
+ '<p id="duration">0</p>',
32
+ '</div>',
33
+ '</div>',
34
+ '<div id="results">',
35
+ '</div>',
36
+ '</div>'
37
+ ].join ''
38
+ `var wrapper = document.createElement('div');
39
+ wrapper.id = "rspec-wrapper";
40
+ wrapper.innerHTML = content;
41
+ document.getElementsByTagName('body')[0].appendChild(wrapper);`
42
+ `self.$results = document.getElementById('results');`
43
+ nil
44
+ end
45
+
46
+ def css_content
47
+ 'body{ margin:0px; padding:0px; background:white; font-size:80%}#rspec-header{ background:#65C400;color:#fff;height:4em}.rspec-report h1{ margin:0px 10px 0px 10px; padding:10px; font-family:"Lucida Grande",Helvetica,sans-serif; font-size:1.8em; position:absolute}#summary{ margin:0;padding:5px 10px; font-family:"Lucida Grande",Helvetica,sans-serif; text-align:right; top:0px; right:0px; float:right}#summary p{ margin:0 0 0 2px}#summary #totals{ font-size:1.2em}#results{}.example_group{ margin:0 10px 5px; background:#fff}dl{ margin:0;padding:0 0 5px; font:normal 11px "Lucida Grande",Helvetica,sans-serif}dt{ padding:3px; background:#65C400; color:#fff; font-weight:bold}dd{ margin:5px 0 5px 5px; padding:3px 3px 3px 18px}dd.spec.passed{ border-left:5px solid #65C400; border-bottom:1px solid #65C400; background:#DBFFB4;color:#3D7700}dd.spec.failed{ border-left:5px solid #C20000; border-bottom:1px solid #C20000; color:#C20000;background:#FFFBD3}dd.spec.not_implemented{ border-left:5px solid #FAF834; border-bottom:1px solid #FAF834; background:#FCFB98;color:#131313}dd.spec.pending_fixed{ border-left:5px solid #0000C2; border-bottom:1px solid #0000C2; color:#0000C2;background:#D3FBFF}.backtrace{ color:#000; font-size:12px}a{ color:#BE5C00}.ruby{ font-size:12px; font-family:monospace; color:white; background-color:black; padding:0.1em 0 0.2em 0}.ruby .keyword{color:#F60}.ruby .constant{color:#399}.ruby .attribute{color:white}.ruby .global{color:white}.ruby .module{color:white}.ruby .class{color:white}.ruby .string{color:#6F0}.ruby .ident{color:white}.ruby .method{color:#FC0}.ruby .number{color:white}.ruby .char{color:white}.ruby .comment{color:#93C}.ruby .symbol{color:white}.ruby .regex{color:#44B4CC}.ruby .punct{color:white}.ruby .escape{color:white}.ruby .interp{color:white}.ruby .expr{color:white}.ruby .offending{background-color:gray}.ruby .linenum{ width:75px; padding:0.1em 1em 0.2em 0; color:#000; background-color:#FFFBD3}'
48
+ end
49
+
50
+
51
+ def start(number_of_examples)
52
+
53
+ end
54
+
55
+ def end
56
+ @end_time = Time.now
57
+ end
58
+
59
+ def example_group_started(example_group)
60
+ @example_group = example_group
61
+ @example_group_red = false
62
+ @example_group_number += 1
63
+
64
+ # @example_group_div = results_output.div :class_name => "example_group"
65
+ # @example_group_dl = @example_group_div.dl
66
+ # @example_group_dt = @example_group_dl.dt :content => example_group.description, :id => "example_group_#{example_group_number}"
67
+
68
+ `var div = self.$example_div = document.createElement('div');
69
+ div.className = 'example_group';
70
+
71
+ var dl = self.$example_dl = document.createElement('dl');
72
+ div.appendChild(dl);
73
+
74
+ var dt = self.$example_dt = document.createElement('dt');
75
+ dt.innerHTML = #{example_group.description};
76
+ dt.id = "element_group_" + #{@element_group_number.to_s};
77
+ dl.appendChild(dt);
78
+
79
+ self.$results.appendChild(div);`
80
+
81
+ end
82
+
83
+ def example_started(example)
84
+
85
+ end
86
+
87
+ def example_failed(example, counter, failure)
88
+ @header_red = true
89
+ @example_group_red = true
90
+
91
+ `var dd = document.createElement('dd');
92
+ dd.className = "spec failed";
93
+
94
+ var span = document.createElement('span');
95
+ span.innerHTML = #{example.description};
96
+ span.className = "failed_spec_name";
97
+ dd.appendChild(span);
98
+
99
+ self.$example_dl.appendChild(dd);
100
+
101
+ var failure_div = document.createElement('div');
102
+ failure_div.className = "failure";
103
+
104
+ var msg = document.createElement('div');
105
+ msg.className = "message";
106
+
107
+ var pre = document.createElement('pre');
108
+ pre.innerHTML = #{failure.exception.message};
109
+ msg.appendChild(pre);
110
+
111
+ failure_div.appendChild(msg);
112
+ dd.appendChild(failure_div);`
113
+
114
+ nil
115
+ end
116
+
117
+ def example_passed(example)
118
+ `var dl = self.$example_dl;
119
+
120
+ var dd = document.createElement('dd');
121
+ dd.className = "spec passed";
122
+
123
+ var span = document.createElement('span');
124
+ dd.appendChild(span);
125
+ span.innerHTML = #{example.description.to_s};
126
+ span.className = "passed_spec_name";
127
+
128
+ dl.appendChild(dd);`
129
+ nil
130
+ end
131
+
132
+ def example_pending(example, message)
133
+ # @example_group_dl.dd(:class_name => "spec not_implemented").span(:content => "#{example.description} (PENDING: #{message})", :class_name => "not_implemented_spec_name")
134
+ end
135
+ end
136
+ end
137
+ end
138
+ end
139
+