quarry 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. data/CHANGES +6 -0
  2. data/COPYING +344 -0
  3. data/MANIFEST +151 -0
  4. data/METADATA +22 -0
  5. data/NEWS +8 -0
  6. data/README +75 -0
  7. data/VERSION +1 -0
  8. data/bin/rubybreak +3 -0
  9. data/bin/xact-ruby +6 -0
  10. data/demo/spec/demo_check.rb +21 -0
  11. data/demo/spec/demo_outline.rb +25 -0
  12. data/demo/test/demo_run.rb +21 -0
  13. data/doc/manual.html2 +1416 -0
  14. data/doc/rdoc/classes/Assertion.html +101 -0
  15. data/doc/rdoc/classes/Assertion/False.html +132 -0
  16. data/doc/rdoc/classes/Assertion/True.html +137 -0
  17. data/doc/rdoc/classes/Kernel.html +86 -0
  18. data/doc/rdoc/classes/Method.html +137 -0
  19. data/doc/rdoc/classes/Module.html +165 -0
  20. data/doc/rdoc/classes/Object.html +154 -0
  21. data/doc/rdoc/classes/Quarry.html +177 -0
  22. data/doc/rdoc/classes/Quarry/Design.html +170 -0
  23. data/doc/rdoc/classes/Quarry/Design/Specification.html +265 -0
  24. data/doc/rdoc/classes/Quarry/Design/Specification/Context.html +174 -0
  25. data/doc/rdoc/classes/Quarry/MethodProbe.html +267 -0
  26. data/doc/rdoc/classes/Quarry/Mock.html +89 -0
  27. data/doc/rdoc/classes/Quarry/Mock/Object.html +276 -0
  28. data/doc/rdoc/created.rid +1 -0
  29. data/doc/rdoc/files/CHANGES.html +100 -0
  30. data/doc/rdoc/files/COPYING.html +457 -0
  31. data/doc/rdoc/files/MANIFEST.html +630 -0
  32. data/doc/rdoc/files/METADATA.html +92 -0
  33. data/doc/rdoc/files/NEWS.html +99 -0
  34. data/doc/rdoc/files/README.html +171 -0
  35. data/doc/rdoc/files/VERSION.html +96 -0
  36. data/doc/rdoc/files/bin/rubybreak.html +96 -0
  37. data/doc/rdoc/files/bin/xact-ruby.html +92 -0
  38. data/doc/rdoc/files/lib/quarry/assert/must_rb.html +96 -0
  39. data/doc/rdoc/files/lib/quarry/assert/should_rb.html +96 -0
  40. data/doc/rdoc/files/lib/quarry/assertion_rb.html +96 -0
  41. data/doc/rdoc/files/lib/quarry/breakout_rb.html +144 -0
  42. data/doc/rdoc/files/lib/quarry/design/spec_rb.html +100 -0
  43. data/doc/rdoc/files/lib/quarry/document_rb.html +92 -0
  44. data/doc/rdoc/files/lib/quarry/loadmonitor_rb.html +92 -0
  45. data/doc/rdoc/files/lib/quarry/methodprobe_rb.html +111 -0
  46. data/doc/rdoc/files/lib/quarry/mock/object_rb.html +123 -0
  47. data/doc/rdoc/files/lib/quarry/mockery_rb.html +115 -0
  48. data/doc/rdoc/fr_class_index.html +60 -0
  49. data/doc/rdoc/fr_file_index.html +65 -0
  50. data/doc/rdoc/fr_method_index.html +77 -0
  51. data/doc/rdoc/index.html +26 -0
  52. data/doc/rdoc/rdoc-style.css +175 -0
  53. data/doc/ri/Assertion/False/assert-i.yaml +10 -0
  54. data/doc/ri/Assertion/False/cdesc-False.yaml +19 -0
  55. data/doc/ri/Assertion/False/message-i.yaml +10 -0
  56. data/doc/ri/Assertion/True/assert-i.yaml +11 -0
  57. data/doc/ri/Assertion/True/cdesc-True.yaml +24 -0
  58. data/doc/ri/Assertion/True/message-c.yaml +11 -0
  59. data/doc/ri/Assertion/True/message-i.yaml +11 -0
  60. data/doc/ri/Assertion/True/method_missing-i.yaml +11 -0
  61. data/doc/ri/Assertion/True/new-c.yaml +11 -0
  62. data/doc/ri/Assertion/cdesc-Assertion.yaml +17 -0
  63. data/doc/ri/Kernel/cdesc-Kernel.yaml +15 -0
  64. data/doc/ri/Method/cdesc-Method.yaml +18 -0
  65. data/doc/ri/Method/migration-i.yaml +12 -0
  66. data/doc/ri/Method/signature-i.yaml +12 -0
  67. data/doc/ri/Module/cdesc-Module.yaml +21 -0
  68. data/doc/ri/Module/doc-i.yaml +16 -0
  69. data/doc/ri/Module/method_added-i.yaml +10 -0
  70. data/doc/ri/Object/assert%21-i.yaml +14 -0
  71. data/doc/ri/Object/assert-i.yaml +14 -0
  72. data/doc/ri/Object/cdesc-Object.yaml +20 -0
  73. data/doc/ri/Quarry/Design/Specification/Context/after-i.yaml +10 -0
  74. data/doc/ri/Quarry/Design/Specification/Context/before-i.yaml +10 -0
  75. data/doc/ri/Quarry/Design/Specification/Context/cdesc-Context.yaml +24 -0
  76. data/doc/ri/Quarry/Design/Specification/Context/method_missing-i.yaml +10 -0
  77. data/doc/ri/Quarry/Design/Specification/Context/specifications-i.yaml +10 -0
  78. data/doc/ri/Quarry/Design/Specification/cdesc-Specification.yaml +44 -0
  79. data/doc/ri/Quarry/Design/Specification/check-i.yaml +12 -0
  80. data/doc/ri/Quarry/Design/Specification/new-c.yaml +12 -0
  81. data/doc/ri/Quarry/Design/Specification/outline-i.yaml +12 -0
  82. data/doc/ri/Quarry/Design/cdesc-Design.yaml +22 -0
  83. data/doc/ri/Quarry/Design/check-c.yaml +12 -0
  84. data/doc/ri/Quarry/Design/outline-c.yaml +10 -0
  85. data/doc/ri/Quarry/Design/specification-c.yaml +10 -0
  86. data/doc/ri/Quarry/Design/specifications-c.yaml +10 -0
  87. data/doc/ri/Quarry/MethodProbe/cdesc-MethodProbe.yaml +46 -0
  88. data/doc/ri/Quarry/MethodProbe/duckcall-c.yaml +10 -0
  89. data/doc/ri/Quarry/MethodProbe/initialize_copy-i.yaml +10 -0
  90. data/doc/ri/Quarry/MethodProbe/method_missing-i.yaml +10 -0
  91. data/doc/ri/Quarry/MethodProbe/new-c.yaml +10 -0
  92. data/doc/ri/Quarry/Mock/Object/cdesc-Object.yaml +52 -0
  93. data/doc/ri/Quarry/Mock/Object/echo-c.yaml +12 -0
  94. data/doc/ri/Quarry/Mock/Object/keys-c.yaml +12 -0
  95. data/doc/ri/Quarry/Mock/Object/mock-c.yaml +12 -0
  96. data/doc/ri/Quarry/Mock/Object/mocks-c.yaml +10 -0
  97. data/doc/ri/Quarry/Mock/Object/spin-c.yaml +12 -0
  98. data/doc/ri/Quarry/Mock/cdesc-Mock.yaml +15 -0
  99. data/doc/ri/Quarry/Mockery-i.yaml +12 -0
  100. data/doc/ri/Quarry/cdesc-Quarry.yaml +17 -0
  101. data/doc/ri/created.rid +1 -0
  102. data/lib/quarry/assert/must.rb +8 -0
  103. data/lib/quarry/assert/should.rb +9 -0
  104. data/lib/quarry/assertion.rb +95 -0
  105. data/lib/quarry/breakout.rb +45 -0
  106. data/lib/quarry/design/spec.rb +197 -0
  107. data/lib/quarry/document.rb +35 -0
  108. data/lib/quarry/loadmonitor.rb +14 -0
  109. data/lib/quarry/methodprobe.rb +216 -0
  110. data/lib/quarry/mock/object.rb +169 -0
  111. data/lib/quarry/mockery.rb +85 -0
  112. metadata +214 -0
