quarry 0.3.0 → 0.4.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.
Files changed (313) hide show
  1. data/CHANGES +40 -3
  2. data/MANIFEST +290 -78
  3. data/README +51 -37
  4. data/RELEASE +12 -0
  5. data/VERSION +1 -1
  6. data/bin/quarry +117 -0
  7. data/bin/quarry-doc +26 -0
  8. data/bin/ruby-break +10 -0
  9. data/bin/{xact-ruby → ruby-xacto} +0 -0
  10. data/doc/assets/images/clipboard.jpg +0 -0
  11. data/doc/assets/images/clipboard2.png +0 -0
  12. data/doc/assets/images/darksilver.png +0 -0
  13. data/doc/assets/images/icon/book.jpg +0 -0
  14. data/doc/assets/images/icon/download.gif +0 -0
  15. data/doc/assets/images/icon/letter_r.png +0 -0
  16. data/doc/assets/images/icon/license.png +0 -0
  17. data/doc/assets/images/icon/software.png +0 -0
  18. data/doc/assets/images/icon/source.png +0 -0
  19. data/doc/assets/images/miner.jpg +0 -0
  20. data/doc/assets/images/rbrylmtrx.png +0 -0
  21. data/doc/assets/images/ruby.gif +0 -0
  22. data/doc/assets/images/runneth.png +0 -0
  23. data/doc/assets/images/silver.gif +0 -0
  24. data/doc/assets/images/test.jpg +0 -0
  25. data/doc/assets/jquery/jquery.js +1 -0
  26. data/doc/assets/jquery/jquery.tabs.js +1 -0
  27. data/doc/assets/rdoc_ad.html +12 -0
  28. data/doc/assets/styles/index.css +138 -0
  29. data/doc/guide/stubs.md +125 -0
  30. data/doc/index.html +285 -0
  31. data/doc/log/bstats/stats.html +39 -0
  32. data/doc/log/notes.xml +32 -0
  33. data/doc/log/stats.html +25 -0
  34. data/doc/log/stats.log +14 -0
  35. data/doc/log/syntax.log +0 -0
  36. data/doc/rdoc/classes/Assertion/False.html +151 -106
  37. data/doc/rdoc/classes/Assertion/True.html +128 -113
  38. data/doc/rdoc/classes/Assertion.html +147 -77
  39. data/doc/rdoc/classes/Kernel.html +84 -65
  40. data/doc/rdoc/classes/Method.html +123 -92
  41. data/doc/rdoc/classes/Object.html +468 -115
  42. data/doc/rdoc/classes/Quarry/Break.html +231 -0
  43. data/doc/rdoc/classes/Quarry/Command.html +443 -0
  44. data/doc/rdoc/classes/Quarry/Extract.html +215 -0
  45. data/doc/rdoc/classes/Quarry/MethodProbe.html +203 -145
  46. data/doc/rdoc/classes/Quarry/Mock/Delegator.html +179 -0
  47. data/doc/rdoc/classes/Quarry/Mock/Setter.html +175 -0
  48. data/doc/rdoc/classes/Quarry/Mock.html +211 -67
  49. data/doc/rdoc/classes/Quarry/Spec/Comment.html +237 -0
  50. data/doc/rdoc/classes/Quarry/Spec/Config.html +257 -0
  51. data/doc/rdoc/classes/Quarry/Spec/Context.html +154 -0
  52. data/doc/rdoc/classes/Quarry/Spec/Document.html +382 -0
  53. data/doc/rdoc/classes/Quarry/Spec/Header.html +195 -0
  54. data/doc/rdoc/classes/Quarry/Spec/Macro.html +166 -0
  55. data/doc/rdoc/classes/Quarry/Spec/Markup.html +279 -0
  56. data/doc/rdoc/classes/Quarry/Spec/Reporter/DotProgress.html +234 -0
  57. data/doc/rdoc/classes/Quarry/Spec/Reporter/Summary.html +294 -0
  58. data/doc/rdoc/classes/Quarry/Spec/Reporter/Verbatim.html +311 -0
  59. data/doc/rdoc/classes/Quarry/Spec/Runner.html +352 -0
  60. data/doc/rdoc/classes/Quarry/Spec/Step.html +190 -0
  61. data/doc/rdoc/classes/Quarry/Spec/Template.html +205 -0
  62. data/doc/rdoc/classes/Quarry/Stub/Delegator.html +179 -0
  63. data/doc/rdoc/classes/Quarry/Stub/Setter.html +175 -0
  64. data/doc/rdoc/classes/Quarry/Stub.html +224 -0
  65. data/doc/rdoc/classes/Quarry.html +153 -154
  66. data/doc/rdoc/created.rid +1 -1
  67. data/doc/rdoc/files/CHANGES.html +126 -76
  68. data/doc/rdoc/files/COPYING.html +84 -73
  69. data/doc/rdoc/files/README.html +135 -111
  70. data/doc/rdoc/files/RELEASE.html +122 -0
  71. data/doc/rdoc/files/VERSION.html +85 -74
  72. data/doc/rdoc/files/bin/quarry-doc.html +109 -0
  73. data/doc/rdoc/files/bin/quarry.html +109 -0
  74. data/doc/rdoc/files/bin/ruby-break.html +108 -0
  75. data/doc/rdoc/files/bin/ruby-xacto.html +101 -0
  76. data/doc/rdoc/files/lib/quarry/assert_rb.html +155 -0
  77. data/doc/rdoc/files/lib/quarry/break_rb.html +101 -0
  78. data/doc/rdoc/files/lib/quarry/extract_rb.html +108 -0
  79. data/doc/rdoc/files/lib/quarry/loadmonitor_rb.html +80 -71
  80. data/doc/rdoc/files/lib/quarry/spec/config_rb.html +101 -0
  81. data/doc/rdoc/files/lib/quarry/spec/context_rb.html +101 -0
  82. data/doc/rdoc/files/lib/quarry/spec/document_rb.html +111 -0
  83. data/doc/rdoc/files/lib/quarry/spec/markup_rb.html +108 -0
  84. data/doc/rdoc/files/lib/quarry/spec/reporter/dotprogress_rb.html +108 -0
  85. data/doc/rdoc/files/lib/quarry/spec/reporter/summary_rb.html +108 -0
  86. data/doc/rdoc/files/lib/quarry/spec/reporter/verbatim_rb.html +108 -0
  87. data/doc/rdoc/files/lib/quarry/spec/reporter_rb.html +109 -0
  88. data/doc/rdoc/files/lib/quarry/spec/runner_rb.html +109 -0
  89. data/doc/rdoc/files/lib/quarry/spec/step_rb.html +101 -0
  90. data/doc/rdoc/files/lib/quarry/spec/template_rhtml.html +228 -0
  91. data/doc/rdoc/files/lib/quarry/spec_rb.html +113 -0
  92. data/doc/rdoc/files/lib/quarry/stub/mock_rb.html +101 -0
  93. data/doc/rdoc/files/lib/quarry/stub/probe_rb.html +122 -0
  94. data/doc/rdoc/files/lib/quarry/stub/spec_txt.html +118 -0
  95. data/doc/rdoc/files/lib/quarry/stub/stub_rb.html +101 -0
  96. data/doc/rdoc/fr_class_index.html +48 -52
  97. data/doc/rdoc/fr_file_index.html +47 -57
  98. data/doc/rdoc/fr_method_index.html +109 -69
  99. data/doc/rdoc/index.html +12 -14
  100. data/doc/rdoc/rdoc-style.css +154 -121
  101. data/doc/ri/Assertion/False/cdesc-False.yaml +5 -3
  102. data/doc/ri/Assertion/True/cdesc-True.yaml +4 -2
  103. data/doc/ri/Assertion/True/message-c.yaml +2 -2
  104. data/doc/ri/Assertion/True/message-i.yaml +1 -1
  105. data/doc/ri/Assertion/True/method_missing-i.yaml +4 -3
  106. data/doc/ri/Assertion/cdesc-Assertion.yaml +24 -1
  107. data/doc/ri/Object/assert%21-i.yaml +7 -4
  108. data/doc/ri/Object/assert-i.yaml +3 -2
  109. data/doc/ri/Object/assert_raises%21-i.yaml +12 -0
  110. data/doc/ri/Object/assert_raises-i.yaml +15 -0
  111. data/doc/ri/Object/cdesc-Object.yaml +24 -2
  112. data/doc/ri/{Quarry/Design/Specification/outline-i.yaml → Object/mock-i.yaml} +4 -4
  113. data/doc/ri/Object/refute-i.yaml +13 -0
  114. data/doc/ri/Object/refute_raises-i.yaml +17 -0
  115. data/doc/ri/Object/remove-i.yaml +12 -0
  116. data/doc/ri/{Quarry/Design/check-c.yaml → Object/should-i.yaml} +4 -4
  117. data/doc/ri/Object/should_not-i.yaml +12 -0
  118. data/doc/ri/Object/should_not_raise-i.yaml +12 -0
  119. data/doc/ri/Object/should_raise-i.yaml +12 -0
  120. data/doc/ri/{Quarry/Mock/Object/mock-c.yaml → Object/stub-i.yaml} +5 -5
  121. data/doc/ri/{Module/cdesc-Module.yaml → Quarry/Break/cdesc-Break.yaml} +10 -8
  122. data/doc/ri/Quarry/Break/edit-i.yaml +11 -0
  123. data/doc/ri/Quarry/Break/new-c.yaml +11 -0
  124. data/doc/ri/Quarry/Extract/cdesc-Extract.yaml +26 -0
  125. data/doc/ri/Quarry/Extract/create_test-i.yaml +12 -0
  126. data/doc/ri/Quarry/Extract/extract_test_from_file-i.yaml +12 -0
  127. data/doc/ri/Quarry/Extract/test_extract-i.yaml +18 -0
  128. data/doc/ri/Quarry/Mock/Delegator/cdesc-Delegator.yaml +20 -0
  129. data/doc/ri/Quarry/{Design/Specification/Context → Mock/Delegator}/method_missing-i.yaml +2 -2
  130. data/doc/ri/Quarry/{Design/specification-c.yaml → Mock/Delegator/new-c.yaml} +3 -3
  131. data/doc/ri/{Module/method_added-i.yaml → Quarry/Mock/Setter/%3d%3d-i.yaml} +3 -3
  132. data/doc/ri/Quarry/Mock/Setter/cdesc-Setter.yaml +18 -0
  133. data/doc/ri/Quarry/Mock/Setter/new-c.yaml +10 -0
  134. data/doc/ri/Quarry/Mock/__table__-i.yaml +11 -0
  135. data/doc/ri/Quarry/Mock/cdesc-Mock.yaml +17 -7
  136. data/doc/ri/Quarry/Mock/method_missing-i.yaml +12 -0
  137. data/doc/ri/Quarry/{Design/outline-c.yaml → Mock/new-c.yaml} +2 -2
  138. data/doc/ri/Quarry/Spec/Comment/cdesc-Comment.yaml +33 -0
  139. data/doc/ri/Quarry/Spec/Comment/macro%3f-i.yaml +12 -0
  140. data/doc/ri/Quarry/Spec/Comment/new-c.yaml +10 -0
  141. data/doc/ri/Quarry/Spec/Comment/type-i.yaml +12 -0
  142. data/doc/ri/Quarry/Spec/Config/after-i.yaml +12 -0
  143. data/doc/ri/Quarry/Spec/Config/after_spec-i.yaml +12 -0
  144. data/doc/ri/Quarry/Spec/Config/before-i.yaml +12 -0
  145. data/doc/ri/Quarry/Spec/Config/before_spec-i.yaml +12 -0
  146. data/doc/ri/Quarry/{Design/Specification/Context/cdesc-Context.yaml → Spec/Config/cdesc-Config.yaml} +11 -9
  147. data/doc/ri/Quarry/{Mock/Object/mocks-c.yaml → Spec/Config/new-c.yaml} +2 -2
  148. data/doc/ri/Quarry/Spec/Context/cdesc-Context.yaml +21 -0
  149. data/doc/ri/Quarry/{Design/specifications-c.yaml → Spec/Context/new-c.yaml} +2 -2
  150. data/doc/ri/Quarry/Spec/Document/cdesc-Document.yaml +76 -0
  151. data/doc/ri/Quarry/Spec/Document/generate-i.yaml +12 -0
  152. data/doc/ri/Quarry/{Mock/Object/echo-c.yaml → Spec/Document/new-c.yaml} +4 -4
  153. data/doc/ri/Quarry/Spec/Document/quiet%3f-i.yaml +12 -0
  154. data/doc/ri/Quarry/Spec/Document/require_rdoc-i.yaml +11 -0
  155. data/doc/ri/Quarry/Spec/Document/save-i.yaml +12 -0
  156. data/doc/ri/Quarry/Spec/Document/template-i.yaml +12 -0
  157. data/doc/ri/Quarry/Spec/Header/cdesc-Header.yaml +30 -0
  158. data/doc/ri/Quarry/Spec/Header/new-c.yaml +10 -0
  159. data/doc/ri/Quarry/Spec/Macro/cdesc-Macro.yaml +22 -0
  160. data/doc/ri/Quarry/Spec/Macro/new-c.yaml +10 -0
  161. data/doc/ri/Quarry/Spec/Markup/cdesc-Markup.yaml +31 -0
  162. data/doc/ri/Quarry/Spec/Markup/description-i.yaml +11 -0
  163. data/doc/ri/Quarry/Spec/Markup/new-c.yaml +11 -0
  164. data/doc/ri/Quarry/Spec/Markup/parse-i.yaml +11 -0
  165. data/doc/ri/Quarry/Spec/Markup/parse_section-i.yaml +11 -0
  166. data/doc/ri/Quarry/Spec/Reporter/DotProgress/cdesc-DotProgress.yaml +21 -0
  167. data/doc/ri/Quarry/{Design/Specification/Context/specifications-i.yaml → Spec/Reporter/DotProgress/report_intro-i.yaml} +2 -2
  168. data/doc/ri/Quarry/Spec/Reporter/DotProgress/report_step-i.yaml +10 -0
  169. data/doc/ri/Quarry/Spec/Reporter/DotProgress/report_summary-i.yaml +16 -0
  170. data/doc/ri/Quarry/Spec/Reporter/Summary/cdesc-Summary.yaml +31 -0
  171. data/doc/ri/Quarry/Spec/Reporter/Summary/report_comment-i.yaml +10 -0
  172. data/doc/ri/Quarry/Spec/Reporter/Summary/report_error-i.yaml +10 -0
  173. data/doc/ri/Quarry/Spec/Reporter/Summary/report_fail-i.yaml +10 -0
  174. data/doc/ri/Quarry/Spec/Reporter/Summary/report_header-i.yaml +10 -0
  175. data/doc/ri/Quarry/Spec/Reporter/Summary/report_macro-i.yaml +10 -0
  176. data/doc/ri/Quarry/{Design/Specification/Context/before-i.yaml → Spec/Reporter/Summary/report_pass-i.yaml} +3 -3
  177. data/doc/ri/Quarry/Spec/Reporter/Verbatim/cdesc-Verbatim.yaml +29 -0
  178. data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_comment-i.yaml +10 -0
  179. data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_error-i.yaml +10 -0
  180. data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_fail-i.yaml +10 -0
  181. data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_header-i.yaml +16 -0
  182. data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_macro-i.yaml +10 -0
  183. data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_pass-i.yaml +10 -0
  184. data/doc/ri/Quarry/Spec/Reporter/cdesc-Reporter.yaml +20 -0
  185. data/doc/ri/Quarry/Spec/Runner/cdesc-Runner.yaml +47 -0
  186. data/doc/ri/Quarry/{Design/Specification → Spec/Runner}/check-i.yaml +3 -3
  187. data/doc/ri/Quarry/Spec/Runner/check_spec-i.yaml +12 -0
  188. data/doc/ri/Quarry/{Design/Specification → Spec/Runner}/new-c.yaml +2 -2
  189. data/doc/ri/Quarry/Spec/Runner/run_step-i.yaml +12 -0
  190. data/doc/ri/Quarry/Spec/Step/cdesc-Step.yaml +30 -0
  191. data/doc/ri/Quarry/Spec/Step/new-c.yaml +10 -0
  192. data/doc/ri/Quarry/Spec/Template/cdesc-Template.yaml +31 -0
  193. data/doc/ri/Quarry/Spec/Template/new-c.yaml +11 -0
  194. data/doc/ri/Quarry/{Design/Specification/Context/after-i.yaml → Spec/Template/parse_template-i.yaml} +3 -3
  195. data/doc/ri/Quarry/Spec/cdesc-Spec.yaml +15 -0
  196. data/doc/ri/Quarry/Stub/Delegator/cdesc-Delegator.yaml +20 -0
  197. data/doc/ri/Quarry/Stub/Delegator/method_missing-i.yaml +10 -0
  198. data/doc/ri/Quarry/Stub/Delegator/new-c.yaml +10 -0
  199. data/doc/ri/Quarry/Stub/Setter/%3d%3d-i.yaml +10 -0
  200. data/doc/ri/Quarry/Stub/Setter/cdesc-Setter.yaml +18 -0
  201. data/doc/ri/Quarry/Stub/Setter/new-c.yaml +10 -0
  202. data/doc/ri/Quarry/Stub/__table__-i.yaml +11 -0
  203. data/doc/ri/Quarry/Stub/cdesc-Stub.yaml +23 -0
  204. data/doc/ri/Quarry/Stub/method_missing-i.yaml +11 -0
  205. data/doc/ri/Quarry/Stub/new-c.yaml +10 -0
  206. data/doc/ri/Quarry/cdesc-Quarry.yaml +2 -3
  207. data/doc/ri/created.rid +1 -1
  208. data/doc/spec/stub.html +394 -0
  209. data/lib/quarry/assert.rb +198 -0
  210. data/lib/quarry/break.rb +51 -0
  211. data/lib/quarry/extract.rb +135 -0
  212. data/lib/quarry/loadmonitor.rb +6 -1
  213. data/lib/quarry/spec/config.rb +32 -0
  214. data/lib/quarry/spec/context.rb +19 -0
  215. data/lib/quarry/spec/document.rb +130 -0
  216. data/lib/quarry/spec/markup.rb +85 -0
  217. data/lib/quarry/spec/reporter/dotprogress.rb +66 -0
  218. data/lib/quarry/spec/reporter/summary.rb +74 -0
  219. data/lib/quarry/spec/reporter/verbatim.rb +87 -0
  220. data/lib/quarry/spec/reporter.rb +74 -0
  221. data/lib/quarry/spec/runner.rb +127 -0
  222. data/lib/quarry/spec/step.rb +78 -0
  223. data/lib/quarry/spec/template.rhtml +116 -0
  224. data/lib/quarry/spec.rb +7 -0
  225. data/lib/quarry/stub/mock.rb +94 -0
  226. data/lib/quarry/{methodprobe.rb → stub/probe.rb} +0 -0
  227. data/lib/quarry/stub/spec.txt +113 -0
  228. data/lib/quarry/stub/stub.rb +93 -0
  229. data/meta/abstract +5 -0
  230. data/meta/authors +1 -0
  231. data/meta/created +1 -0
  232. data/meta/homepage +1 -0
  233. data/meta/requires +1 -0
  234. data/meta/summary +1 -0
  235. data/spec/basic.rd +20 -0
  236. data/spec/complex.rd +50 -0
  237. data/spec/mock.rd +53 -0
  238. data/spec/stub.rd +61 -0
  239. data/{lib/quarry → work/consider}/document.rb +0 -0
  240. data/work/consider/fixture.rb +153 -0
  241. data/{lib/quarry → work/deprecated}/assert/must.rb +1 -0
  242. data/{lib/quarry → work/deprecated}/assert/should.rb +0 -0
  243. data/work/deprecated/build.rb +82 -0
  244. data/work/deprecated/mock/file.rb +11 -0
  245. data/work/deprecated/mock/mock.0.rb +77 -0
  246. data/work/deprecated/overlay.rb +64 -0
  247. data/work/deprecated/spec.rb +195 -0
  248. data/work/deprecated/stub/stub.0.rb +180 -0
  249. data/work/deprecated/stub/stub.1.rb +114 -0
  250. data/work/deprecated/stub/test_stub.rb +66 -0
  251. data/work/deprecated/test/case.rb +141 -0
  252. data/work/sandbox/assert.rb +100 -0
  253. data/work/sandbox/bug.rb +49 -0
  254. data/work/sandbox/build/announce.rb +213 -0
  255. data/work/sandbox/build/check.rb +109 -0
  256. data/work/sandbox/build/gem.rb +235 -0
  257. data/work/sandbox/build/make.rb +118 -0
  258. data/work/sandbox/build/manpage.rb +201 -0
  259. data/work/sandbox/build/notes.rb +214 -0
  260. data/work/sandbox/build/pack.rb +228 -0
  261. data/work/sandbox/build/rdoc.rb +289 -0
  262. data/work/sandbox/build/rubyforge.rb +91 -0
  263. data/work/sandbox/build/sign.rb +241 -0
  264. data/work/sandbox/build/stamp.rb +37 -0
  265. data/work/sandbox/build/stats.rb +154 -0
  266. data/work/sandbox/build/svn.rb +193 -0
  267. data/work/sandbox/build/test.rb +521 -0
  268. data/work/sandbox/design.rb +200 -0
  269. data/work/sandbox/iface_scanner.rb +102 -0
  270. data/work/sandbox/testunit/assertions/assert_has_keys.rb +38 -0
  271. data/work/sandbox/testunit/assertions/assert_has_only_keys.rb +38 -0
  272. data/work/sandbox/testunit/unit.rb +104 -0
  273. data/work/sandbox/unitspec.rb +54 -0
  274. data/work/sandbox/x_isotest.rb +532 -0
  275. metadata +318 -93
  276. data/METADATA +0 -22
  277. data/NEWS +0 -8
  278. data/bin/rubybreak +0 -3
  279. data/demo/spec/demo_check.rb +0 -21
  280. data/demo/spec/demo_outline.rb +0 -25
  281. data/demo/test/demo_run.rb +0 -21
  282. data/doc/manual.html2 +0 -1416
  283. data/doc/rdoc/classes/Module.html +0 -165
  284. data/doc/rdoc/classes/Quarry/Design/Specification/Context.html +0 -174
  285. data/doc/rdoc/classes/Quarry/Design/Specification.html +0 -265
  286. data/doc/rdoc/classes/Quarry/Design.html +0 -170
  287. data/doc/rdoc/classes/Quarry/Mock/Object.html +0 -276
  288. data/doc/rdoc/files/MANIFEST.html +0 -630
  289. data/doc/rdoc/files/METADATA.html +0 -92
  290. data/doc/rdoc/files/NEWS.html +0 -99
  291. data/doc/rdoc/files/bin/rubybreak.html +0 -96
  292. data/doc/rdoc/files/bin/xact-ruby.html +0 -92
  293. data/doc/rdoc/files/lib/quarry/assert/must_rb.html +0 -96
  294. data/doc/rdoc/files/lib/quarry/assert/should_rb.html +0 -96
  295. data/doc/rdoc/files/lib/quarry/assertion_rb.html +0 -96
  296. data/doc/rdoc/files/lib/quarry/breakout_rb.html +0 -144
  297. data/doc/rdoc/files/lib/quarry/design/spec_rb.html +0 -100
  298. data/doc/rdoc/files/lib/quarry/document_rb.html +0 -92
  299. data/doc/rdoc/files/lib/quarry/methodprobe_rb.html +0 -111
  300. data/doc/rdoc/files/lib/quarry/mock/object_rb.html +0 -123
  301. data/doc/rdoc/files/lib/quarry/mockery_rb.html +0 -115
  302. data/doc/ri/Module/doc-i.yaml +0 -16
  303. data/doc/ri/Quarry/Design/Specification/cdesc-Specification.yaml +0 -44
  304. data/doc/ri/Quarry/Design/cdesc-Design.yaml +0 -22
  305. data/doc/ri/Quarry/Mock/Object/cdesc-Object.yaml +0 -52
  306. data/doc/ri/Quarry/Mock/Object/keys-c.yaml +0 -12
  307. data/doc/ri/Quarry/Mock/Object/spin-c.yaml +0 -12
  308. data/doc/ri/Quarry/Mockery-i.yaml +0 -12
  309. data/lib/quarry/assertion.rb +0 -95
  310. data/lib/quarry/breakout.rb +0 -45
  311. data/lib/quarry/design/spec.rb +0 -197
  312. data/lib/quarry/mock/object.rb +0 -169
  313. data/lib/quarry/mockery.rb +0 -85
