ryanbriones-ZenTest 3.11.1

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.
Files changed (70) hide show
  1. data/History.txt +523 -0
  2. data/Manifest.txt +69 -0
  3. data/README.txt +110 -0
  4. data/Rakefile +68 -0
  5. data/articles/Article.css +721 -0
  6. data/articles/getting_started_with_autotest.html +532 -0
  7. data/articles/how_to_use_zentest.txt +393 -0
  8. data/bin/autotest +55 -0
  9. data/bin/multiruby +40 -0
  10. data/bin/multiruby_setup +68 -0
  11. data/bin/rails_test_audit +80 -0
  12. data/bin/unit_diff +38 -0
  13. data/bin/zentest +28 -0
  14. data/example.txt +42 -0
  15. data/example1.rb +7 -0
  16. data/example2.rb +15 -0
  17. data/example_dot_autotest.rb +45 -0
  18. data/lib/autotest.rb +654 -0
  19. data/lib/autotest/autoupdate.rb +26 -0
  20. data/lib/autotest/camping.rb +37 -0
  21. data/lib/autotest/cctray.rb +57 -0
  22. data/lib/autotest/discover.rb +6 -0
  23. data/lib/autotest/emacs.rb +35 -0
  24. data/lib/autotest/email_notify.rb +66 -0
  25. data/lib/autotest/fixtures.rb +12 -0
  26. data/lib/autotest/growl.rb +28 -0
  27. data/lib/autotest/heckle.rb +14 -0
  28. data/lib/autotest/html_report.rb +31 -0
  29. data/lib/autotest/jabber_notify.rb +111 -0
  30. data/lib/autotest/kdenotify.rb +14 -0
  31. data/lib/autotest/menu.rb +51 -0
  32. data/lib/autotest/migrate.rb +7 -0
  33. data/lib/autotest/notify.rb +34 -0
  34. data/lib/autotest/once.rb +9 -0
  35. data/lib/autotest/pretty.rb +83 -0
  36. data/lib/autotest/rails.rb +81 -0
  37. data/lib/autotest/rcov.rb +22 -0
  38. data/lib/autotest/redgreen.rb +21 -0
  39. data/lib/autotest/restart.rb +11 -0
  40. data/lib/autotest/screen.rb +73 -0
  41. data/lib/autotest/shame.rb +45 -0
  42. data/lib/autotest/snarl.rb +51 -0
  43. data/lib/autotest/timestamp.rb +9 -0
  44. data/lib/functional_test_matrix.rb +92 -0
  45. data/lib/multiruby.rb +401 -0
  46. data/lib/test/rails.rb +295 -0
  47. data/lib/test/rails/controller_test_case.rb +382 -0
  48. data/lib/test/rails/functional_test_case.rb +79 -0
  49. data/lib/test/rails/helper_test_case.rb +64 -0
  50. data/lib/test/rails/ivar_proxy.rb +31 -0
  51. data/lib/test/rails/pp_html_document.rb +74 -0
  52. data/lib/test/rails/rake_tasks.rb +50 -0
  53. data/lib/test/rails/render_tree.rb +93 -0
  54. data/lib/test/rails/test_case.rb +28 -0
  55. data/lib/test/rails/view_test_case.rb +597 -0
  56. data/lib/test/zentest_assertions.rb +134 -0
  57. data/lib/unit_diff.rb +259 -0
  58. data/lib/zentest.rb +566 -0
  59. data/lib/zentest_mapping.rb +99 -0
  60. data/test/test_autotest.rb +449 -0
  61. data/test/test_help.rb +36 -0
  62. data/test/test_rails_autotest.rb +229 -0
  63. data/test/test_rails_controller_test_case.rb +58 -0
  64. data/test/test_rails_helper_test_case.rb +48 -0
  65. data/test/test_rails_view_test_case.rb +275 -0
  66. data/test/test_unit_diff.rb +319 -0
  67. data/test/test_zentest.rb +566 -0
  68. data/test/test_zentest_assertions.rb +128 -0
  69. data/test/test_zentest_mapping.rb +222 -0
  70. metadata +151 -0