@@ -0,0 +1,276 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+ <html>
6
+ <head>
7
+ <title>Class: Quarry::Mock::Object</title>
8
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
9
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
10
+
11
+ <script language="JavaScript" type="text/javascript">
12
+ // <![CDATA[
13
+
14
+ function toggleSource( id )
15
+ {
16
+ var elem
17
+ var link
18
+
19
+ if( document.getElementById )
20
+ {
21
+ elem = document.getElementById( id )
22
+ link = document.getElementById( "l_" + id )
23
+ }
24
+ else if ( document.all )
25
+ {
26
+ elem = eval( "document.all." + id )
27
+ link = eval( "document.all.l_" + id )
28
+ }
29
+ else
30
+ return false;
31
+
32
+ if( elem.style.display == "block" )
33
+ {
34
+ elem.style.display = "none"
35
+ link.innerHTML = "show source"
36
+ }
37
+ else
38
+ {
39
+ elem.style.display = "block"
40
+ link.innerHTML = "hide source"
41
+ }
42
+ }
43
+
44
+ function openCode( url )
45
+ {
46
+ window.open( url, "SOURCE_CODE", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=480,width=750" ).focus();
47
+ }
48
+ // ]]>
49
+ </script>
50
+ </head>
51
+
52
+ <body>
53
+ <table width="100%" border='0' cellpadding='0' cellspacing='0' class='banner'><tr>
54
+ <td class="file-title"><span class="file-title-prefix">Class</span><br />Quarry::Mock::Object</td>
55
+ <td align="right">
56
+ <table cellspacing="0" cellpadding="2">
57
+ <tr valign="top">
58
+ <td>In:</td>
59
+ <td>
60
+ <a href="../../../files/lib/quarry/mock/object_rb.html">lib/quarry/mock/object.rb</a>
61
+ </td>
62
+ </tr>
63
+ <tr>
64
+ <td>Parent:</td>
65
+ <td>
66
+ OpenStruct
67
+ </td>
68
+ </tr>
69
+ </table>
70
+ </td>
71
+ </tr>
72
+ </table>
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+ <div id="content">
77
+
78
+ <div class="description"><h1><a href="../Mock.html">Mock</a> <a href="Object.html">Object</a></h1>
79
+ <p>
80
+ A straightfoward mocking facility. Typically used in test cases. The <a
81
+ href="../Mock.html">Mock</a> class offers a few constructors for quickly
82
+ building mockups.
83
+ </p>
84
+ <pre>
85
+ mock - Returns a static reponse.
86
+ echo - Returns the arguments passed-in.
87
+ spin - Returns a rotation of responses.
88
+ keys - Returns an index of responses.
89
+ </pre>
90
+ <p>
91
+ <a href="../Mock.html">Mock</a> classes can be built from sratch or
92
+ partially framed against other classes.
93
+ </p>
94
+ <h3>Usage</h3>
95
+ <pre>
96
+ class ContextMock &lt; Mock
97
+ mock :response_headers, {}
98
+ spin :host_url, ['http://www.nitrohq.com','http://www.rubyforge.com']
99
+ end
100
+
101
+ ctx = ContextMock.new
102
+ ctx.response_headers['location'] = url
103
+ ctx.host_url #=&gt; &quot;http://www.nitrohq.com&quot;
104
+ ctx.host_url #=&gt; &quot;http://www.rubyforge.com&quot;
105
+ </pre>
106
+ <p>
107
+ Or
108
+ </p>
109
+ <pre>
110
+ class ContextMock &lt; Mock(Context)
111
+ ...
112
+ end
113
+ </pre>
114
+ </div>
115
+
116
+
117
+
118
+ <div class="sectiontitle">Methods</div>
119
+ <ul>
120
+ <li><a href="#M000025">echo</a></li>
121
+ <li><a href="#M000027">keys</a></li>
122
+ <li><a href="#M000024">mock</a></li>
123
+ <li><a href="#M000023">mocks</a></li>
124
+ <li><a href="#M000026">spin</a></li>
125
+ </ul>
126
+
127
+
128
+
129
+
130
+ <div class="sectiontitle">Constants</div>
131
+ <table border='0' cellpadding='5'>
132
+ <tr valign='top'>
133
+ <td class="attr-name">UnmockedMethods</td>
134
+ <td>=</td>
135
+ <td class="attr-value">%r{^( |inspect |kind_of\?|is_a\?|instance_of\?|class |method|send|respond_to\? |hash |__ )}x</td>
136
+ </tr>
137
+ <tr valign='top'>
138
+ <td>&nbsp;</td>
139
+ <td colspan="2" class="attr-desc">
140
+ Certain methods are not mocked:
141
+
142
+ <pre>
143
+ inspect (tricky)
144
+ class (delegated)
145
+ kind_of? (delegated)
146
+ is_a? (delegated)
147
+ instance_of? (delegated)
148
+ method (works as-is)
149
+ send (works as-is)
150
+ respond_to? (works as-is)
151
+ hash (no way to mock)
152
+
153
+ __id__, __call__, etc. (not meant to be mocked, ever!)
154
+ </pre>
155
+ </td>
156
+ </tr>
157
+ </table>
158
+
159
+ <div class="sectiontitle">Attributes</div>
160
+ <table border='0' cellpadding='5'>
161
+ <tr valign='top'>
162
+ <td class='attr-rw'>
163
+ [R]
164
+ </td>
165
+ <td class='attr-name'>mocked_class</td>
166
+ <td class='attr-desc'></td>
167
+ </tr>
168
+ </table>
169
+
170
+ <div class="sectiontitle">Public Class methods</div>
171
+ <div class="method">
172
+ <div class="title">
173
+ <a name="M000025"></a><b>echo</b>( sym )
174
+ </div>
175
+ <div class="description">
176
+ <p>
177
+ Responds with input.
178
+ </p>
179
+ </div>
180
+ <div class="sourcecode">
181
+ <p class="source-link">[ <a href="javascript:toggleSource('M000025_source')" id="l_M000025_source">show source</a> ]</p>
182
+ <div id="M000025_source" class="dyn-source">
183
+ <pre>
184
+ <span class="ruby-comment cmt"># File lib/quarry/mock/object.rb, line 103</span>
185
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">echo</span>( <span class="ruby-identifier">sym</span> )
186
+ <span class="ruby-identifier">define_method</span>( <span class="ruby-identifier">sym</span> ) { <span class="ruby-operator">|</span><span class="ruby-operator">*</span><span class="ruby-identifier">args</span><span class="ruby-operator">|</span> <span class="ruby-identifier">args</span> }
187
+ <span class="ruby-keyword kw">end</span>
188
+ </pre>
189
+ </div>
190
+ </div>
191
+ </div>
192
+ <div class="method">
193
+ <div class="title">
194
+ <a name="M000027"></a><b>keys</b>( sym, hsh )
195
+ </div>
196
+ <div class="description">
197
+ <p>
198
+ Responds according to a mapping of input parameters.
199
+ </p>
200
+ </div>
201
+ <div class="sourcecode">
202
+ <p class="source-link">[ <a href="javascript:toggleSource('M000027_source')" id="l_M000027_source">show source</a> ]</p>
203
+ <div id="M000027_source" class="dyn-source">
204
+ <pre>
205
+ <span class="ruby-comment cmt"># File lib/quarry/mock/object.rb, line 113</span>
206
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">keys</span>( <span class="ruby-identifier">sym</span>, <span class="ruby-identifier">hsh</span> )
207
+ <span class="ruby-identifier">define_method</span>( <span class="ruby-identifier">sym</span> ) { <span class="ruby-operator">|</span><span class="ruby-operator">*</span><span class="ruby-identifier">args</span><span class="ruby-operator">|</span> <span class="ruby-identifier">hsh</span>[<span class="ruby-identifier">args</span>] }
208
+ <span class="ruby-keyword kw">end</span>
209
+ </pre>
210
+ </div>
211
+ </div>
212
+ </div>
213
+ <div class="method">
214
+ <div class="title">
215
+ <a name="M000024"></a><b>mock</b>( sym, val )
216
+ </div>
217
+ <div class="description">
218
+ <p>
219
+ <a href="../Mock.html">Mock</a> a static repsonse.
220
+ </p>
221
+ </div>
222
+ <div class="sourcecode">
223
+ <p class="source-link">[ <a href="javascript:toggleSource('M000024_source')" id="l_M000024_source">show source</a> ]</p>
224
+ <div id="M000024_source" class="dyn-source">
225
+ <pre>
226
+ <span class="ruby-comment cmt"># File lib/quarry/mock/object.rb, line 98</span>
227
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">mock</span>( <span class="ruby-identifier">sym</span>, <span class="ruby-identifier">val</span> )
228
+ <span class="ruby-identifier">define_method</span>( <span class="ruby-identifier">sym</span> ) { <span class="ruby-operator">|</span><span class="ruby-operator">*</span><span class="ruby-identifier">args</span><span class="ruby-operator">|</span> <span class="ruby-identifier">val</span> }
229
+ <span class="ruby-keyword kw">end</span>
230
+ </pre>
231
+ </div>
232
+ </div>
233
+ </div>
234
+ <div class="method">
235
+ <div class="title">
236
+ <a name="M000023"></a><b>mocks</b>()
237
+ </div>
238
+ <div class="sourcecode">
239
+ <p class="source-link">[ <a href="javascript:toggleSource('M000023_source')" id="l_M000023_source">show source</a> ]</p>
240
+ <div id="M000023_source" class="dyn-source">
241
+ <pre>
242
+ <span class="ruby-comment cmt"># File lib/quarry/mock/object.rb, line 93</span>
243
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">mocks</span>
244
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">methods</span>(<span class="ruby-keyword kw">false</span>)
245
+ <span class="ruby-keyword kw">end</span>
246
+ </pre>
247
+ </div>
248
+ </div>
249
+ </div>
250
+ <div class="method">
251
+ <div class="title">
252
+ <a name="M000026"></a><b>spin</b>( sym, arr )
253
+ </div>
254
+ <div class="description">
255
+ <p>
256
+ Reponds with a rotation of reponses.
257
+ </p>
258
+ </div>
259
+ <div class="sourcecode">
260
+ <p class="source-link">[ <a href="javascript:toggleSource('M000026_source')" id="l_M000026_source">show source</a> ]</p>
261
+ <div id="M000026_source" class="dyn-source">
262
+ <pre>
263
+ <span class="ruby-comment cmt"># File lib/quarry/mock/object.rb, line 108</span>
264
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">spin</span>( <span class="ruby-identifier">sym</span>, <span class="ruby-identifier">arr</span> )
265
+ <span class="ruby-identifier">define_method</span>( <span class="ruby-identifier">sym</span> ) { <span class="ruby-operator">|</span><span class="ruby-operator">*</span><span class="ruby-identifier">args</span><span class="ruby-operator">|</span> <span class="ruby-identifier">arr</span>.<span class="ruby-identifier">push</span>(<span class="ruby-identifier">arr</span>.<span class="ruby-identifier">shift</span>) ; <span class="ruby-identifier">arr</span>[<span class="ruby-value">-1</span>] }
266
+ <span class="ruby-keyword kw">end</span>
267
+ </pre>
268
+ </div>
269
+ </div>
270
+ </div>
271
+ </div>
272
+
273
+ </div>
274
+
275
+ </body>
276
+ </html>
@@ -0,0 +1 @@
1
+ Thu, 21 Aug 2008 14:42:50 -0400
@@ -0,0 +1,100 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+ <html>
6
+ <head>
7
+ <title>File: CHANGES</title>
8
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
9
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
10
+
11
+ <script language="JavaScript" type="text/javascript">
12
+ // <![CDATA[
13
+
14
+ function toggleSource( id )
15
+ {
16
+ var elem
17
+ var link
18
+
19
+ if( document.getElementById )
20
+ {
21
+ elem = document.getElementById( id )
22
+ link = document.getElementById( "l_" + id )
23
+ }
24
+ else if ( document.all )
25
+ {
26
+ elem = eval( "document.all." + id )
27
+ link = eval( "document.all.l_" + id )
28
+ }
29
+ else
30
+ return false;
31
+
32
+ if( elem.style.display == "block" )
33
+ {
34
+ elem.style.display = "none"
35
+ link.innerHTML = "show source"
36
+ }
37
+ else
38
+ {
39
+ elem.style.display = "block"
40
+ link.innerHTML = "hide source"
41
+ }
42
+ }
43
+
44
+ function openCode( url )
45
+ {
46
+ window.open( url, "SOURCE_CODE", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=480,width=750" ).focus();
47
+ }
48
+ // ]]>
49
+ </script>
50
+ </head>
51
+
52
+ <body>
53
+ <table border='0' cellpadding='0' cellspacing='0' width="100%" class='banner'>
54
+ <tr><td>
55
+ <table width="100%" border='0' cellpadding='0' cellspacing='0'><tr>
56
+ <td class="file-title" colspan="2"><span class="file-title-prefix">File</span><br />CHANGES</td>
57
+ <td align="right">
58
+ <table border='0' cellspacing="0" cellpadding="2">
59
+ <tr>
60
+ <td>Path:</td>
61
+ <td>CHANGES
62
+ </td>
63
+ </tr>
64
+ <tr>
65
+ <td>Modified:</td>
66
+ <td>Thu Aug 21 13:27:34 -0400 2008</td>
67
+ </tr>
68
+ </table>
69
+ </td></tr>
70
+ </table>
71
+ </td></tr>
72
+ </table><br />
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+ <div id="content">
77
+
78
+ <div class="description"><h1>Changelog</h1>
79
+ <h2>0.3.0 // 2008-08-18</h2>
80
+ <ul>
81
+ <li>Initial release.
82
+
83
+ </li>
84
+ </ul>
85
+ </div>
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+ </div>
96
+
97
+ </div>
98
+
99
+ </body>
100
+ </html>
@@ -0,0 +1,457 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+ <html>
6
+ <head>
7
+ <title>File: COPYING</title>
8
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
9
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
10
+
11
+ <script language="JavaScript" type="text/javascript">
12
+ // <![CDATA[
13
+
14
+ function toggleSource( id )
15
+ {
16
+ var elem
17
+ var link
18
+
19
+ if( document.getElementById )
20
+ {
21
+ elem = document.getElementById( id )
22
+ link = document.getElementById( "l_" + id )
23
+ }
24
+ else if ( document.all )
25
+ {
26
+ elem = eval( "document.all." + id )
27
+ link = eval( "document.all.l_" + id )
28
+ }
29
+ else
30
+ return false;
31
+
32
+ if( elem.style.display == "block" )
33
+ {
34
+ elem.style.display = "none"
35
+ link.innerHTML = "show source"
36
+ }
37
+ else
38
+ {
39
+ elem.style.display = "block"
40
+ link.innerHTML = "hide source"
41
+ }
42
+ }
43
+
44
+ function openCode( url )
45
+ {
46
+ window.open( url, "SOURCE_CODE", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=480,width=750" ).focus();
47
+ }
48
+ // ]]>
49
+ </script>
50
+ </head>
51
+
52
+ <body>
53
+ <table border='0' cellpadding='0' cellspacing='0' width="100%" class='banner'>
54
+ <tr><td>
55
+ <table width="100%" border='0' cellpadding='0' cellspacing='0'><tr>
56
+ <td class="file-title" colspan="2"><span class="file-title-prefix">File</span><br />COPYING</td>
57
+ <td align="right">
58
+ <table border='0' cellspacing="0" cellpadding="2">
59
+ <tr>
60
+ <td>Path:</td>
61
+ <td>COPYING
62
+ </td>
63
+ </tr>
64
+ <tr>
65
+ <td>Modified:</td>
66
+ <td>Wed Aug 20 12:17:31 -0400 2008</td>
67
+ </tr>
68
+ </table>
69
+ </td></tr>
70
+ </table>
71
+ </td></tr>
72
+ </table><br />
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+ <div id="content">
77
+
78
+ <div class="description"><pre>
79
+ Ruby Quarry (c) 2008 Tiger Ops
80
+
81
+ GNU GENERAL PUBLIC LICENSE
82
+ Version 2, June 1991
83
+ </pre>
84
+ <p>
85
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
86
+ </p>
87
+ <pre>
88
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
89
+ </pre>
90
+ <p>
91
+ Everyone is permitted to copy and distribute verbatim copies of this
92
+ license document, but changing it is not allowed.
93
+ </p>
94
+ <pre>
95
+ Preamble
96
+ </pre>
97
+ <p>
98
+ The licenses for most software are designed to take away your freedom to
99
+ share and change it. By contrast, the GNU General Public License is
100
+ intended to guarantee your freedom to share and change free
101
+ software&#8212;to make sure the software is free for all its users. This
102
+ General Public License applies to most of the Free Software
103
+ Foundation&#8216;s software and to any other program whose authors commit
104
+ to using it. (Some other Free Software Foundation software is covered by
105
+ the GNU Library General Public License instead.) You can apply it to your
106
+ programs, too.
107
+ </p>
108
+ <p>
109
+ When we speak of free software, we are referring to freedom, not price. Our
110
+ General Public Licenses are designed to make sure that you have the freedom
111
+ to distribute copies of free software (and charge for this service if you
112
+ wish), that you receive source code or can get it if you want it, that you
113
+ can change the software or use pieces of it in new free programs; and that
114
+ you know you can do these things.
115
+ </p>
116
+ <p>
117
+ To protect your rights, we need to make restrictions that forbid anyone to
118
+ deny you these rights or to ask you to surrender the rights. These
119
+ restrictions translate to certain responsibilities for you if you
120
+ distribute copies of the software, or if you modify it.
121
+ </p>
122
+ <p>
123
+ For example, if you distribute copies of such a program, whether gratis or
124
+ for a fee, you must give the recipients all the rights that you have. You
125
+ must make sure that they, too, receive or can get the source code. And you
126
+ must show them these terms so they know their rights.
127
+ </p>
128
+ <p>
129
+ We protect your rights with two steps: (1) copyright the software, and (2)
130
+ offer you this license which gives you legal permission to copy, distribute
131
+ and/or modify the software.
132
+ </p>
133
+ <p>
134
+ Also, for each author&#8216;s protection and ours, we want to make certain
135
+ that everyone understands that there is no warranty for this free software.
136
+ If the software is modified by someone else and passed on, we want its
137
+ recipients to know that what they have is not the original, so that any
138
+ problems introduced by others will not reflect on the original
139
+ authors&#8217; reputations.
140
+ </p>
141
+ <p>
142
+ Finally, any free program is threatened constantly by software patents. We
143
+ wish to avoid the danger that redistributors of a free program will
144
+ individually obtain patent licenses, in effect making the program
145
+ proprietary. To prevent this, we have made it clear that any patent must be
146
+ licensed for everyone&#8216;s free use or not licensed at all.
147
+ </p>
148
+ <pre>
149
+ The precise terms and conditions for copying, distribution and
150
+ </pre>
151
+ <p>
152
+ modification follow.
153
+ </p>
154
+ <pre>
155
+ GNU GENERAL PUBLIC LICENSE
156
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
157
+
158
+ 0. This License applies to any program or other work which contains
159
+ </pre>
160
+ <p>
161
+ a notice placed by the copyright holder saying it may be distributed under
162
+ the terms of this General Public License. The &quot;Program&quot;, below,
163
+ refers to any such program or work, and a &quot;work based on the
164
+ Program&quot; means either the Program or any derivative work under
165
+ copyright law: that is to say, a work containing the Program or a portion
166
+ of it, either verbatim or with modifications and/or translated into another
167
+ language. (Hereinafter, translation is included without limitation in the
168
+ term &quot;modification&quot;.) Each licensee is addressed as
169
+ &quot;you&quot;.
170
+ </p>
171
+ <p>
172
+ Activities other than copying, distribution and modification are not
173
+ covered by this License; they are outside its scope. The act of running the
174
+ Program is not restricted, and the output from the Program is covered only
175
+ if its contents constitute a work based on the Program (independent of
176
+ having been made by running the Program). Whether that is true depends on
177
+ what the Program does.
178
+ </p>
179
+ <pre>
180
+ 1. You may copy and distribute verbatim copies of the Program's
181
+ source code as you receive it, in any medium, provided that you
182
+ conspicuously and appropriately publish on each copy an appropriate
183
+ copyright notice and disclaimer of warranty; keep intact all the
184
+ notices that refer to this License and to the absence of any warranty;
185
+ and give any other recipients of the Program a copy of this License
186
+ along with the Program.
187
+
188
+ You may charge a fee for the physical act of transferring a copy, and
189
+ you may at your option offer warranty protection in exchange for a fee.
190
+
191
+ 2. You may modify your copy or copies of the Program or any portion
192
+ of it, thus forming a work based on the Program, and copy and
193
+ distribute such modifications or work under the terms of Section 1
194
+ above, provided that you also meet all of these conditions:
195
+
196
+ a) You must cause the modified files to carry prominent notices
197
+ stating that you changed the files and the date of any change.
198
+
199
+ b) You must cause any work that you distribute or publish, that in
200
+ whole or in part contains or is derived from the Program or any
201
+ part thereof, to be licensed as a whole at no charge to all third
202
+ parties under the terms of this License.
203
+
204
+ c) If the modified program normally reads commands interactively
205
+ when run, you must cause it, when started running for such
206
+ interactive use in the most ordinary way, to print or display an
207
+ announcement including an appropriate copyright notice and a
208
+ notice that there is no warranty (or else, saying that you provide
209
+ a warranty) and that users may redistribute the program under
210
+ these conditions, and telling the user how to view a copy of this
211
+ License. (Exception: if the Program itself is interactive but
212
+ does not normally print such an announcement, your work based on
213
+ the Program is not required to print an announcement.)
214
+
215
+ These requirements apply to the modified work as a whole. If
216
+ identifiable sections of that work are not derived from the Program,
217
+ and can be reasonably considered independent and separate works in
218
+ themselves, then this License, and its terms, do not apply to those
219
+ sections when you distribute them as separate works. But when you
220
+ distribute the same sections as part of a whole which is a work based
221
+ on the Program, the distribution of the whole must be on the terms of
222
+ this License, whose permissions for other licensees extend to the
223
+ entire whole, and thus to each and every part regardless of who wrote it.
224
+
225
+ Thus, it is not the intent of this section to claim rights or contest
226
+ your rights to work written entirely by you; rather, the intent is to
227
+ exercise the right to control the distribution of derivative or
228
+ collective works based on the Program.
229
+
230
+ In addition, mere aggregation of another work not based on the Program
231
+ with the Program (or with a work based on the Program) on a volume of
232
+ a storage or distribution medium does not bring the other work under
233
+ the scope of this License.
234
+
235
+ 3. You may copy and distribute the Program (or a work based on it,
236
+ under Section 2) in object code or executable form under the terms of
237
+ Sections 1 and 2 above provided that you also do one of the following:
238
+
239
+ a) Accompany it with the complete corresponding machine-readable
240
+ source code, which must be distributed under the terms of Sections
241
+ 1 and 2 above on a medium customarily used for software interchange; or,
242
+
243
+ b) Accompany it with a written offer, valid for at least three
244
+ years, to give any third party, for a charge no more than your
245
+ cost of physically performing source distribution, a complete
246
+ machine-readable copy of the corresponding source code, to be
247
+ distributed under the terms of Sections 1 and 2 above on a medium
248
+ customarily used for software interchange; or,
249
+
250
+ c) Accompany it with the information you received as to the offer
251
+ to distribute corresponding source code. (This alternative is
252
+ allowed only for noncommercial distribution and only if you
253
+ received the program in object code or executable form with such
254
+ an offer, in accord with Subsection b above.)
255
+
256
+ The source code for a work means the preferred form of the work for
257
+ making modifications to it. For an executable work, complete source
258
+ code means all the source code for all modules it contains, plus any
259
+ associated interface definition files, plus the scripts used to
260
+ control compilation and installation of the executable. However, as a
261
+ special exception, the source code distributed need not include
262
+ anything that is normally distributed (in either source or binary
263
+ form) with the major components (compiler, kernel, and so on) of the
264
+ operating system on which the executable runs, unless that component
265
+ itself accompanies the executable.
266
+
267
+ If distribution of executable or object code is made by offering
268
+ access to copy from a designated place, then offering equivalent
269
+ access to copy the source code from the same place counts as
270
+ distribution of the source code, even though third parties are not
271
+ compelled to copy the source along with the object code.
272
+
273
+ 4. You may not copy, modify, sublicense, or distribute the Program
274
+ except as expressly provided under this License. Any attempt
275
+ otherwise to copy, modify, sublicense or distribute the Program is
276
+ void, and will automatically terminate your rights under this License.
277
+ However, parties who have received copies, or rights, from you under
278
+ this License will not have their licenses terminated so long as such
279
+ parties remain in full compliance.
280
+
281
+ 5. You are not required to accept this License, since you have not
282
+ signed it. However, nothing else grants you permission to modify or
283
+ distribute the Program or its derivative works. These actions are
284
+ prohibited by law if you do not accept this License. Therefore, by
285
+ modifying or distributing the Program (or any work based on the
286
+ Program), you indicate your acceptance of this License to do so, and
287
+ all its terms and conditions for copying, distributing or modifying
288
+ the Program or works based on it.
289
+
290
+ 6. Each time you redistribute the Program (or any work based on the
291
+ Program), the recipient automatically receives a license from the
292
+ original licensor to copy, distribute or modify the Program subject to
293
+ these terms and conditions. You may not impose any further
294
+ restrictions on the recipients' exercise of the rights granted herein.
295
+ You are not responsible for enforcing compliance by third parties to
296
+ this License.
297
+
298
+ 7. If, as a consequence of a court judgment or allegation of patent
299
+ infringement or for any other reason (not limited to patent issues),
300
+ conditions are imposed on you (whether by court order, agreement or
301
+ otherwise) that contradict the conditions of this License, they do not
302
+ excuse you from the conditions of this License. If you cannot
303
+ distribute so as to satisfy simultaneously your obligations under this
304
+ License and any other pertinent obligations, then as a consequence you
305
+ may not distribute the Program at all. For example, if a patent
306
+ license would not permit royalty-free redistribution of the Program by
307
+ all those who receive copies directly or indirectly through you, then
308
+ the only way you could satisfy both it and this License would be to
309
+ refrain entirely from distribution of the Program.
310
+
311
+ If any portion of this section is held invalid or unenforceable under
312
+ any particular circumstance, the balance of the section is intended to
313
+ apply and the section as a whole is intended to apply in other
314
+ circumstances.
315
+
316
+ It is not the purpose of this section to induce you to infringe any
317
+ patents or other property right claims or to contest validity of any
318
+ such claims; this section has the sole purpose of protecting the
319
+ integrity of the free software distribution system, which is
320
+ implemented by public license practices. Many people have made
321
+ generous contributions to the wide range of software distributed
322
+ through that system in reliance on consistent application of that
323
+ system; it is up to the author/donor to decide if he or she is willing
324
+ to distribute software through any other system and a licensee cannot
325
+ impose that choice.
326
+
327
+ This section is intended to make thoroughly clear what is believed to
328
+ be a consequence of the rest of this License.
329
+
330
+ 8. If the distribution and/or use of the Program is restricted in
331
+ certain countries either by patents or by copyrighted interfaces, the
332
+ original copyright holder who places the Program under this License
333
+ may add an explicit geographical distribution limitation excluding
334
+ those countries, so that distribution is permitted only in or among
335
+ countries not thus excluded. In such case, this License incorporates
336
+ the limitation as if written in the body of this License.
337
+
338
+ 9. The Free Software Foundation may publish revised and/or new versions
339
+ of the General Public License from time to time. Such new versions will
340
+ be similar in spirit to the present version, but may differ in detail to
341
+ address new problems or concerns.
342
+
343
+ Each version is given a distinguishing version number. If the Program
344
+ specifies a version number of this License which applies to it and &quot;any
345
+ later version&quot;, you have the option of following the terms and conditions
346
+ either of that version or of any later version published by the Free
347
+ Software Foundation. If the Program does not specify a version number of
348
+ this License, you may choose any version ever published by the Free Software
349
+ Foundation.
350
+
351
+ 10. If you wish to incorporate parts of the Program into other free
352
+ programs whose distribution conditions are different, write to the author
353
+ to ask for permission. For software which is copyrighted by the Free
354
+ Software Foundation, write to the Free Software Foundation; we sometimes
355
+ make exceptions for this. Our decision will be guided by the two goals
356
+ of preserving the free status of all derivatives of our free software and
357
+ of promoting the sharing and reuse of software generally.
358
+
359
+ NO WARRANTY
360
+
361
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
362
+ FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
363
+ OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
364
+ PROVIDE THE PROGRAM &quot;AS IS&quot; WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
365
+ OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
366
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
367
+ TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
368
+ PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
369
+ REPAIR OR CORRECTION.
370
+
371
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
372
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
373
+ REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
374
+ INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
375
+ OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
376
+ TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
377
+ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
378
+ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
379
+ POSSIBILITY OF SUCH DAMAGES.
380
+
381
+ END OF TERMS AND CONDITIONS
382
+
383
+ How to Apply These Terms to Your New Programs
384
+
385
+ If you develop a new program, and you want it to be of the greatest
386
+ possible use to the public, the best way to achieve this is to make it
387
+ free software which everyone can redistribute and change under these terms.
388
+
389
+ To do so, attach the following notices to the program. It is safest
390
+ to attach them to the start of each source file to most effectively
391
+ convey the exclusion of warranty; and each file should have at least
392
+ the &quot;copyright&quot; line and a pointer to where the full notice is found.
393
+
394
+ &lt;one line to give the program's name and a brief idea of what it does.&gt;
395
+ Copyright (C) &lt;year&gt; &lt;name of author&gt;
396
+
397
+ This program is free software; you can redistribute it and/or modify
398
+ it under the terms of the GNU General Public License as published by
399
+ the Free Software Foundation; either version 2 of the License, or
400
+ (at your option) any later version.
401
+
402
+ This program is distributed in the hope that it will be useful,
403
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
404
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
405
+ GNU General Public License for more details.
406
+
407
+ You should have received a copy of the GNU General Public License
408
+ along with this program; if not, write to the Free Software
409
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
410
+
411
+ Also add information on how to contact you by electronic and paper mail.
412
+
413
+ If the program is interactive, make it output a short notice like this
414
+ when it starts in an interactive mode:
415
+
416
+ Gnomovision version 69, Copyright (C) year name of author
417
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
418
+ This is free software, and you are welcome to redistribute it
419
+ under certain conditions; type `show c' for details.
420
+
421
+ The hypothetical commands `show w' and `show c' should show the appropriate
422
+ parts of the General Public License. Of course, the commands you use may
423
+ be called something other than `show w' and `show c'; they could even be
424
+ mouse-clicks or menu items--whatever suits your program.
425
+
426
+ You should also get your employer (if you work as a programmer) or your
427
+ school, if any, to sign a &quot;copyright disclaimer&quot; for the program, if
428
+ necessary. Here is a sample; alter the names:
429
+
430
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
431
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
432
+
433
+ &lt;signature of Ty Coon&gt;, 1 April 1989
434
+ Ty Coon, President of Vice
435
+
436
+ This General Public License does not permit incorporating your program into
437
+ proprietary programs. If your program is a subroutine library, you may
438
+ consider it more useful to permit linking proprietary applications with the
439
+ library. If this is what you want to do, use the GNU Library General
440
+ Public License instead of this License.
441
+ </pre>
442
+ </div>
443
+
444
+
445
+
446
+
447
+
448
+
449
+
450
+
451
+
452
+ </div>
453
+
454
+ </div>
455
+
456
+ </body>
457
+ </html>