@@ -0,0 +1,118 @@
1
+
2
+ # The Make tool routes to extension Makefile(s).
3
+ # At this point it's designed to support extconf.rb design.
4
+ #
5
+ # TODO Perhaps make a true compiler class in the future.
6
+
7
+ require 'reap/tool'
8
+
9
+ module Reap
10
+ module Tools
11
+
12
+ class Make < Tool
13
+
14
+ attr_accessor :extensions
15
+
16
+ def extensions
17
+ @extensions ||= 'ext/**/extconf.rb'
18
+ end
19
+
20
+ # Check to see if this project has extensions that need to be compiled.
21
+
22
+ def compiles?
23
+ return false if extension_directories.empty?
24
+ end
25
+
26
+ # Compile extensions.
27
+
28
+ def compile
29
+ extension_directories.each do |directory|
30
+ cd(directory) do
31
+ sh "ruby extconf.rb" # prepare
32
+ sh "make"
33
+ end
34
+ end
35
+ end
36
+
37
+ alias_method :call, :compile
38
+
39
+ # Run make config.
40
+
41
+ def config
42
+ extension_directories.each do |directory|
43
+ cd(directory) do
44
+ sh "make config"
45
+ end
46
+ end
47
+ end
48
+
49
+ # Remove enouhg compile products for a clean compile.
50
+
51
+ def clean
52
+ extension_directories.each do |directory|
53
+ cd(directory) do
54
+ sh "make clean"
55
+ end
56
+ end
57
+ end
58
+
59
+ # Remove all compile products.
60
+
61
+ def distclean
62
+ extension_directories.each do |directory|
63
+ cd(directory) do
64
+ sh "make distclean"
65
+ end
66
+ end
67
+ end
68
+
69
+ # Create Makefiles.
70
+
71
+ def extconf
72
+ extension_directories.each do |directory|
73
+ cd(directory) do
74
+ sh "ruby extconf.rb"
75
+ end
76
+ end
77
+ end
78
+
79
+ # Return list of extconf.rb scripts.
80
+
81
+ def extension_scripts
82
+ [extensions].flatten.collect do |ext|
83
+ Dir.glob(ext)
84
+ end.flatten
85
+ end
86
+
87
+ # Return list of directory locations of extconf.rb scripts.
88
+
89
+ def extension_directories
90
+ glob(extension_scripts).map do |ext|
91
+ File.dirname(ext)
92
+ end
93
+ end
94
+
95
+ # Eric Hodel said NOT to copy the compiled libs.
96
+ #
97
+ #task :copy_files do
98
+ # cp "ext/**/*.#{dlext}", "lib/**/#{arch}/"
99
+ #end
100
+ #
101
+ #def dlext
102
+ # Config::CONFIG['DLEXT']
103
+ #end
104
+ #
105
+ #def arch
106
+ # Config::CONFIG['arch']
107
+ #end
108
+
109
+ # Cross-compile for Windows. (TODO)
110
+
111
+ #def make_mingw
112
+ # abort "NOT YET IMPLEMENTED"
113
+ #end
114
+
115
+ end
116
+
117
+ end
118
+ end
@@ -0,0 +1,201 @@
1
+ require 'yaml'
2
+ require 'quarry/build'
3
+
4
+ module Quarry
5
+
6
+ # This takes a manpage with a YAML based header comment
7
+ # and appends man page format.
8
+
9
+ class Manpage < Build
10
+
11
+ def self.generate(file, options={})
12
+ new.generate(file, options)
13
+ end
14
+
15
+ TOP_ORDER = %w{ NAME SYNOPSIS DESCRIPTION OPTIONS }
16
+ BOT_ORDER = %w{ AUTHOR }
17
+
18
+ def generate(file, options={})
19
+ text = read(file)
20
+ data = load(text)
21
+ manp = parse(data)
22
+ if options[:dryrun]
23
+ puts manp
24
+ else
25
+ save(file, text, manp)
26
+ end
27
+ end
28
+
29
+ def read(file)
30
+ text = File.read(file)
31
+ re = Regexp.escape('.\"')
32
+ lines = text.split(/\n/).select do |l|
33
+ /^#{re}/ =~ l
34
+ end
35
+ text = lines.join("\n")
36
+ end
37
+
38
+ #
39
+ def load(text)
40
+ str = text.split(/\n/).collect do |l|
41
+ l.sub('.\"', '')
42
+ end
43
+ YAML.load(str.join("\n"))
44
+ end
45
+
46
+ def save(file, text, manp)
47
+ File.open(file, 'w') do |f|
48
+ f << text << "\n"
49
+ f << manp
50
+ end
51
+ end
52
+
53
+ def parse(data)
54
+ title = data.delete('TITLE')
55
+ secno = data.delete('SECTION')
56
+ verno = data.delete('VERSION')
57
+ name = data.fetch('NAME')
58
+
59
+ raise "Missing required field TITLE or NAME" unless title && name
60
+
61
+ top = []
62
+ bot = []
63
+ mid = []
64
+
65
+ # do section top order
66
+ TOP_ORDER.each do |section|
67
+ if content = data.delete(section)
68
+ top << process_section(section, content)
69
+ end
70
+ end
71
+
72
+ BOT_ORDER.each do |section|
73
+ if content = data.delete(section)
74
+ bot << process_section(section, content)
75
+ end
76
+ end
77
+
78
+ # do remaining sections.
79
+ data.each do |section, content|
80
+ mid << process_section(section, content)
81
+ end
82
+
83
+ man = []
84
+ man << man_topsection(title, secno, verno)
85
+ man.concat top
86
+ man.concat mid
87
+ man.concat bot
88
+ man.join("\n")
89
+ end
90
+
91
+ def process_section(section, content)
92
+ meth = "man_" + section.downcase.gsub(' ','_')
93
+ if respond_to?(meth)
94
+ send(meth, content)
95
+ else
96
+ general_section(section.upcase, content)
97
+ end
98
+ end
99
+
100
+ def man_topsection(title, secno, verno)
101
+ secno ||= 1
102
+ verno ||= "1.0"
103
+ date = Time.now.strftime("%d %B %Y")
104
+ %{.TH man #{secno} "#{date}" "#{verno}" "#{title}"}
105
+ end
106
+
107
+ def man_name(content)
108
+ str = ''
109
+ str << ".SH NAME\n"
110
+ str << format(content)
111
+ end
112
+
113
+ def man_synopsis(content)
114
+ str = ''
115
+ str << ".SH SYNOPSIS\n"
116
+ str << ".B " + format(content)
117
+ end
118
+
119
+ def man_examples(content)
120
+ name = "EXAMPLES"
121
+ general_section(name, content)
122
+ end
123
+
124
+ def man_description(content)
125
+ name = "DESCRIPTION"
126
+ general_section(name, content)
127
+ end
128
+
129
+ def man_options(content)
130
+ name = "OPTIONS"
131
+ general_section(name, content)
132
+ end
133
+
134
+ def man_files(content)
135
+ name = "FILES"
136
+ general_section(name, content)
137
+ end
138
+
139
+ def man_see_also(content)
140
+ str = ''
141
+ str << ".SH SEE ALSO\n"
142
+ see = content.split(/[,]\s*/)
143
+ see.each do |s|
144
+ str << ".BR #{s},\n"
145
+ end
146
+ str.strip
147
+ end
148
+
149
+ def man_bugs(content)
150
+ name = "BUGS"
151
+ general_section(name, content)
152
+ end
153
+
154
+ def man_hints(content)
155
+ name = "HINTS"
156
+ general_section(name, content)
157
+ end
158
+
159
+ def man_environment(content)
160
+ name = "ENVIRONMENT"
161
+ general_section(name, content)
162
+ end
163
+
164
+ def man_diagnostics(content)
165
+ name = "DIAGNOSTICS"
166
+ general_section(name, content)
167
+ end
168
+
169
+ # ?????
170
+ def man_list(content)
171
+ name = "LIST"
172
+ general_section(name, content)
173
+ end
174
+
175
+ def man_author(content)
176
+ name = "AUTHOR"
177
+ general_section(name, content)
178
+ end
179
+
180
+ def man_history(content)
181
+ name = "HISTORY"
182
+ general_section(name, content)
183
+ end
184
+
185
+ #
186
+
187
+ def general_section(name, content)
188
+ str = ''
189
+ str << ".SH #{name.upcase}\n"
190
+ str << format(content)
191
+ end
192
+
193
+ def format(content)
194
+ content = content.strip
195
+ content = content.gsub(' -', ' \-')
196
+ content #<< "\n"
197
+ end
198
+
199
+ end
200
+
201
+ end
@@ -0,0 +1,214 @@
1
+ require 'quarry/build'
2
+
3
+ module Quarry
4
+
5
+ class Notes < Build
6
+
7
+ attr_accessor :files
8
+ attr_accessor :labels
9
+ attr_accessor :format
10
+ attr_accessor :output
11
+
12
+ # TODO Add ability to read header notes.
13
+ # FIXME Should each label of note be written to it's own file?
14
+
15
+ DEFAULT_NOTE_FILES = ['lib/**/*', 'ext/**/*']
16
+ DEFAULT_NOTE_LABELS = ['TODO', 'FIXME']
17
+ DEFAULT_NOTE_FORMAT = 'rdoc'
18
+ DEFAULT_NOTE_OUTPUT = 'doc/note'
19
+
20
+ #
21
+
22
+ def files
23
+ @files ||= DEFAULT_NOTE_FILES
24
+ end
25
+
26
+ #
27
+
28
+ def labels
29
+ @labels ||= DEFAULT_NOTE_LABELS
30
+ end
31
+
32
+ #
33
+
34
+ def format
35
+ @format ||= DEFAULT_NOTE_FORMAT
36
+ end
37
+
38
+ #
39
+
40
+ def output
41
+ @output ||= DEFAULT_NOTE_OUTPUT
42
+ end
43
+
44
+ # Scan for notes.
45
+ #
46
+ # This task scans source code for developer notes and writes to
47
+ # well organized files.
48
+ #
49
+ # Notes tool can lookup and list TODO, FIXME and
50
+ # other types of labeled comments from source code.
51
+
52
+ def notes(config={})
53
+ files = config['files'] || files()
54
+ labels = config['labels'] || labels()
55
+ format = config['format'] || format()
56
+ outout = config['output'] || output()
57
+
58
+ files ||= DEFAULT_NOTE_FILES
59
+ labels ||= DEFAULT_NOTE_LABELS
60
+ format ||= DEFAULT_NOTE_FORMAT
61
+ output ||= DEFAULT_NOTE_OUTPUT
62
+
63
+ labels = labels.split(',') if String === labels
64
+ labels = [labels].flatten.compact
65
+
66
+ output.chomp!('/')
67
+
68
+ records, counts = extract_notes( labels, files )
69
+ notes = format_notes( labels, records, format )
70
+
71
+ if records.empty?
72
+ puts "No #{labels.join('/')} notes."
73
+ end
74
+
75
+ save_notes(output, notes, labels)
76
+ puts counts.collect{|l,n| "#{n} #{l}s"}.join(', ')
77
+ puts "Notes saved in #{output} folder."
78
+ end
79
+
80
+ private
81
+
82
+ # Gather notes.
83
+
84
+ def extract_notes( labels, files=nil )
85
+ files = files || info.scripts || info.note_files || DEFAULT_NOTE_FILES
86
+ files = Dir.multiglob_with_default(DEFAULT_NOTE_FILES, *files)
87
+
88
+ counts = Hash.new(0)
89
+ records = []
90
+
91
+ files.each do |fname|
92
+ next unless fname =~ /.*rb/ # TODO should this be done?
93
+ File.open(fname) do |f|
94
+ line_no, save, text = 0, nil, nil
95
+ while line = f.gets
96
+ line_no += 1
97
+ labels.each do |label|
98
+ if line =~ /^\s*#\s*#{Regexp.escape(label)}[:]?\s*(.*?)$/
99
+ file = fname
100
+ text = ''
101
+ save = {'label'=>label,'file'=>file,'line'=>line_no,'note'=>text}
102
+ records << save
103
+ counts[label] += 1
104
+ end
105
+ end
106
+ if text
107
+ if line =~ /^\s*[#]{0,1}\s*$/ or line !~ /^\s*#/ or line =~ /^\s*#[+][+]/
108
+ text.strip!
109
+ text = nil
110
+ #records << save
111
+ else
112
+ text << line.gsub(/^\s*#\s*/,'')
113
+ end
114
+ end
115
+ end
116
+ end
117
+ end
118
+ return records, counts
119
+ end
120
+
121
+ # Format notes.
122
+
123
+ def format_notes( labels, records, format=nil )
124
+ #return "No #{labels.join('/')} notes." if records.empty?
125
+ #return {} if records.empty?
126
+ notes = {}
127
+ labels.each do |label|
128
+ recs = records.select{ |r| r['label'] == label }
129
+ next if recs.empty?
130
+ out = "\n= #{label}\n"
131
+ last_file = nil
132
+ recs.sort!{ |a,b| a['file'] <=> b['file'] }
133
+ recs.each do |record|
134
+ if last_file != record['file']
135
+ out << "\n"
136
+ last_file = record['file']
137
+ out << "file://#{record['file']}\n"
138
+ end
139
+ out << "* #{record['note'].rstrip} (#{record['line']})\n"
140
+ end
141
+ notes[label] = out
142
+ end
143
+ return notes
144
+ end
145
+
146
+ # Save notes.
147
+
148
+ def save_notes( dir, notes, labels )
149
+ # Remove empty note files.
150
+ (labels - notes.keys).each do |label|
151
+ file = File.join(dir,label)
152
+ rm(file) if File.file?(file)
153
+ end
154
+ # Create note files.
155
+ notes.each do |label, note|
156
+ file = File.join(dir,label)
157
+ file = apply_naming_policy(file, 'txt')
158
+ if dryrun?
159
+ puts "write #{file}"
160
+ else
161
+ File.open(file,'w') do |f| f << note end
162
+ end
163
+ end
164
+ end
165
+
166
+ end
167
+
168
+ end
169
+
170
+ # out = ''
171
+ #
172
+ # case format
173
+ # when 'yaml'
174
+ # out << records.to_yaml
175
+ # when 'list'
176
+ # records.each do |record|
177
+ # out << "* #{record['note']}\n"
178
+ # end
179
+ # else #when 'rdoc'
180
+ # labels.each do |label|
181
+ # recs = records.select{ |r| r['label'] == label }
182
+ # next if recs.empty?
183
+ # out << "\n= #{label}\n"
184
+ # last_file = nil
185
+ # recs.sort!{ |a,b| a['file'] <=> b['file'] }
186
+ # recs.each do |record|
187
+ # if last_file != record['file']
188
+ # out << "\n"
189
+ # last_file = record['file']
190
+ # out << "file://#{record['file']}\n"
191
+ # end
192
+ # out << "* #{record['note'].rstrip} (#{record['line']})\n"
193
+ # end
194
+ # end
195
+ # out << "\n---\n"
196
+ # out << counts.collect{|l,n| "#{n} #{l}s"}.join(' ')
197
+ # out << "\n"
198
+ # end
199
+
200
+ # # List TODO notes. Same as notes --label=TODO.
201
+ #
202
+ # def todo( options={} )
203
+ # options = options.to_openhash
204
+ # options.label = 'TODO'
205
+ # notes(options)
206
+ # end
207
+ #
208
+ # # List FIXME notes. Same as notes --label=FIXME.
209
+ #
210
+ # def fixme( options={} )
211
+ # options = options.to_openhash
212
+ # options.label = 'FIXME'
213
+ # notes(options)
214
+ # end