data/Manifest.txt ADDED
@@ -0,0 +1,69 @@
1
+ History.txt
2
+ Manifest.txt
3
+ README.txt
4
+ Rakefile
5
+ articles/Article.css
6
+ articles/getting_started_with_autotest.html
7
+ articles/how_to_use_zentest.txt
8
+ bin/autotest
9
+ bin/multiruby
10
+ bin/multiruby_setup
11
+ bin/rails_test_audit
12
+ bin/unit_diff
13
+ bin/zentest
14
+ example.txt
15
+ example1.rb
16
+ example2.rb
17
+ example_dot_autotest.rb
18
+ lib/autotest.rb
19
+ lib/autotest/autoupdate.rb
20
+ lib/autotest/camping.rb
21
+ lib/autotest/cctray.rb
22
+ lib/autotest/discover.rb
23
+ lib/autotest/emacs.rb
24
+ lib/autotest/email_notify.rb
25
+ lib/autotest/fixtures.rb
26
+ lib/autotest/growl.rb
27
+ lib/autotest/heckle.rb
28
+ lib/autotest/html_report.rb
29
+ lib/autotest/jabber_notify.rb
30
+ lib/autotest/kdenotify.rb
31
+ lib/autotest/menu.rb
32
+ lib/autotest/migrate.rb
33
+ lib/autotest/notify.rb
34
+ lib/autotest/once.rb
35
+ lib/autotest/pretty.rb
36
+ lib/autotest/rails.rb
37
+ lib/autotest/rcov.rb
38
+ lib/autotest/redgreen.rb
39
+ lib/autotest/restart.rb
40
+ lib/autotest/screen.rb
41
+ lib/autotest/shame.rb
42
+ lib/autotest/snarl.rb
43
+ lib/autotest/timestamp.rb
44
+ lib/functional_test_matrix.rb
45
+ lib/multiruby.rb
46
+ lib/test/rails.rb
47
+ lib/test/rails/controller_test_case.rb
48
+ lib/test/rails/functional_test_case.rb
49
+ lib/test/rails/helper_test_case.rb
50
+ lib/test/rails/ivar_proxy.rb
51
+ lib/test/rails/pp_html_document.rb
52
+ lib/test/rails/rake_tasks.rb
53
+ lib/test/rails/render_tree.rb
54
+ lib/test/rails/test_case.rb
55
+ lib/test/rails/view_test_case.rb
56
+ lib/test/zentest_assertions.rb
57
+ lib/unit_diff.rb
58
+ lib/zentest.rb
59
+ lib/zentest_mapping.rb
60
+ test/test_autotest.rb
61
+ test/test_help.rb
62
+ test/test_rails_autotest.rb
63
+ test/test_rails_controller_test_case.rb
64
+ test/test_rails_helper_test_case.rb
65
+ test/test_rails_view_test_case.rb
66
+ test/test_unit_diff.rb
67
+ test/test_zentest.rb
68
+ test/test_zentest_assertions.rb
69
+ test/test_zentest_mapping.rb
data/README.txt ADDED
@@ -0,0 +1,110 @@
1
+ = ZenTest
2
+
3
+ * http://www.zenspider.com/ZSS/Products/ZenTest/
4
+ * http://rubyforge.org/projects/zentest/
5
+ * mailto:ryand-ruby@zenspider.com
6
+
7
+ == DESCRIPTION
8
+
9
+ ZenTest provides 4 different tools and 1 library: zentest, unit_diff,
10
+ autotest, multiruby, and Test::Rails.
11
+
12
+ ZenTest scans your target and unit-test code and writes your missing
13
+ code based on simple naming rules, enabling XP at a much quicker
14
+ pace. ZenTest only works with Ruby and Test::Unit.
15
+
16
+ unit_diff is a command-line filter to diff expected results from
17
+ actual results and allow you to quickly see exactly what is wrong.
18
+
19
+ autotest is a continous testing facility meant to be used during
20
+ development. As soon as you save a file, autotest will run the
21
+ corresponding dependent tests.
22
+
23
+ multiruby runs anything you want on multiple versions of ruby. Great
24
+ for compatibility checking! Use multiruby_setup to manage your
25
+ installed versions.
26
+
27
+ Test::Rails helps you build industrial-strength Rails code.
28
+
29
+ == STRATEGERY
30
+
31
+ There are two strategeries intended for ZenTest: test conformance
32
+ auditing and rapid XP.
33
+
34
+ For auditing, ZenTest provides an excellent means of finding methods
35
+ that have slipped through the testing process. I've run it against my
36
+ own software and found I missed a lot in a well tested
37
+ package. Writing those tests found 4 bugs I had no idea existed.
38
+
39
+ ZenTest can also be used to evaluate generated code and execute your
40
+ tests, allowing for very rapid development of both tests and
41
+ implementation.
42
+
43
+ == FEATURES
44
+
45
+ * Scans your ruby code and tests and generates missing methods for you.
46
+ * Includes a very helpful filter for Test::Unit output called unit_diff.
47
+ * Continually and intelligently test only those files you change with autotest.
48
+ * Test against multiple versions with multiruby.
49
+ * Enhance and automatically audit your rails tests using Test::Rails.
50
+ * Includes a LinuxJournal article on testing with ZenTest written by Pat Eyler.
51
+ * See also: http://blog.zenspider.com/archives/zentest/
52
+ * See also: http://blog.segment7.net/articles/category/zentest
53
+
54
+ == SYNOPSYS
55
+
56
+ ZenTest MyProject.rb TestMyProject.rb > missing.rb
57
+
58
+ ./TestMyProject.rb | unit_diff
59
+
60
+ autotest
61
+
62
+ multiruby_setup mri:svn:current
63
+ multiruby ./TestMyProject.rb
64
+
65
+ (and other stuff for Test::Rails)
66
+
67
+ == REQUIREMENTS
68
+
69
+ * Ruby 1.6+, JRuby 1.1.2+, or rubinius
70
+ * Test::Unit or miniunit
71
+ * Hoe
72
+ * rubygems
73
+ * diff.exe on windoze. Try http://gnuwin32.sourceforge.net/packages.html
74
+
75
+ == INSTALL
76
+
77
+ Using Rubygems:
78
+
79
+ * sudo gem install ZenTest
80
+
81
+ Using Rake:
82
+
83
+ * rake test
84
+ * sudo rake install
85
+
86
+ == LICENSE
87
+
88
+ (The MIT License)
89
+
90
+ Copyright (c) 2001-2006 Ryan Davis, Eric Hodel, Zen Spider Software
91
+
92
+ Permission is hereby granted, free of charge, to any person obtaining
93
+ a copy of this software and associated documentation files (the
94
+ "Software"), to deal in the Software without restriction, including
95
+ without limitation the rights to use, copy, modify, merge, publish,
96
+ distribute, sublicense, and/or sell copies of the Software, and to
97
+ permit persons to whom the Software is furnished to do so, subject to
98
+ the following conditions:
99
+
100
+ The above copyright notice and this permission notice shall be
101
+ included in all copies or substantial portions of the Software.
102
+
103
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
104
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
105
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
106
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
107
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
108
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
109
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
110
+
data/Rakefile ADDED
@@ -0,0 +1,68 @@
1
+ # -*- ruby -*-
2
+
3
+ $: << 'lib'
4
+
5
+ require 'rubygems'
6
+ require 'hoe'
7
+ require './lib/zentest.rb'
8
+
9
+ Hoe.new("ZenTest", ZenTest::VERSION) do |zentest|
10
+ zentest.developer('Ryan Davis', 'ryand-ruby@zenspider.com')
11
+ zentest.developer('Eric Hodel', 'drbrain@segment7.net')
12
+ end
13
+
14
+ task :autotest do
15
+ ruby "-Ilib -w ./bin/autotest"
16
+ end
17
+
18
+ task :update do
19
+ system "p4 edit example_dot_autotest.rb"
20
+ File.open "example_dot_autotest.rb", "w" do |f|
21
+ f.puts "# -*- ruby -*-"
22
+ f.puts
23
+ Dir.chdir "lib" do
24
+ Dir["autotest/*.rb"].sort.each do |s|
25
+ next if s =~ /rails|discover/
26
+ f.puts "# require '#{s[0..-4]}'"
27
+ end
28
+ end
29
+
30
+ f.puts
31
+
32
+ Dir["lib/autotest/*.rb"].sort.each do |file|
33
+ file = File.read(file)
34
+ m = file[/module.*/].split(/ /).last rescue nil
35
+ next unless m
36
+
37
+ file.grep(/def[^(]+=/).each do |setter|
38
+ setter = setter.sub(/^ *def self\./, '').sub(/\s*=\s*/, ' = ')
39
+ f.puts "# #{m}.#{setter}"
40
+ end
41
+ end
42
+ end
43
+ system "p4 diff -du example_dot_autotest.rb"
44
+ end
45
+
46
+ task :sort do
47
+ begin
48
+ sh 'for f in lib/*.rb; do echo $f; grep "^ *def " $f | grep -v sort=skip > x; sort x > y; echo $f; echo; diff x y; done'
49
+ sh 'for f in test/test_*.rb; do echo $f; grep "^ *def.test_" $f > x; sort x > y; echo $f; echo; diff x y; done'
50
+ ensure
51
+ sh 'rm x y'
52
+ end
53
+ end
54
+
55
+ task :rcov_info do
56
+ ruby "-Ilib -S rcov --text-report --save coverage.info test/test_*.rb"
57
+ end
58
+
59
+ task :rcov_overlay do
60
+ rcov, eol = Marshal.load(File.read("coverage.info")).last[ENV["FILE"]], 1
61
+ puts rcov[:lines].zip(rcov[:coverage]).map { |line, coverage|
62
+ bol, eol = eol, eol + line.length
63
+ [bol, eol, "#ffcccc"] unless coverage
64
+ }.compact.inspect
65
+ end
66
+
67
+ # vim:syntax=ruby
68
+
@@ -0,0 +1,721 @@
1
+ /*
2
+ * Basic styles for core document typography.
3
+ *
4
+ * Influenced by:
5
+ * - "How to size text using ems" [http://www.clagnut.com/blog/348]
6
+ */
7
+
8
+ /*************************** Basic Typography ******************************/
9
+
10
+ a:link { color: black; } /* unvisited link */
11
+ a:visited { color: black; } /* visited link */
12
+ a:hover { color: black; } /* mouse over link */
13
+ a:active { color: black; } /* selected link */
14
+
15
+ html {
16
+ background: white;
17
+ color: black;
18
+ text-align: center; /* IE hack to workaround for block centering. */
19
+ margin: 0;
20
+ padding: 0;
21
+ }
22
+
23
+
24
+ body {
25
+ margin: 0;
26
+ padding: 0;
27
+ font-family: Lucida Grande, sans-serif;
28
+ }
29
+
30
+ * {
31
+ font-family: Lucida Grande, sans-serif;
32
+ }
33
+
34
+ img { vertical-align: middle; }
35
+
36
+ p, li, dt, dd {
37
+ line-height: 1.5;
38
+ font-size: .95em;
39
+ }
40
+
41
+ p, ul, ol, dl {
42
+ margin-left: 3em;
43
+ margin-right: 2em;
44
+ }
45
+
46
+ p + p {
47
+ text-indent: 1.4em;
48
+ }
49
+
50
+ dl {
51
+ margin: 1em 3em;
52
+ }
53
+
54
+ dl dt a {
55
+ font: 1.5em bold Lucida Grande, sans-serif;
56
+ }
57
+
58
+ dl dt {
59
+ font-weight: bold;
60
+ }
61
+
62
+ dl dd {
63
+ margin: 0em 3em;
64
+ }
65
+
66
+ ul {
67
+ list-style: square outside;
68
+ }
69
+
70
+ li p { /* Markdown define paragraphs for list items. */
71
+ margin: 0;
72
+ }
73
+
74
+ /*
75
+ * Ensure that nested items have the same size as their parent as we are
76
+ * using (relative) em sizing.
77
+ */
78
+ li li, li p, td p, blockquote p {
79
+ font-size: 1em;
80
+ }
81
+
82
+ abbr, acronym {
83
+ letter-spacing:0.1em
84
+ font-variant: small-caps;
85
+ }
86
+
87
+ em {
88
+ font-style: italic;
89
+ }
90
+
91
+ term {
92
+ font-style: italic;
93
+ }
94
+
95
+ cite {
96
+ font-style: italic;
97
+ }
98
+ input, select, th, td {font-size:1em}
99
+
100
+ /******************************* Headers ********************************/
101
+
102
+ h1 {
103
+ text-align: center;
104
+ padding: .3em 2em 0em 2em;
105
+ margin: 0;
106
+ color: black;
107
+ font-size: 1.3em;
108
+ }
109
+
110
+ h2 {
111
+ margin-left: 0.4em;
112
+ font-weight: bold;
113
+ font-size: 1.2em;
114
+ border-bottom: medium #5089da solid;
115
+ }
116
+
117
+ h3 {
118
+ font-size: 1.2em;
119
+ margin-left: .5em;
120
+ margin-right: auto;
121
+ color: #929292;
122
+ border-bottom: thin solid #929292;
123
+ }
124
+
125
+ /************************ Editing / Authoring ********************/
126
+
127
+ .todo {
128
+ background: red;
129
+ color: yellow;
130
+ font-weight: bold;
131
+ }
132
+
133
+ /************************ Samples, Input, Code, Commands ********************/
134
+
135
+ code {
136
+ font-family: monospace;
137
+ }
138
+
139
+
140
+
141
+ kbd:before {
142
+ content: open-quote;
143
+ }
144
+
145
+ kbd:after {
146
+ content: close-quote;
147
+ }
148
+
149
+
150
+ code, kbd, var, pre {
151
+ font-family: monaco, "Courier New", courier, monospace;
152
+ font-size: 14px;
153
+ }
154
+
155
+ .command-box {
156
+ clear: right; /* Side notes. */
157
+ border: 1px dotted #888;
158
+ background: #151515;
159
+ color: #eee;
160
+ margin: .5em 2em .5em 3em;
161
+ padding: .5em;
162
+ text-align: left;
163
+ font-family: monospace;
164
+ -moz-border-radius: .5em;
165
+ -webkit-border-radius: .5em;
166
+ border-radius: .5em;
167
+
168
+ }
169
+
170
+ span.placeholder {
171
+ font-style: italic;
172
+ }
173
+
174
+ span.placeholder:before {
175
+ content: "<";
176
+ }
177
+
178
+ span.placeholder:after {
179
+ content: ">";
180
+ }
181
+
182
+ .command-box span.placeholder {
183
+ font-style: normal;
184
+ color: #cc2;
185
+ }
186
+
187
+ .source-code-box {
188
+ border: 1px dotted #888;
189
+ background: #151515;
190
+ color: #eee;
191
+ margin: .5em 2em .5em 3em;
192
+ padding: .5em;
193
+ text-align: left;
194
+ font-family: monospace;
195
+ -moz-border-radius: .5em;
196
+ -webkit-border-radius: .5em;
197
+ border-radius: .5em;
198
+ }
199
+
200
+ .output-box {
201
+ border: 1px dotted #888;
202
+ background: #151515;
203
+ color: #eee;
204
+ margin: .5em 2em .5em 3em;
205
+ padding: .5em;
206
+ text-align: left;
207
+ font-family: monospace;
208
+ }
209
+
210
+ .sample-box {
211
+ border: 1px dotted #444;
212
+ margin: .5em 2em .5em 3em;
213
+ padding: .5em;
214
+ text-align: left;
215
+ }
216
+
217
+ /*
218
+ * Global styles for PH Web
219
+ */
220
+
221
+ /*
222
+ * Banner and Main navigation menu
223
+ */
224
+
225
+ div.banner {
226
+ margin: 0;
227
+ padding: 0;
228
+ float: left;
229
+ width: 100%;
230
+ font-size: 110%;
231
+ line-height: normal;
232
+ background: #5089da url( Main-Menu-Background-2.jpg ) repeat-y bottom left;
233
+ border-bottom: thin #666 solid;
234
+ }
235
+
236
+ div.banner div.signature span.by {
237
+ font: italic .7em Didot, serif;
238
+ padding-right: .6em;
239
+ text-shadow: .2em .2em .2em #222;
240
+ }
241
+
242
+ div.banner div.signature {
243
+ float: right;
244
+ color: gainsboro;
245
+ font: 1.1em Didot, serif;
246
+ margin: 0;
247
+ padding: 60px .1em 0 0;
248
+ vertical-align: baseline;
249
+ }
250
+
251
+ img#banner-logo {
252
+ float: left;
253
+ margin: .3em 6em .1em 1em;
254
+ border: 0;
255
+ }
256
+
257
+
258
+ div.banner a#feed_link img {
259
+ vertical-align: middle;
260
+ border: 0;
261
+ float: right;
262
+ margin: .5em 1em;
263
+ }
264
+
265
+ div.banner a#contact_me_link img {
266
+ vertical-align: middle;
267
+ border: 0;
268
+ float: right;
269
+ margin: .5em 1em;
270
+ }
271
+
272
+ ul.section-menu {
273
+ float: left;
274
+ margin: 0 auto;
275
+ padding: 0;
276
+ width: 40em;
277
+ list-style: none;
278
+ }
279
+
280
+ ul.section-menu li {
281
+ display:block;
282
+ float: left;
283
+ margin: .8em 1px .5em 1px;
284
+ padding: 1em 0;
285
+ background: transparent url( 'Button Gradient.png' ) repeat-x center;
286
+ text-shadow: .1em .1em .2em #444;
287
+ }
288
+
289
+
290
+ ul.section-menu li a:visited {
291
+ color: gainsboro;
292
+ }
293
+
294
+ ul.section-menu li a {
295
+ padding: 0 1em;
296
+ margin: 0;
297
+ font: bold .9em Lucida Grande, sans-serif;
298
+ text-decoration: none;
299
+ color: gainsboro;
300
+ }
301
+
302
+ ul.section-menu li.first a {
303
+ padding-left: .6em;
304
+ }
305
+
306
+ ul.section-menu li.last a {
307
+ padding-left: .6em;
308
+ }
309
+
310
+ ul.section-menu li a:hover {
311
+ color: white;
312
+ }
313
+
314
+ ul.section-menu li#current a {
315
+ color: #ff8;
316
+ }
317
+
318
+ div.content {
319
+ float: left;
320
+ background: url(Shore.jpg) no-repeat left top;
321
+ width: 100%;
322
+ padding: 0;
323
+ padding-top: 1.3em;
324
+ padding-bottom: 1.3em;
325
+ text-align: left;
326
+ clear: both;
327
+ margin: 0;
328
+ }
329
+
330
+
331
+ p.Cartouche {
332
+ float: right;
333
+ width: 15em;
334
+ margin: 0 2em 2em 3em;
335
+ background: #5089da;
336
+ padding: 1em;
337
+ text-align: center;
338
+ color: white;
339
+ font-weight: bold;
340
+ border: 0;
341
+ text-indent: 0;
342
+
343
+ -moz-border-radius: .5em;
344
+ -webkit-border-radius: .5em;
345
+ border-radius: .5em;
346
+ -webkit-box-shadow: 4px 4px 4px rgba(0, 0, 0, 0.5)
347
+ }
348
+
349
+ p.Cartouche a img {
350
+ border: 0;
351
+ }
352
+
353
+ .Copyright {
354
+ clear: both;
355
+ text-align: center;
356
+ font: italic 1em Lucida Grande, sans-serif;
357
+ color: #444;
358
+ margin-bottom: .2em;
359
+ }
360
+
361
+ .License {
362
+ margin-top: 0;
363
+ font: italic 1em Lucida Grande, sans-serif;
364
+ color: #444;
365
+ }
366
+
367
+ a.discussion_link {
368
+ text-decoration: none;
369
+ }
370
+
371
+ a.comment_counter {
372
+ color: #5089da;
373
+ padding: 0 1.5em;
374
+ }
375
+
376
+ h2.document_reference a {
377
+ text-decoration: none;
378
+ }
379
+
380
+ span.tag_list {
381
+ padding-left: 4em;
382
+ font-weight: normal;
383
+ }
384
+
385
+ span.tag_list img {
386
+ vertical-align: middle;
387
+ }
388
+
389
+ span.tag_list:before {
390
+ content: '[';
391
+ }
392
+
393
+ span.tag_list:after {
394
+ content: ']';
395
+ }
396
+
397
+ p.read_more, p.read_more a {
398
+ font-variant : small-caps;
399
+ font-weight: bold;
400
+ color: #5089da;
401
+ }
402
+
403
+ h2 span.post_date {
404
+ padding-right: 1em;
405
+ color: #5089da;
406
+ }
407
+
408
+ div#contact_form {
409
+ margin: 2em;
410
+ }
411
+
412
+ div#contact_form label {
413
+ margin-bottom: 100px;
414
+ padding: 5em 1em 5em 0;
415
+ }
416
+
417
+ div#contact_form textarea {
418
+ margin-top: 1.5em;
419
+ width: 50em;
420
+ }
421
+
422
+ div.errorExplanation {
423
+ background: #fbb;
424
+ color: red;
425
+ padding: 1em;
426
+ margin: 1em;
427
+ -moz-border-radius: 1em;
428
+ -webkit-border-radius: 1em;
429
+ border-radius: 1em;
430
+ }
431
+
432
+ div.errorExplanation h2 {
433
+ font-size: 1em;
434
+ border: 0;
435
+ color: red;
436
+ }
437
+
438
+ /*
439
+ * Round box
440
+ */
441
+ table.box {
442
+ table-layout: fixed;
443
+ border-spacing: 0;
444
+ border: none;
445
+ }
446
+
447
+ table.box tr, table.box tr td {
448
+ padding: 0;
449
+ margin: 0;
450
+ border: none;
451
+ }
452
+
453
+ table.box tr.top, table.box tr.bottom {
454
+ height: 30px;
455
+ }
456
+
457
+ table.box tr.bottom td { /* Fix for Safari who does not pick up height from the <tr> rule. */
458
+ height: 30px;
459
+ }
460
+
461
+ table.box tr td.left, table.box tr td.right {
462
+ width: 30px;
463
+ }
464
+
465
+ table.box tr.top td.left {
466
+ background: url('Blue Box Top Left.png') no-repeat top left;
467
+ }
468
+
469
+ table.box tr.top td.center {
470
+ background: url('Blue Box Top.png') repeat-x top;
471
+ }
472
+
473
+ table.box tr.top td.right {
474
+ background: url('Blue Box Top Right.png') no-repeat top right;
475
+ }
476
+
477
+ table.box tr.middle td.left {
478
+ background: url('Blue Box Left.png') repeat-y left;
479
+ }
480
+
481
+ table.box tr.middle td.center {
482
+ background: url('Blue Box Center.png') repeat;
483
+ padding: 0px;
484
+ }
485
+
486
+ table.box tr.middle td.right {
487
+ background: url('Blue Box Right.png') repeat-y right;
488
+ }
489
+
490
+ table.box tr.bottom td.left {
491
+ background: url('Blue Box Bottom Left.png') no-repeat bottom left;
492
+ }
493
+
494
+ table.box tr.bottom td.center {
495
+ background: url('Blue Box Bottom.png') repeat-x bottom;
496
+ }
497
+
498
+ table.box tr.bottom td.right {
499
+ background: url('Blue Box Bottom Right.png') no-repeat bottom right;
500
+ }
501
+
502
+
503
+ /*
504
+ * Styles for PH articles.
505
+ */
506
+
507
+ div.content {
508
+ float: left;
509
+ width: 90%;
510
+ padding: 0 3em;
511
+ }
512
+
513
+ div.content * {
514
+ text-align: left;
515
+ }
516
+
517
+ div.content h1 {
518
+ padding: 1em 2em 1em 2em;
519
+ text-align: center;
520
+ font-size: 1.7em;
521
+ text-shadow: .1em .1em .2em #666;
522
+ }
523
+
524
+ div.content table.reference-table {
525
+ margin-left: 4em;
526
+ }
527
+ div.content table.reference-table tr td, div.content table.reference-table tr th {
528
+ padding: .3em 1em;
529
+ text-align: left;
530
+ }
531
+
532
+ div.Header {
533
+ margin: .5em 3em 1em 3em;
534
+ padding: .5em 1em .5em 1em;
535
+ background: #999;
536
+ color: #fff;
537
+ border: thin solid #888;
538
+ text-align: center;
539
+ }
540
+
541
+ div.Author {
542
+ padding: 0;
543
+ margin: 0;
544
+ color: #fff;
545
+ font: italic 1em serif;
546
+ }
547
+
548
+ div.Author:before {
549
+ content: "By "
550
+ }
551
+
552
+ div.LastUpdate:before {
553
+ content: "Last significant update: "
554
+ }
555
+
556
+ p.LastUpdate {
557
+ padding: 0;
558
+ margin: -.5em 0 1.2em 0;
559
+ color: #222;
560
+ font: italic 1em sans-serif;
561
+ text-align: center;
562
+ }
563
+
564
+ div.Abstract {
565
+ margin: .5em 6em;
566
+ background: #5089da;
567
+ color: white;
568
+ text-align: justify;
569
+ padding: 1.2em 1.2em;
570
+
571
+ -moz-border-radius: 1em;
572
+ -webkit-border-radius: 1em;
573
+ border-radius: 1em;
574
+ -webkit-box-shadow: 4px 4px 4px rgba(0, 0, 0, 0.5)
575
+ }
576
+
577
+ div.Abstract p {
578
+ margin: 1em 0 0 0;
579
+ padding: 0;
580
+ }
581
+
582
+ div.Abstract p.first {
583
+ margin-top: 0;
584
+ }
585
+
586
+ div.Audience:before {
587
+ content: "Audience: ";
588
+ }
589
+
590
+ div.Audience {
591
+ margin: .5em 2em;
592
+ color: #444;
593
+ font: italic 1em Verdana sans-serif;
594
+ text-align: justify;
595
+ }
596
+
597
+
598
+ h2 {
599
+ margin-top: 1.5em;
600
+ margin-left: 0em;
601
+ font-weight: bold;
602
+ font-size: 1.2em;
603
+ border-bottom: medium #5089da solid;
604
+ text-shadow: .1em .1em .2em #666;
605
+ }
606
+
607
+ h3 {
608
+ font-size: 1.1em;
609
+ margin-top: 1em;
610
+ margin-left: 1em;
611
+ margin-right: auto;
612
+ color: #5089da;
613
+ border-bottom: thin solid #929292;
614
+ text-shadow: .1em .1em .2em #bbb;
615
+ }
616
+
617
+ h4 {
618
+ font-size: 1em;
619
+ font-weight: bold;
620
+ margin-left: 2em;
621
+ margin-right: auto;
622
+ color: #000;
623
+ border-bottom: thin #5089da solid;
624
+ }
625
+
626
+ div#what-s-next {
627
+ margin: .5em 0em;
628
+ background: #5089da;
629
+ color: white;
630
+ text-align: justify;
631
+ padding: 1.5em 1em 1em 1em;
632
+
633
+ -moz-border-radius: 1em;
634
+ -webkit-border-radius: 1em;
635
+ border-radius: 1em;
636
+ -webkit-box-shadow: 4px 4px 4px rgba(0, 0, 0, 0.5)
637
+ }
638
+
639
+ div#what-s-next h2 {
640
+ color: white;
641
+ padding-top: 0em;
642
+ padding: 0;
643
+ margin: 0;
644
+ }
645
+
646
+ div#what-s-next h3 {
647
+ color: #060c14;
648
+ border-color: #305282;
649
+ }
650
+
651
+ div.side-note {
652
+ float: right;
653
+ width: 23em;
654
+ margin: 0 0 1.2em 2em;
655
+ padding: 0;
656
+
657
+ background: lightyellow;
658
+ border: thin solid #a8a86d;
659
+ }
660
+
661
+ div.side-note .header {
662
+ margin: .25em 1em;
663
+ padding: 0 0 .3em 0;
664
+
665
+ color: black;
666
+ border-bottom: solid medium #5089da;
667
+ }
668
+
669
+ div.side-note p {
670
+ margin: .5em 1em;
671
+ }
672
+
673
+ div.side-note .header p {
674
+ text-align: center;
675
+ font-weight: bold;
676
+ margin: 0;
677
+ padding: 0;
678
+ }
679
+
680
+ h2, h3 {
681
+ clear: both;
682
+ }
683
+
684
+ div.maruku_toc ul {
685
+ margin: 0 2em;
686
+ padding: 0;
687
+ }
688
+
689
+ div.maruku_toc ul li ul {
690
+ margin: 0 2em;
691
+ padding: 0;
692
+ }
693
+
694
+ div.content li {
695
+ margin-top: 1em;
696
+ margin-bottom: 1em;
697
+ }
698
+
699
+ blockquote {
700
+ color: #333;
701
+ font-style: Italic;
702
+ }
703
+
704
+ .ruby .normal {}
705
+ .ruby .comment { color: #005; font-style: italic; }
706
+ .ruby .keyword { color: #A00; font-weight: bold; }
707
+ .ruby .method { color: #077; }
708
+ .ruby .class { color: #074; }
709
+ .ruby .module { color: #050; }
710
+ .ruby .punct { color: #447; font-weight: bold; }
711
+ .ruby .symbol { color: #099; }
712
+ .ruby .string { color: #944; background: #FFE; }
713
+ .ruby .char { color: #F07; }
714
+ .ruby .ident { color: #004; }
715
+ .ruby .constant { color: #07F; }
716
+ .ruby .regex { color: #B66; background: #FEF; }
717
+ .ruby .number { color: #F99; }
718
+ .ruby .attribute { color: #7BB; }
719
+ .ruby .global { color: #7FB; }
720
+ .ruby .expr { color: #227; }
721
+ .ruby .escape { color: #277; }