seaweed 0.1.0

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.
@@ -0,0 +1,9 @@
1
+ .failed {
2
+ color: #900;
3
+ }
4
+ .passed {
5
+ color: #090;
6
+ }
7
+ .pending {
8
+ color: #990;
9
+ }
data/server/server.rb ADDED
@@ -0,0 +1,65 @@
1
+ require 'rubygems'
2
+ require 'sinatra'
3
+ require 'slim'
4
+ require 'coffee-script'
5
+
6
+ module Sinatra
7
+ module Templates
8
+ def slim(template, options={}, locals={})
9
+ render :slim, template, options, locals
10
+ end
11
+ end
12
+ end
13
+
14
+ Slim::Engine.set_default_options :pretty => true
15
+
16
+ def compile source, target
17
+ begin
18
+ mtime = File.mtime source
19
+
20
+ return File.read target if File.exists?(target) && File.mtime(target) == mtime
21
+
22
+ dir = target.sub /\/[^\/]+$/, ''
23
+ Dir.mkdir dir unless File.exists? dir
24
+ File.open target, 'w' do |f|
25
+ f.write CoffeeScript.compile(File.read source)
26
+ end
27
+ File.utime mtime, mtime, target
28
+
29
+ File.read target
30
+ rescue CoffeeScript::CompilationError => e
31
+ message = if e.message.match /^SyntaxError: (.*) on line (\d+)\D*$/
32
+ "#{source}:#{$2}".ljust(40) + " #{$1}"
33
+ elsif e.message.match /^Parse error on line (\d+): (.*)$/
34
+ "#{source}:#{$1}".ljust(40) + " #{$2}"
35
+ else
36
+ "#{source} - #{e.message}"
37
+ end
38
+ puts "\e[31m#{message}\e[0m"
39
+ html = "<pre class=\"failed\">#{message}</pre>"
40
+ "$(function(){$(document.body).prepend(#{html.to_json});});"
41
+ end
42
+ end
43
+
44
+ get "/Spec.js" do
45
+ compile File.expand_path('../../lib/Spec.coffee', __FILE__), "compiled/spec.js"
46
+ end
47
+
48
+ get %r{^/lib/(.+)\.js$} do |file|
49
+ compile "lib/#{file}.coffee", "compiled/#{file}.js"
50
+ end
51
+
52
+ get %r{^/spec/(.+)\.js$} do |file|
53
+ compile "spec/#{file}.coffee", "compiled/#{file}.js"
54
+ end
55
+
56
+ get "/" do
57
+ requirements = RequiredFiles.new
58
+ requirements.paths = ['spec', 'lib']
59
+ Dir['spec/**/*.spec.coffee'].each do |file|
60
+ requirements.add $1 if file.match /^spec\/(.*).coffee$/
61
+ end
62
+ @scripts = requirements.sorted_files
63
+
64
+ slim :index
65
+ end
@@ -0,0 +1,11 @@
1
+ doctype html
2
+ head
3
+ script src="jquery-1.5.js"
4
+ link rel="stylesheet" href="spec.css" type="text/css"
5
+ script src="Spec.js"
6
+ - @scripts.each do |file_name|
7
+ script src="#{{file_name.sub /\.coffee$/, '.js'}}"
8
+
9
+ body
10
+ coffee:
11
+ $ -> Spec.finalize()
metadata ADDED
@@ -0,0 +1,157 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: seaweed
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Tobias Cohen
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-03-17 00:00:00 +11:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: coffee-script
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: json
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :runtime
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: celerity
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ hash: 3
58
+ segments:
59
+ - 0
60
+ version: "0"
61
+ type: :runtime
62
+ version_requirements: *id003
63
+ - !ruby/object:Gem::Dependency
64
+ name: sinatra
65
+ prerelease: false
66
+ requirement: &id004 !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ hash: 3
72
+ segments:
73
+ - 0
74
+ version: "0"
75
+ type: :runtime
76
+ version_requirements: *id004
77
+ - !ruby/object:Gem::Dependency
78
+ name: slim
79
+ prerelease: false
80
+ requirement: &id005 !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ hash: 3
86
+ segments:
87
+ - 0
88
+ version: "0"
89
+ type: :runtime
90
+ version_requirements: *id005
91
+ - !ruby/object:Gem::Dependency
92
+ name: watchr
93
+ prerelease: false
94
+ requirement: &id006 !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ hash: 3
100
+ segments:
101
+ - 0
102
+ version: "0"
103
+ type: :runtime
104
+ version_requirements: *id006
105
+ description: Seaweed is Coffeescript behavioral testing framework, with a command line tool that can be used to run specs automatically.
106
+ email: me@tobiascohen.com
107
+ executables:
108
+ - seaweed
109
+ extensions: []
110
+
111
+ extra_rdoc_files: []
112
+
113
+ files:
114
+ - bin/seaweed
115
+ - server/public/jquery-1.5.js
116
+ - server/public/spec.css
117
+ - server/server.rb
118
+ - server/views/index.slim
119
+ - lib/required_files.rb
120
+ - lib/Spec.coffee
121
+ - lib/spec.rb
122
+ has_rdoc: true
123
+ homepage: https://github.com/tobico/seaweed
124
+ licenses:
125
+ - MIT
126
+ post_install_message:
127
+ rdoc_options: []
128
+
129
+ require_paths:
130
+ - lib
131
+ required_ruby_version: !ruby/object:Gem::Requirement
132
+ none: false
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ hash: 3
137
+ segments:
138
+ - 0
139
+ version: "0"
140
+ required_rubygems_version: !ruby/object:Gem::Requirement
141
+ none: false
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ hash: 3
146
+ segments:
147
+ - 0
148
+ version: "0"
149
+ requirements: []
150
+
151
+ rubyforge_project:
152
+ rubygems_version: 1.3.7
153
+ signing_key:
154
+ specification_version: 3
155
+ summary: Coffeescript testing framework
156
+ test_files: []
157
+