qed 2.1.1 → 2.2.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.
- data/COPYING +622 -344
- data/DIARY.rdoc +117 -0
- data/HISTORY +36 -0
- data/PROFILE +16 -0
- data/README.rdoc +69 -36
- data/REQUIRE +9 -0
- data/ROADMAP +12 -0
- data/VERSION +5 -0
- data/demo/01_demos.rdoc +56 -0
- data/demo/02_advice.rdoc +158 -0
- data/demo/03_helpers.rdoc +42 -0
- data/demo/04_fixtures.rdoc +29 -0
- data/demo/05_quote.rdoc +24 -0
- data/demo/07_toplevel.rdoc +42 -0
- data/demo/08_cross_script.rdoc +27 -0
- data/demo/09_cross_script.rdoc +27 -0
- data/demo/10_constant_lookup.rdoc +16 -0
- data/demo/applique/constant.rb +2 -0
- data/demo/applique/env.rb +5 -0
- data/demo/applique/fileutils.rb +1 -0
- data/demo/applique/markup.rb +10 -0
- data/demo/applique/quote.rb +4 -0
- data/demo/applique/toplevel.rb +15 -0
- data/demo/fixtures/data.txt +1 -0
- data/demo/fixtures/table.yml +5 -0
- data/demo/helpers/advice.rb +40 -0
- data/demo/helpers/sample.rb +4 -0
- data/demo/helpers/toplevel.rb +6 -0
- data/eg/hello_world.rdoc +15 -0
- data/{demo/error.rdoc → eg/view_error.rdoc} +0 -0
- data/{demo → eg}/website.rdoc +0 -0
- data/lib/qed.rb +20 -1
- data/lib/qed/advice.rb +4 -30
- data/lib/qed/advice/events.rb +6 -3
- data/lib/qed/advice/patterns.rb +37 -19
- data/lib/qed/applique.rb +85 -0
- data/lib/qed/command.rb +3 -5
- data/lib/qed/evaluator.rb +52 -56
- data/lib/qed/package.yml +5 -0
- data/lib/qed/parser.rb +149 -0
- data/lib/qed/profile.yml +16 -0
- data/lib/qed/reporter/{base.rb → abstract.rb} +17 -19
- data/lib/qed/reporter/bullet.rb +14 -16
- data/lib/qed/reporter/dotprogress.rb +7 -6
- data/lib/qed/reporter/html.rb +21 -3
- data/lib/qed/reporter/verbatim.rb +28 -26
- data/lib/qed/scope.rb +98 -82
- data/lib/qed/script.rb +21 -69
- data/lib/qed/session.rb +44 -3
- data/script/qedoc +2 -0
- data/script/test +2 -0
- metadata +74 -28
- data/doc/qedoc/index.html +0 -515
- data/doc/qedoc/jquery.js +0 -19
- data/meta/authors +0 -1
- data/meta/created +0 -1
- data/meta/description +0 -2
- data/meta/homepage +0 -1
- data/meta/name +0 -1
- data/meta/released +0 -1
- data/meta/repository +0 -1
- data/meta/requires +0 -5
- data/meta/ruby +0 -2
- data/meta/suite +0 -1
- data/meta/summary +0 -1
- data/meta/title +0 -1
- data/meta/version +0 -1
data/lib/qed/script.rb
CHANGED
@@ -1,52 +1,48 @@
|
|
1
1
|
module QED
|
2
2
|
require 'yaml'
|
3
|
-
require 'tilt'
|
4
|
-
require 'nokogiri'
|
5
3
|
|
6
4
|
require 'facets/dir/ascend'
|
7
5
|
|
6
|
+
require 'qed/parser'
|
8
7
|
require 'qed/evaluator'
|
9
8
|
|
10
|
-
#Assertion = AE::Assertion
|
11
|
-
#Expectation = Assertor
|
12
|
-
|
13
9
|
# = Script
|
14
10
|
#
|
15
|
-
# When run current working directory is changed to that of
|
16
|
-
# the demonstration script's. So any relative file references
|
17
|
-
# within a demo must take that into account.
|
18
|
-
#
|
19
11
|
class Script
|
20
12
|
|
21
|
-
#
|
22
|
-
attr :
|
13
|
+
#
|
14
|
+
attr :applique
|
23
15
|
|
24
|
-
#
|
25
|
-
attr :
|
16
|
+
# Demonstrandum file.
|
17
|
+
attr :file
|
26
18
|
|
27
19
|
#
|
28
20
|
attr :scope
|
29
21
|
|
30
22
|
# New Script
|
31
|
-
def initialize(file, scope=nil)
|
23
|
+
def initialize(applique, file, scope=nil)
|
24
|
+
@applique = applique.dup # localize copy of applique
|
32
25
|
@file = file
|
33
|
-
@scope = scope || Scope.new
|
34
|
-
|
26
|
+
@scope = scope || Scope.new(applique)
|
27
|
+
@binding = @scope.__binding__
|
28
|
+
#@loadlist = []
|
29
|
+
#apply_environment
|
35
30
|
end
|
36
31
|
|
37
32
|
# One binding per script.
|
38
33
|
def binding
|
39
|
-
@binding
|
34
|
+
@binding #||= @scope.__binding__
|
40
35
|
end
|
41
36
|
|
42
37
|
#
|
43
38
|
def advice
|
44
|
-
|
39
|
+
#@scope.__advice__
|
40
|
+
@applique.__advice__
|
45
41
|
end
|
46
42
|
|
47
|
-
#
|
48
|
-
def
|
49
|
-
@
|
43
|
+
# Expanded dirname of +file+.
|
44
|
+
def directory
|
45
|
+
@directory ||= File.expand_path(File.dirname(file))
|
50
46
|
end
|
51
47
|
|
52
48
|
# File basename less extension.
|
@@ -54,36 +50,6 @@ module QED
|
|
54
50
|
@name ||= File.basename(file).chomp(File.extname(file))
|
55
51
|
end
|
56
52
|
|
57
|
-
# Nokogiri HTML document.
|
58
|
-
def document
|
59
|
-
@document ||= Nokogiri::HTML(to_html)
|
60
|
-
end
|
61
|
-
|
62
|
-
# Root node of the html document.
|
63
|
-
def root
|
64
|
-
document.root
|
65
|
-
end
|
66
|
-
|
67
|
-
# Open file and translate template into HTML text.
|
68
|
-
def to_html
|
69
|
-
#case file
|
70
|
-
#when /^http/
|
71
|
-
# ext = File.extname(file).sub('.','')
|
72
|
-
# Tilt[ext].new{ source }
|
73
|
-
#else
|
74
|
-
#end
|
75
|
-
if File.extname(file) == '.html'
|
76
|
-
File.read(file)
|
77
|
-
else
|
78
|
-
Tilt.new(file).render
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
# Open, convert to HTML and cache.
|
83
|
-
def html
|
84
|
-
@html ||= to_html
|
85
|
-
end
|
86
|
-
|
87
53
|
#
|
88
54
|
#def source
|
89
55
|
# @source ||= (
|
@@ -97,30 +63,16 @@ module QED
|
|
97
63
|
# )
|
98
64
|
#end
|
99
65
|
|
66
|
+
def parse
|
67
|
+
Parser.new(file).parse
|
68
|
+
end
|
69
|
+
|
100
70
|
#
|
101
71
|
def run(*observers)
|
102
72
|
evaluator = Evaluator.new(self, *observers)
|
103
73
|
evaluator.run
|
104
74
|
end
|
105
75
|
|
106
|
-
#
|
107
|
-
def environment
|
108
|
-
glob = File.join(dir, '{environment,common,shared}', '*')
|
109
|
-
Dir[glob]
|
110
|
-
end
|
111
|
-
|
112
|
-
#
|
113
|
-
def apply_environment
|
114
|
-
environment.each do |file|
|
115
|
-
case File.extname(file)
|
116
|
-
when '.rb'
|
117
|
-
eval(File.read(file), scope.__binding__, file)
|
118
|
-
else
|
119
|
-
Script.new(file, scope).run
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
76
|
end
|
125
77
|
|
126
78
|
end
|
data/lib/qed/session.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
module QED
|
2
2
|
|
3
3
|
#require 'qed/config'
|
4
|
+
require 'qed/applique'
|
4
5
|
require 'qed/script'
|
5
6
|
|
6
|
-
# =
|
7
|
+
# = Runtime Session
|
7
8
|
#
|
8
9
|
# The Session class encapsulates a set of demonstrations
|
9
10
|
# and the procedure for looping through them and running
|
@@ -32,6 +33,8 @@ module QED
|
|
32
33
|
options.each do |k,v|
|
33
34
|
__send__("#{k}=", v) if v
|
34
35
|
end
|
36
|
+
|
37
|
+
@applique = create_applique
|
35
38
|
end
|
36
39
|
|
37
40
|
# Top-level configuration.
|
@@ -61,7 +64,7 @@ module QED
|
|
61
64
|
|
62
65
|
#
|
63
66
|
def scripts
|
64
|
-
@scripts ||= demos.map{ |demo| Script.new(demo) }
|
67
|
+
@scripts ||= demos.map{ |demo| Script.new(@applique, demo) }
|
65
68
|
end
|
66
69
|
|
67
70
|
#
|
@@ -77,7 +80,9 @@ module QED
|
|
77
80
|
# script = Script.new(demo, report)
|
78
81
|
scripts.each do |script|
|
79
82
|
script.run(*observers)
|
80
|
-
|
83
|
+
#pid = fork { script.run(*observers) }
|
84
|
+
#Process.detach(pid)
|
85
|
+
end
|
81
86
|
reporter.after_session(self)
|
82
87
|
#profile.after_session(self)
|
83
88
|
end
|
@@ -89,6 +94,42 @@ module QED
|
|
89
94
|
# end
|
90
95
|
#end
|
91
96
|
|
97
|
+
# TODO: associate scripts to there applique
|
98
|
+
def create_applique
|
99
|
+
applique = Applique.new
|
100
|
+
#eval "include QED::DomainLanguage", TOPLEVEL_BINDING
|
101
|
+
applique_scripts.each do |file|
|
102
|
+
#next if @loadlist.include?(file)
|
103
|
+
#case File.extname(file)
|
104
|
+
#when '.rb'
|
105
|
+
# since scope is just TOPLEVEL now
|
106
|
+
#require(file)
|
107
|
+
applique.module_eval(File.read(file), file)
|
108
|
+
#eval(File.read(file), scope.__binding__, file) # TODO: for each script!? Nay.
|
109
|
+
#else
|
110
|
+
# Script.new(file, scope).run
|
111
|
+
#end
|
112
|
+
#@loadlist << file
|
113
|
+
end
|
114
|
+
applique
|
115
|
+
end
|
116
|
+
|
117
|
+
#
|
118
|
+
def applique_scripts
|
119
|
+
locs = []
|
120
|
+
demos.each do |demo|
|
121
|
+
Dir.ascend(File.dirname(demo)) do |path|
|
122
|
+
break if path == Dir.pwd
|
123
|
+
dir = File.join(path, 'applique')
|
124
|
+
if File.directory?(dir)
|
125
|
+
locs << dir
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
envs = locs.map{ |loc| Dir[File.join(loc,'**/*.rb')] }
|
130
|
+
envs.flatten.compact.uniq
|
131
|
+
end
|
132
|
+
|
92
133
|
end#class Session
|
93
134
|
|
94
135
|
end#module QED
|
data/script/qedoc
ADDED
data/script/test
ADDED
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 7
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 2
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 2.
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
version: 2.2.0
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Thomas Sawyer <transfire@gmail.com>
|
@@ -14,16 +15,18 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-
|
18
|
+
date: 2010-06-19 00:00:00 -04:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
22
|
name: ae
|
22
23
|
prerelease: false
|
23
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
24
26
|
requirements:
|
25
27
|
- - ">="
|
26
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
27
30
|
segments:
|
28
31
|
- 0
|
29
32
|
version: "0"
|
@@ -33,9 +36,11 @@ dependencies:
|
|
33
36
|
name: ansi
|
34
37
|
prerelease: false
|
35
38
|
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
36
40
|
requirements:
|
37
41
|
- - ">="
|
38
42
|
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
39
44
|
segments:
|
40
45
|
- 0
|
41
46
|
version: "0"
|
@@ -45,9 +50,11 @@ dependencies:
|
|
45
50
|
name: facets
|
46
51
|
prerelease: false
|
47
52
|
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
48
54
|
requirements:
|
49
55
|
- - ">="
|
50
56
|
- !ruby/object:Gem::Version
|
57
|
+
hash: 3
|
51
58
|
segments:
|
52
59
|
- 0
|
53
60
|
version: "0"
|
@@ -57,9 +64,11 @@ dependencies:
|
|
57
64
|
name: tilt
|
58
65
|
prerelease: false
|
59
66
|
requirement: &id004 !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
60
68
|
requirements:
|
61
69
|
- - ">="
|
62
70
|
- !ruby/object:Gem::Version
|
71
|
+
hash: 3
|
63
72
|
segments:
|
64
73
|
- 0
|
65
74
|
version: "0"
|
@@ -69,39 +78,76 @@ dependencies:
|
|
69
78
|
name: nokogiri
|
70
79
|
prerelease: false
|
71
80
|
requirement: &id005 !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
72
82
|
requirements:
|
73
83
|
- - ">="
|
74
84
|
- !ruby/object:Gem::Version
|
85
|
+
hash: 3
|
75
86
|
segments:
|
76
87
|
- 0
|
77
88
|
version: "0"
|
78
89
|
type: :runtime
|
79
90
|
version_requirements: *id005
|
80
|
-
|
81
|
-
|
82
|
-
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: syckle
|
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: :development
|
104
|
+
version_requirements: *id006
|
105
|
+
description: QED (Quality Ensured Demonstrations) is a TDD/BDD framework utilizing Literate Programming techniques.
|
83
106
|
email:
|
84
107
|
executables:
|
85
108
|
- qedoc
|
86
109
|
- qed
|
87
110
|
extensions: []
|
88
111
|
|
89
|
-
extra_rdoc_files:
|
90
|
-
|
112
|
+
extra_rdoc_files:
|
113
|
+
- README.rdoc
|
91
114
|
files:
|
92
115
|
- bin/qed
|
93
116
|
- bin/qedoc
|
94
|
-
- demo/
|
95
|
-
- demo/
|
96
|
-
-
|
97
|
-
-
|
117
|
+
- demo/01_demos.rdoc
|
118
|
+
- demo/02_advice.rdoc
|
119
|
+
- demo/03_helpers.rdoc
|
120
|
+
- demo/04_fixtures.rdoc
|
121
|
+
- demo/05_quote.rdoc
|
122
|
+
- demo/07_toplevel.rdoc
|
123
|
+
- demo/08_cross_script.rdoc
|
124
|
+
- demo/09_cross_script.rdoc
|
125
|
+
- demo/10_constant_lookup.rdoc
|
126
|
+
- demo/applique/constant.rb
|
127
|
+
- demo/applique/env.rb
|
128
|
+
- demo/applique/fileutils.rb
|
129
|
+
- demo/applique/markup.rb
|
130
|
+
- demo/applique/quote.rb
|
131
|
+
- demo/applique/toplevel.rb
|
132
|
+
- demo/fixtures/data.txt
|
133
|
+
- demo/fixtures/table.yml
|
134
|
+
- demo/helpers/advice.rb
|
135
|
+
- demo/helpers/sample.rb
|
136
|
+
- demo/helpers/toplevel.rb
|
137
|
+
- eg/hello_world.rdoc
|
138
|
+
- eg/view_error.rdoc
|
139
|
+
- eg/website.rdoc
|
98
140
|
- lib/qed/advice/events.rb
|
99
141
|
- lib/qed/advice/patterns.rb
|
100
142
|
- lib/qed/advice.rb
|
143
|
+
- lib/qed/applique.rb
|
101
144
|
- lib/qed/command.rb
|
102
145
|
- lib/qed/config.rb
|
103
146
|
- lib/qed/evaluator.rb
|
104
|
-
- lib/qed/
|
147
|
+
- lib/qed/package.yml
|
148
|
+
- lib/qed/parser.rb
|
149
|
+
- lib/qed/profile.yml
|
150
|
+
- lib/qed/reporter/abstract.rb
|
105
151
|
- lib/qed/reporter/bullet.rb
|
106
152
|
- lib/qed/reporter/dotprogress.rb
|
107
153
|
- lib/qed/reporter/html.rb
|
@@ -115,21 +161,15 @@ files:
|
|
115
161
|
- lib/qedoc/document/markup.rb
|
116
162
|
- lib/qedoc/document/template.rhtml
|
117
163
|
- lib/qedoc/document.rb
|
118
|
-
-
|
119
|
-
-
|
120
|
-
-
|
121
|
-
- meta/homepage
|
122
|
-
- meta/name
|
123
|
-
- meta/released
|
124
|
-
- meta/repository
|
125
|
-
- meta/requires
|
126
|
-
- meta/ruby
|
127
|
-
- meta/suite
|
128
|
-
- meta/summary
|
129
|
-
- meta/title
|
130
|
-
- meta/version
|
164
|
+
- script/qedoc
|
165
|
+
- script/test
|
166
|
+
- PROFILE
|
131
167
|
- README.rdoc
|
132
168
|
- HISTORY
|
169
|
+
- REQUIRE
|
170
|
+
- ROADMAP
|
171
|
+
- DIARY.rdoc
|
172
|
+
- VERSION
|
133
173
|
- COPYING
|
134
174
|
has_rdoc: true
|
135
175
|
homepage: http://proutils.github.com/qed
|
@@ -139,26 +179,32 @@ post_install_message:
|
|
139
179
|
rdoc_options:
|
140
180
|
- --title
|
141
181
|
- QED API
|
182
|
+
- --main
|
183
|
+
- README.rdoc
|
142
184
|
require_paths:
|
143
185
|
- lib
|
144
186
|
required_ruby_version: !ruby/object:Gem::Requirement
|
187
|
+
none: false
|
145
188
|
requirements:
|
146
189
|
- - ">="
|
147
190
|
- !ruby/object:Gem::Version
|
191
|
+
hash: 3
|
148
192
|
segments:
|
149
193
|
- 0
|
150
194
|
version: "0"
|
151
195
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
196
|
+
none: false
|
152
197
|
requirements:
|
153
198
|
- - ">="
|
154
199
|
- !ruby/object:Gem::Version
|
200
|
+
hash: 3
|
155
201
|
segments:
|
156
202
|
- 0
|
157
203
|
version: "0"
|
158
204
|
requirements: []
|
159
205
|
|
160
206
|
rubyforge_project: qed
|
161
|
-
rubygems_version: 1.3.
|
207
|
+
rubygems_version: 1.3.7
|
162
208
|
signing_key:
|
163
209
|
specification_version: 3
|
164
210
|
summary: Quod Erat Demonstrandum
|