carats 0.3.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 (422) hide show
  1. data/ChangeLog +2 -0
  2. data/LICENSE +5 -0
  3. data/README +67 -0
  4. data/Reapfile +72 -0
  5. data/ToDo +24 -0
  6. data/bench/b_harray.rb +49 -0
  7. data/bench/b_range.rb +64 -0
  8. data/demo/ansicolor/cdiff.rb +20 -0
  9. data/demo/ansicolor/example.rb +82 -0
  10. data/demo/io-reactor/chatserver.rb +347 -0
  11. data/doc/classes/Array.html +172 -0
  12. data/doc/classes/BBCode.html +638 -0
  13. data/doc/classes/BinaryReader.html +675 -0
  14. data/doc/classes/Binding.html +223 -0
  15. data/doc/classes/ByteOrder.html +284 -0
  16. data/doc/classes/Class.html +189 -0
  17. data/doc/classes/Constant.html +785 -0
  18. data/doc/classes/Constant/CGS.html +609 -0
  19. data/doc/classes/Continuation.html +113 -0
  20. data/doc/classes/Coroutine.html +387 -0
  21. data/doc/classes/CountingSemaphore.html +337 -0
  22. data/doc/classes/CrossCase.html +561 -0
  23. data/doc/classes/DynamicMixin.html +185 -0
  24. data/doc/classes/EnumerableWithArgs.html +550 -0
  25. data/doc/classes/Expect.html +428 -0
  26. data/doc/classes/Expect/DefaultChain.html +113 -0
  27. data/doc/classes/Expect/SeparatedPattern.html +223 -0
  28. data/doc/classes/Expect/Timeout.html +167 -0
  29. data/doc/classes/Expect/UnmatchedMessage.html +160 -0
  30. data/doc/classes/FileList.html +833 -0
  31. data/doc/classes/FloatString.html +534 -0
  32. data/doc/classes/Functor.html +211 -0
  33. data/doc/classes/HArray.html +1872 -0
  34. data/doc/classes/HTML.html +328 -0
  35. data/doc/classes/Heap.html +683 -0
  36. data/doc/classes/Heap/EmptyHeapException.html +111 -0
  37. data/doc/classes/Heap/Max.html +176 -0
  38. data/doc/classes/Heap/Min.html +176 -0
  39. data/doc/classes/IO.html +108 -0
  40. data/doc/classes/IO/Reactor.html +790 -0
  41. data/doc/classes/IO/Redirect.html +289 -0
  42. data/doc/classes/Infinity.html +320 -0
  43. data/doc/classes/Interval.html +1014 -0
  44. data/doc/classes/InvalidNackError.html +161 -0
  45. data/doc/classes/Kernel.html +204 -0
  46. data/doc/classes/Lisp.html +1132 -0
  47. data/doc/classes/Lisp/DottedPair.html +379 -0
  48. data/doc/classes/Lisp/Format.html +178 -0
  49. data/doc/classes/Lisp/Format/ArgumentError.html +126 -0
  50. data/doc/classes/Lisp/Format/Directives.html +155 -0
  51. data/doc/classes/Lisp/Format/Directives/ArgJump.html +178 -0
  52. data/doc/classes/Lisp/Format/Directives/Ascii.html +119 -0
  53. data/doc/classes/Lisp/Format/Directives/BeginCaseConversion.html +185 -0
  54. data/doc/classes/Lisp/Format/Directives/BeginConditional.html +307 -0
  55. data/doc/classes/Lisp/Format/Directives/BeginIteration.html +338 -0
  56. data/doc/classes/Lisp/Format/Directives/Binary.html +157 -0
  57. data/doc/classes/Lisp/Format/Directives/Character.html +228 -0
  58. data/doc/classes/Lisp/Format/Directives/CharacterDirective.html +203 -0
  59. data/doc/classes/Lisp/Format/Directives/ClauseSeparator.html +166 -0
  60. data/doc/classes/Lisp/Format/Directives/Decimal.html +119 -0
  61. data/doc/classes/Lisp/Format/Directives/Directive.html +397 -0
  62. data/doc/classes/Lisp/Format/Directives/DollarFP.html +205 -0
  63. data/doc/classes/Lisp/Format/Directives/EndCaseConversion.html +174 -0
  64. data/doc/classes/Lisp/Format/Directives/EndConditional.html +159 -0
  65. data/doc/classes/Lisp/Format/Directives/EndIteration.html +163 -0
  66. data/doc/classes/Lisp/Format/Directives/ExpFP.html +252 -0
  67. data/doc/classes/Lisp/Format/Directives/FFFP.html +224 -0
  68. data/doc/classes/Lisp/Format/Directives/Factory.html +180 -0
  69. data/doc/classes/Lisp/Format/Directives/FreshLine.html +175 -0
  70. data/doc/classes/Lisp/Format/Directives/GeneralFP.html +265 -0
  71. data/doc/classes/Lisp/Format/Directives/Hexadecimal.html +157 -0
  72. data/doc/classes/Lisp/Format/Directives/Indirection.html +183 -0
  73. data/doc/classes/Lisp/Format/Directives/Literal.html +187 -0
  74. data/doc/classes/Lisp/Format/Directives/NewLine.html +158 -0
  75. data/doc/classes/Lisp/Format/Directives/NewPage.html +158 -0
  76. data/doc/classes/Lisp/Format/Directives/Number.html +243 -0
  77. data/doc/classes/Lisp/Format/Directives/Octal.html +157 -0
  78. data/doc/classes/Lisp/Format/Directives/Plural.html +177 -0
  79. data/doc/classes/Lisp/Format/Directives/Print.html +237 -0
  80. data/doc/classes/Lisp/Format/Directives/Radix.html +432 -0
  81. data/doc/classes/Lisp/Format/Directives/SExpression.html +157 -0
  82. data/doc/classes/Lisp/Format/Directives/SkipWhitespace.html +165 -0
  83. data/doc/classes/Lisp/Format/Directives/Tabulate.html +198 -0
  84. data/doc/classes/Lisp/Format/Directives/Tilde.html +158 -0
  85. data/doc/classes/Lisp/Format/Directives/UnknownDirectiveError.html +117 -0
  86. data/doc/classes/Lisp/Format/Formatter.html +193 -0
  87. data/doc/classes/Lisp/Format/IncompleteParameterError.html +119 -0
  88. data/doc/classes/Lisp/Format/IndexError.html +126 -0
  89. data/doc/classes/Lisp/Format/Lexer.html +479 -0
  90. data/doc/classes/Lisp/Format/MalformedError.html +119 -0
  91. data/doc/classes/Lisp/Format/MissingParameterError.html +119 -0
  92. data/doc/classes/Lisp/Format/ModifierError.html +119 -0
  93. data/doc/classes/Lisp/Format/Output.html +239 -0
  94. data/doc/classes/Lisp/Format/ParameterError.html +126 -0
  95. data/doc/classes/Lisp/Format/Parameters.html +123 -0
  96. data/doc/classes/Lisp/Format/Parameters/Argument.html +172 -0
  97. data/doc/classes/Lisp/Format/Parameters/ArgumentCount.html +159 -0
  98. data/doc/classes/Lisp/Format/Parameters/Character.html +119 -0
  99. data/doc/classes/Lisp/Format/Parameters/Default.html +120 -0
  100. data/doc/classes/Lisp/Format/Parameters/Integer.html +119 -0
  101. data/doc/classes/Lisp/Format/Parameters/Parameter.html +206 -0
  102. data/doc/classes/Lisp/Format/Parser.html +212 -0
  103. data/doc/classes/Lisp/Format/Positioned.html +166 -0
  104. data/doc/classes/Lisp/Format/State.html +455 -0
  105. data/doc/classes/Lisp/Format/SyntaxError.html +126 -0
  106. data/doc/classes/Method.html +274 -0
  107. data/doc/classes/Method/DuckHunter.html +281 -0
  108. data/doc/classes/Module.html +709 -0
  109. data/doc/classes/Multiton.html +284 -0
  110. data/doc/classes/Multiton/New.html +164 -0
  111. data/doc/classes/Multiton/Semi.html +155 -0
  112. data/doc/classes/NackClass.html +322 -0
  113. data/doc/classes/NilClass.html +231 -0
  114. data/doc/classes/NilComparable.html +179 -0
  115. data/doc/classes/NotCopyable.html +273 -0
  116. data/doc/classes/Object.html +261 -0
  117. data/doc/classes/OpenStructable.html +346 -0
  118. data/doc/classes/OrderedHash.html +939 -0
  119. data/doc/classes/Parser.html +515 -0
  120. data/doc/classes/Parser/Main.html +178 -0
  121. data/doc/classes/Parser/Marker.html +475 -0
  122. data/doc/classes/Parser/Registry.html +354 -0
  123. data/doc/classes/Parser/Token.html +399 -0
  124. data/doc/classes/Parser/UnitToken.html +222 -0
  125. data/doc/classes/Ref.html +230 -0
  126. data/doc/classes/SimpleStringIO.html +183 -0
  127. data/doc/classes/StaticHash.html +202 -0
  128. data/doc/classes/String.html +172 -0
  129. data/doc/classes/Struct.html +181 -0
  130. data/doc/classes/SuperStruct.html +382 -0
  131. data/doc/classes/Term.html +156 -0
  132. data/doc/classes/Term/ANSIColor.html +185 -0
  133. data/doc/classes/Text.html +138 -0
  134. data/doc/classes/Text/Soundex.html +222 -0
  135. data/doc/classes/TextTagIterator.html +911 -0
  136. data/doc/classes/Time.html +119 -0
  137. data/doc/classes/Time/Limit.html +303 -0
  138. data/doc/classes/Time/Limit/Dummy.html +181 -0
  139. data/doc/classes/Timer.html +351 -0
  140. data/doc/classes/TracePoint.html +532 -0
  141. data/doc/classes/Tuple.html +178 -0
  142. data/doc/classes/Uninheritable.html +213 -0
  143. data/doc/classes/Version.html +783 -0
  144. data/doc/created.rid +1 -0
  145. data/doc/files/LICENSE.html +113 -0
  146. data/doc/files/README.html +201 -0
  147. data/doc/files/lib/carat/1st_rb.html +107 -0
  148. data/doc/files/lib/carat/ansicolor_rb.html +146 -0
  149. data/doc/files/lib/carat/attr_rb.html +101 -0
  150. data/doc/files/lib/carat/bbcode_rb.html +152 -0
  151. data/doc/files/lib/carat/binaryreader_rb.html +114 -0
  152. data/doc/files/lib/carat/binding-of-caller_rb.html +108 -0
  153. data/doc/files/lib/carat/byteorder_rb.html +107 -0
  154. data/doc/files/lib/carat/constant_rb.html +167 -0
  155. data/doc/files/lib/carat/coroutine_rb.html +156 -0
  156. data/doc/files/lib/carat/crosscase_rb.html +224 -0
  157. data/doc/files/lib/carat/duckhunter_rb.html +165 -0
  158. data/doc/files/lib/carat/dynamic-mixin_rb.html +101 -0
  159. data/doc/files/lib/carat/enumerable-args_rb.html +140 -0
  160. data/doc/files/lib/carat/expect_rb.html +137 -0
  161. data/doc/files/lib/carat/filelist_rb.html +130 -0
  162. data/doc/files/lib/carat/floatstring_rb.html +126 -0
  163. data/doc/files/lib/carat/functor_rb.html +140 -0
  164. data/doc/files/lib/carat/harray_rb.html +128 -0
  165. data/doc/files/lib/carat/heap_rb.html +154 -0
  166. data/doc/files/lib/carat/html-helpers_rb.html +116 -0
  167. data/doc/files/lib/carat/infinity_rb.html +142 -0
  168. data/doc/files/lib/carat/init_rb.html +127 -0
  169. data/doc/files/lib/carat/interval_rb.html +162 -0
  170. data/doc/files/lib/carat/io-reactor_rb.html +211 -0
  171. data/doc/files/lib/carat/io-redirect_rb.html +132 -0
  172. data/doc/files/lib/carat/lisp-format_rb.html +187 -0
  173. data/doc/files/lib/carat/lisp_rb.html +152 -0
  174. data/doc/files/lib/carat/macro_rb.html +129 -0
  175. data/doc/files/lib/carat/multiton_rb.html +178 -0
  176. data/doc/files/lib/carat/nack_rb.html +193 -0
  177. data/doc/files/lib/carat/nil-comparable_rb.html +126 -0
  178. data/doc/files/lib/carat/nil-missing_rb.html +101 -0
  179. data/doc/files/lib/carat/notcopyable_rb.html +166 -0
  180. data/doc/files/lib/carat/orderedhash_rb.html +107 -0
  181. data/doc/files/lib/carat/ostructable_rb.html +157 -0
  182. data/doc/files/lib/carat/parser-old_rb.html +239 -0
  183. data/doc/files/lib/carat/parser_rb.html +244 -0
  184. data/doc/files/lib/carat/ref_rb.html +107 -0
  185. data/doc/files/lib/carat/semaphore_rb.html +132 -0
  186. data/doc/files/lib/carat/snapshot_rb.html +152 -0
  187. data/doc/files/lib/carat/soundex_rb.html +128 -0
  188. data/doc/files/lib/carat/sstruct_rb.html +142 -0
  189. data/doc/files/lib/carat/statichash_rb.html +150 -0
  190. data/doc/files/lib/carat/tagiter_rb.html +236 -0
  191. data/doc/files/lib/carat/timelimit_rb.html +136 -0
  192. data/doc/files/lib/carat/timer_rb.html +153 -0
  193. data/doc/files/lib/carat/tracepoint_rb.html +160 -0
  194. data/doc/files/lib/carat/tuple_rb.html +123 -0
  195. data/doc/files/lib/carat/uninheritable_rb.html +101 -0
  196. data/doc/files/lib/carat/version_rb.html +141 -0
  197. data/doc/fr_class_index.html +159 -0
  198. data/doc/fr_file_index.html +78 -0
  199. data/doc/fr_method_index.html +663 -0
  200. data/doc/index.html +24 -0
  201. data/doc/rdoc-style.css +208 -0
  202. data/lib/carat-dev/README +11 -0
  203. data/lib/carat-dev/access-blocks/access_blocks.rb +42 -0
  204. data/lib/carat-dev/association/association.rb +70 -0
  205. data/lib/carat-dev/blankslate/blankslate.rb +51 -0
  206. data/lib/carat-dev/breakpoint.rb +518 -0
  207. data/lib/carat-dev/class-constructor/constructor_methods.rb +78 -0
  208. data/lib/carat-dev/class-constructor/tc_constructor.rb +35 -0
  209. data/lib/carat-dev/closecall/closecall-test.rb +39 -0
  210. data/lib/carat-dev/closecall/closecall.rb +101 -0
  211. data/lib/carat-dev/commandrunner/commandrunner.rb +100 -0
  212. data/lib/carat-dev/conditional/conditionals.rb +106 -0
  213. data/lib/carat-dev/daemon/daemon.rb +70 -0
  214. data/lib/carat-dev/detach/detach.rb +363 -0
  215. data/lib/carat-dev/detach/tc_detach.rb +57 -0
  216. data/lib/carat-dev/import-module/import-module-0.81.tar.gz +0 -0
  217. data/lib/carat-dev/import-module/import-module-0.81/LICENSE +1 -0
  218. data/lib/carat-dev/import-module/import-module-0.81/Makefile +11 -0
  219. data/lib/carat-dev/import-module/import-module-0.81/README +4 -0
  220. data/lib/carat-dev/import-module/import-module-0.81/dev-lib/import-module-hash.rb +49 -0
  221. data/lib/carat-dev/import-module/import-module-0.81/dev-lib/import-module-pip.rb +71 -0
  222. data/lib/carat-dev/import-module/import-module-0.81/dev-lib/import-module-unbound-method.rb +36 -0
  223. data/lib/carat-dev/import-module/import-module-0.81/doc/README-ja.html +293 -0
  224. data/lib/carat-dev/import-module/import-module-0.81/doc/README-ja.rd +306 -0
  225. data/lib/carat-dev/import-module/import-module-0.81/doc/README.html +290 -0
  226. data/lib/carat-dev/import-module/import-module-0.81/doc/README.rd +303 -0
  227. data/lib/carat-dev/import-module/import-module-0.81/doc/style.css +85 -0
  228. data/lib/carat-dev/import-module/import-module-0.81/install.rb +99 -0
  229. data/lib/carat-dev/import-module/import-module-0.81/lib/import-module-single-thread.rb +84 -0
  230. data/lib/carat-dev/import-module/import-module-0.81/lib/import-module.rb +493 -0
  231. data/lib/carat-dev/import-module/import-module-0.81/test/Makefile +2 -0
  232. data/lib/carat-dev/import-module/import-module-0.81/test/test +91 -0
  233. data/lib/carat-dev/import-module/import-module-0.81/test/test-import-module.rb +936 -0
  234. data/lib/carat-dev/import-module/import-module-0.81/test/test-import_scope.rb +33 -0
  235. data/lib/carat-dev/import-module/import-module-0.81/test/test-scope_import.rb +33 -0
  236. data/lib/carat-dev/import-module/import-module-0.81/test/test-time.rb +184 -0
  237. data/lib/carat-dev/import-module/import-module-0.81/test/test.sh +91 -0
  238. data/lib/carat-dev/import-module/import-module-0.81/test/time.rb +135 -0
  239. data/lib/carat-dev/import-module/import-module-0.81/test/times-do.sh +10 -0
  240. data/lib/carat-dev/interface_work/SCRAP/i-contracts.rb +37 -0
  241. data/lib/carat-dev/interface_work/SCRAP/interface.rb +105 -0
  242. data/lib/carat-dev/interface_work/SCRAP/j-interface/interface-0.1.0.zip +0 -0
  243. data/lib/carat-dev/interface_work/SCRAP/j-interface/interface-0.1.0/CHANGES +3 -0
  244. data/lib/carat-dev/interface_work/SCRAP/j-interface/interface-0.1.0/MANIFEST +15 -0
  245. data/lib/carat-dev/interface_work/SCRAP/j-interface/interface-0.1.0/README +32 -0
  246. data/lib/carat-dev/interface_work/SCRAP/j-interface/interface-0.1.0/doc/interface.rd +73 -0
  247. data/lib/carat-dev/interface_work/SCRAP/j-interface/interface-0.1.0/doc/interface.txt +94 -0
  248. data/lib/carat-dev/interface_work/SCRAP/j-interface/interface-0.1.0/install.rb +16 -0
  249. data/lib/carat-dev/interface_work/SCRAP/j-interface/interface-0.1.0/lib/interface.rb +50 -0
  250. data/lib/carat-dev/interface_work/SCRAP/j-interface/interface-0.1.0/test/tc_interface.rb +51 -0
  251. data/lib/carat-dev/interface_work/SCRAP/j-interface/interface-0.1.0/test/test.rb +29 -0
  252. data/lib/carat-dev/interface_work/SCRAP/j-interface/interface-0.1.0/test/test_instance.rb +24 -0
  253. data/lib/carat-dev/interface_work/SCRAP/j-interface/interface-0.1.0/test/test_sub.rb +29 -0
  254. data/lib/carat-dev/interface_work/SCRAP/j-interface/interface-0.1.0/test/test_unrequire.rb +28 -0
  255. data/lib/carat-dev/interface_work/contracts/contract.zip +0 -0
  256. data/lib/carat-dev/interface_work/contracts/contract/doc/classes/Contract.html +376 -0
  257. data/lib/carat-dev/interface_work/contracts/contract/doc/classes/Contract.src/M000001.html +23 -0
  258. data/lib/carat-dev/interface_work/contracts/contract/doc/classes/Contract.src/M000002.html +18 -0
  259. data/lib/carat-dev/interface_work/contracts/contract/doc/classes/Contract.src/M000003.html +19 -0
  260. data/lib/carat-dev/interface_work/contracts/contract/doc/classes/Contract.src/M000004.html +29 -0
  261. data/lib/carat-dev/interface_work/contracts/contract/doc/classes/Contract.src/M000005.html +18 -0
  262. data/lib/carat-dev/interface_work/contracts/contract/doc/classes/Contract.src/M000006.html +18 -0
  263. data/lib/carat-dev/interface_work/contracts/contract/doc/classes/Contract/ContractError.html +142 -0
  264. data/lib/carat-dev/interface_work/contracts/contract/doc/classes/Contract/ContractException.html +153 -0
  265. data/lib/carat-dev/interface_work/contracts/contract/doc/classes/Contract/ContractMismatch.html +125 -0
  266. data/lib/carat-dev/interface_work/contracts/contract/doc/classes/Module.html +157 -0
  267. data/lib/carat-dev/interface_work/contracts/contract/doc/classes/Module.src/M000007.html +112 -0
  268. data/lib/carat-dev/interface_work/contracts/contract/doc/created.rid +1 -0
  269. data/lib/carat-dev/interface_work/contracts/contract/doc/files/lib/contract/assertions_rb.html +109 -0
  270. data/lib/carat-dev/interface_work/contracts/contract/doc/files/lib/contract/exception_rb.html +108 -0
  271. data/lib/carat-dev/interface_work/contracts/contract/doc/files/lib/contract/integration_rb.html +108 -0
  272. data/lib/carat-dev/interface_work/contracts/contract/doc/files/lib/contract/overrides_rb.html +109 -0
  273. data/lib/carat-dev/interface_work/contracts/contract/doc/files/lib/contract_rb.html +114 -0
  274. data/lib/carat-dev/interface_work/contracts/contract/doc/fr_class_index.html +31 -0
  275. data/lib/carat-dev/interface_work/contracts/contract/doc/fr_file_index.html +31 -0
  276. data/lib/carat-dev/interface_work/contracts/contract/doc/fr_method_index.html +33 -0
  277. data/lib/carat-dev/interface_work/contracts/contract/doc/index.html +24 -0
  278. data/lib/carat-dev/interface_work/contracts/contract/doc/rdoc-style.css +208 -0
  279. data/lib/carat-dev/interface_work/contracts/contract/lib/contract.rb +88 -0
  280. data/lib/carat-dev/interface_work/contracts/contract/lib/contract/assertions.rb +37 -0
  281. data/lib/carat-dev/interface_work/contracts/contract/lib/contract/exception.rb +92 -0
  282. data/lib/carat-dev/interface_work/contracts/contract/lib/contract/integration.rb +132 -0
  283. data/lib/carat-dev/interface_work/contracts/contract/lib/contract/overrides.rb +32 -0
  284. data/lib/carat-dev/interface_work/must.rb +37 -0
  285. data/lib/carat-dev/interface_work/type.rb +232 -0
  286. data/lib/carat-dev/main/tc_toplevel.rb +23 -0
  287. data/lib/carat-dev/main/toplevel.rb +33 -0
  288. data/lib/carat-dev/main/toplevel_test.rb +24 -0
  289. data/lib/carat-dev/misc/1.rb +40 -0
  290. data/lib/carat-dev/misc/misc.rb +44 -0
  291. data/lib/carat-dev/misc/sys.rb +186 -0
  292. data/lib/carat-dev/misc/temp.rb +1 -0
  293. data/lib/carat-dev/misc/utils.rb +518 -0
  294. data/lib/carat-dev/predicate/predicate.rb +109 -0
  295. data/lib/carat-dev/predicate/predicate_test.rb +67 -0
  296. data/lib/carat-dev/premshree.rb +40 -0
  297. data/lib/carat-dev/priority-queue/pqueue.rb +183 -0
  298. data/lib/carat-dev/priority-queue/priorityqueue.rb +84 -0
  299. data/lib/carat-dev/quaternion/quaternion.rb +529 -0
  300. data/lib/carat-dev/range.rb +259 -0
  301. data/lib/carat-dev/system/rubyinfo.rb +75 -0
  302. data/lib/carat-dev/system/system.rb +105 -0
  303. data/lib/carat-dev/tc_range.rb +118 -0
  304. data/lib/carat-dev/timer/timer-doc/classes/Timer.html +291 -0
  305. data/lib/carat-dev/timer/timer-doc/classes/Timer.src/M000001.html +26 -0
  306. data/lib/carat-dev/timer/timer-doc/classes/Timer.src/M000002.html +19 -0
  307. data/lib/carat-dev/timer/timer-doc/classes/Timer.src/M000003.html +18 -0
  308. data/lib/carat-dev/timer/timer-doc/classes/Timer.src/M000004.html +18 -0
  309. data/lib/carat-dev/timer/timer-doc/classes/Timer.src/M000005.html +21 -0
  310. data/lib/carat-dev/timer/timer-doc/classes/Timer.src/M000006.html +23 -0
  311. data/lib/carat-dev/timer/timer-doc/created.rid +1 -0
  312. data/lib/carat-dev/timer/timer-doc/files/timer_rb.html +144 -0
  313. data/lib/carat-dev/timer/timer-doc/fr_class_index.html +27 -0
  314. data/lib/carat-dev/timer/timer-doc/fr_file_index.html +27 -0
  315. data/lib/carat-dev/timer/timer-doc/fr_method_index.html +32 -0
  316. data/lib/carat-dev/timer/timer-doc/index.html +24 -0
  317. data/lib/carat-dev/timer/timer-doc/rdoc-style.css +208 -0
  318. data/lib/carat-dev/timer/timer.rb +160 -0
  319. data/lib/carat-dev/vars/vars.rb +62 -0
  320. data/lib/carat/1st.rb +58 -0
  321. data/lib/carat/ansicolor.rb +122 -0
  322. data/lib/carat/attr.rb +342 -0
  323. data/lib/carat/bbcode.rb +352 -0
  324. data/lib/carat/binaryreader.rb +170 -0
  325. data/lib/carat/binding-of-caller.rb +83 -0
  326. data/lib/carat/byteorder.rb +34 -0
  327. data/lib/carat/constant.rb +287 -0
  328. data/lib/carat/coroutine.rb +102 -0
  329. data/lib/carat/crosscase.rb +309 -0
  330. data/lib/carat/duckhunter.rb +158 -0
  331. data/lib/carat/dynamic-mixin.rb +71 -0
  332. data/lib/carat/enumerable-args.rb +125 -0
  333. data/lib/carat/expect.rb +192 -0
  334. data/lib/carat/filelist.rb +277 -0
  335. data/lib/carat/floatstring.rb +153 -0
  336. data/lib/carat/functor.rb +41 -0
  337. data/lib/carat/harray.rb +507 -0
  338. data/lib/carat/heap.rb +193 -0
  339. data/lib/carat/html-helpers.rb +82 -0
  340. data/lib/carat/infinity.rb +61 -0
  341. data/lib/carat/init.rb +33 -0
  342. data/lib/carat/interval.rb +248 -0
  343. data/lib/carat/io-reactor.rb +657 -0
  344. data/lib/carat/io-redirect.rb +99 -0
  345. data/lib/carat/lisp-format.rb +1832 -0
  346. data/lib/carat/lisp.rb +336 -0
  347. data/lib/carat/macro.rb +68 -0
  348. data/lib/carat/multiton.rb +153 -0
  349. data/lib/carat/nack.rb +115 -0
  350. data/lib/carat/nil-comparable.rb +67 -0
  351. data/lib/carat/nil-missing.rb +12 -0
  352. data/lib/carat/notcopyable.rb +68 -0
  353. data/lib/carat/orderedhash.rb +249 -0
  354. data/lib/carat/ostructable.rb +138 -0
  355. data/lib/carat/parser-old.rb +350 -0
  356. data/lib/carat/parser.rb +393 -0
  357. data/lib/carat/ref.rb +31 -0
  358. data/lib/carat/semaphore.rb +69 -0
  359. data/lib/carat/snapshot.rb +94 -0
  360. data/lib/carat/soundex.rb +104 -0
  361. data/lib/carat/sstruct.rb +223 -0
  362. data/lib/carat/statichash.rb +49 -0
  363. data/lib/carat/tagiter.rb +345 -0
  364. data/lib/carat/timelimit.rb +114 -0
  365. data/lib/carat/timer.rb +99 -0
  366. data/lib/carat/tracepoint.rb +154 -0
  367. data/lib/carat/tuple.rb +31 -0
  368. data/lib/carat/uninheritable.rb +68 -0
  369. data/lib/carat/version.rb +147 -0
  370. data/pub/doc/sstruct.txt +204 -0
  371. data/pub/doc/tagiter.html +145 -0
  372. data/setup.rb +1361 -0
  373. data/test/fixtures/filelist/testfile.txt +1 -0
  374. data/test/fixtures/filelist/testfile2.txt +1 -0
  375. data/test/tc_1st.rb +16 -0
  376. data/test/tc_ansicolor.rb +23 -0
  377. data/test/tc_attr.rb +46 -0
  378. data/test/tc_bbcode.rb +20 -0
  379. data/test/tc_binaryreader.rb +14 -0
  380. data/test/tc_binding_of_caller.rb +2 -0
  381. data/test/tc_byteorder.rb +41 -0
  382. data/test/tc_constant.rb +12 -0
  383. data/test/tc_coroutine.rb +50 -0
  384. data/test/tc_crosscase.rb +33 -0
  385. data/test/tc_duckhunter.rb +37 -0
  386. data/test/tc_dynamic-mixin.rb +66 -0
  387. data/test/tc_enumerable-args.rb +66 -0
  388. data/test/tc_expect.rb +83 -0
  389. data/test/tc_filelist.rb +17 -0
  390. data/test/tc_floatstring.rb +22 -0
  391. data/test/tc_functor.rb +18 -0
  392. data/test/tc_harray.rb +280 -0
  393. data/test/tc_heap.rb +6 -0
  394. data/test/tc_infinity.rb +23 -0
  395. data/test/tc_init.rb +29 -0
  396. data/test/tc_interval.rb +153 -0
  397. data/test/tc_io-reactor.rb +5 -0
  398. data/test/tc_io-redirect.rb +5 -0
  399. data/test/tc_lisp-format.rb +24 -0
  400. data/test/tc_lisp.rb +32 -0
  401. data/test/tc_macro.rb +48 -0
  402. data/test/tc_multiton.rb +188 -0
  403. data/test/tc_nack.rb +31 -0
  404. data/test/tc_nil-as-emptiness.rb +19 -0
  405. data/test/tc_nil-comparable.rb +29 -0
  406. data/test/tc_nil-missing.rb +0 -0
  407. data/test/tc_notcopyable.rb +64 -0
  408. data/test/tc_orderedhash.rb +36 -0
  409. data/test/tc_ostructable.rb +31 -0
  410. data/test/tc_semaphore.rb +5 -0
  411. data/test/tc_snapshot.rb +20 -0
  412. data/test/tc_soundex.rb +19 -0
  413. data/test/tc_sstruct.rb +313 -0
  414. data/test/tc_statichash.rb +24 -0
  415. data/test/tc_tagiter.rb +80 -0
  416. data/test/tc_timelimit.rb +47 -0
  417. data/test/tc_timer.rb +35 -0
  418. data/test/tc_tracepoint.rb +10 -0
  419. data/test/tc_tuple.rb +25 -0
  420. data/test/tc_uninheritable.rb +33 -0
  421. data/test/tc_version.rb +90 -0
  422. metadata +531 -0
@@ -0,0 +1,309 @@
1
+ =begin rdoc
2
+
3
+ = CrossCase
4
+
5
+ CrossCase - a mixin for making methods look the way you like 'em.
6
+ Or for making them look the way other people like 'em. Or something.
7
+ Let's try that again... CrossCase - A mixin for auto-generating
8
+ under_barred aliases for camelCased methods, and vice-versa. Better.
9
+
10
+ == Synopsis
11
+
12
+ class MyClass
13
+ include CrossCase
14
+
15
+ def underbarred_method; ...; end
16
+ def camelCasedMethod; ...; end
17
+ end
18
+
19
+ obj = MyClass::new
20
+ obj.underbarredMethod
21
+ obj.camel_cased_method
22
+
23
+ # -or-
24
+
25
+ class MyClass
26
+ def underbarred_method; ...; end
27
+ def camelCasedMethod; ...; end
28
+ end
29
+
30
+ MyClass.extend( CrossCase )
31
+ obj = MyClass::new
32
+ obj.underbarredMethod
33
+ obj.camel_cased_method
34
+
35
+ == Description
36
+
37
+ This module, when mixed into a Class or another Module, will provide
38
+ under_barred aliases for class or instance methods with names which follow the
39
+ camelCased naming conventions, and vice-versa. E.g., in a class which mixes in
40
+ CrossCase, defining a method which is called +foo_bar+ will also create an
41
+ alias for that method called +fooBar+.
42
+
43
+ I wrote this module because I prefer camelCased method names, but also wish to
44
+ respect the preferences of my fellow Rubyists for whom such practices are an
45
+ abomination. And I'm too lazy to type
46
+ alias :twinkle_twinkle :twinkleTwinkle
47
+ for every method. It's all about laziness. Or perhaps I'm catering to my
48
+ hubris. Or both; I'll shut up now.
49
+
50
+ == Caveats
51
+
52
+ This module uses the +method_added+ and +singleton_method_added+ hooks to
53
+ generate aliases for new methods. If either or both of these methods are
54
+ already defined, they will be preserved as aliases when the Class or Module is
55
+ extended. It's up to you to return the favor should you create your own hook
56
+ after this module is mixed in to your class.
57
+
58
+ == Author
59
+
60
+ * Michael Granger <ged@FaerieMUD.org>
61
+
62
+ == Thanks
63
+
64
+ * The denizens of irc://irc.freenode.net/#ruby-lang, and especially dblack,
65
+ oGMo, and rubyhacker1 for name suggestions.
66
+
67
+ == More Information
68
+
69
+ You can find more information about this module, including any updates, at its
70
+ project page:
71
+
72
+ http://www.deveiate.org/code/CrossCase.shtml
73
+
74
+ == Legal
75
+
76
+ Copyright (c) 2003 The FaerieMUD Consortium. All rights reserved.
77
+
78
+ This module is free software. You may use, modify, and/or redistribute this
79
+ software under the same terms as Ruby
80
+
81
+ This program is distributed in the hope that it will be useful, but WITHOUT
82
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
83
+ FOR A PARTICULAR PURPOSE.
84
+
85
+ == History
86
+
87
+ $Id: crosscase.rb,v 1.2 2003/07/25 17:00:24 deveiant Exp $
88
+
89
+ =end
90
+
91
+ ### A mixin which causes aliases for methods with either under_barred or
92
+ ### camelCased naming conventions to be created in the opposing
93
+ ### convention. E.g., in a class which mixes in CrossCase, defining a method
94
+ ### which is called +foo_bar+ will also create an alias for that method called
95
+ ### +fooBar+.
96
+ module CrossCase
97
+
98
+ ### Versioning constants
99
+ Version = /([\d\.]+)/.match( %q{$Revision: 1.2 $} )[1]
100
+ Rcsid = %q$Id: crosscase.rb,v 1.2 2003/07/25 17:00:24 deveiant Exp $
101
+
102
+ ### The inclusion callback -- uses the Ouroboros trick to extend including
103
+ ### classes.
104
+ def self::included( mod )
105
+ mod.extend( self )
106
+ end
107
+
108
+
109
+ ### Object-extension callback -- installs aliases for any currently-extant
110
+ ### class or instance methods, and installs callbacks that will create
111
+ ### aliases for any subsequently-defined methods. Raises an error if any
112
+ ### object except a Class or Module is extended.
113
+ def self::extend_object( mod )
114
+ raise TypeError, "Expected a Module or a Class, got a " +
115
+ mod.class.name unless
116
+ mod.is_a?( Module )
117
+
118
+ self::transformClassMethods( mod )
119
+ self::transformInstanceMethods( mod )
120
+ self::installMethodHooks( mod )
121
+ end
122
+
123
+
124
+ ### Install +method_added+ and +singleton_method_added+ hooks into the given
125
+ ### Module +mod+ which auto-generate aliases for new methods.
126
+ def self::installMethodHooks( mod )
127
+ mod.module_eval {
128
+ class << self
129
+ if respond_to?( :singleton_method_added )
130
+ alias :__cc_sma :singleton_method_added
131
+ end
132
+ def singleton_method_added( id )
133
+ if aliasName = CrossCase::transform( id )
134
+ CrossCase::installClassAlias( self, id, aliasName )
135
+ end
136
+ if respond_to?( :__cc_sma )
137
+ __cc_sma( id )
138
+ else
139
+ super
140
+ end
141
+ end
142
+
143
+ if respond_to?( :method_added )
144
+ alias :__cc_ma :method_added
145
+ end
146
+ def method_added( id )
147
+ if aliasName = CrossCase::transform( id )
148
+ CrossCase::installAlias( self, id, aliasName )
149
+ end
150
+ if respond_to?( :__cc_ma )
151
+ __cc_ma( id )
152
+ else
153
+ super
154
+ end
155
+ end
156
+ end
157
+ }
158
+ end
159
+
160
+
161
+ ### Search for and install aliases for either underbarred or camelCased
162
+ ### class methods for +mod+ (a Class or Module).
163
+ def self::transformClassMethods( mod )
164
+ self::findTargetMethods( mod.singleton_methods(false) ) {|meth, aliasName|
165
+ self::installClassAlias( mod, meth, aliasName )
166
+ }
167
+ end
168
+
169
+
170
+ ### Install an alias +aliasName+ for the given class method +meth+ of the
171
+ ### Class or Module +mod+.
172
+ def self::installClassAlias( mod, meth, aliasName )
173
+ unless mod.respond_to?( aliasName )
174
+ code = %{
175
+ class << self; alias_method( :#{aliasName}, :#{meth} ); end
176
+ }
177
+ mod.module_eval( code, __FILE__, __LINE__ )
178
+ end
179
+ end
180
+
181
+
182
+ ### Search for and install aliases for either underbarred or camelCased
183
+ ### instance methods for +mod+ (a Class or Module).
184
+ def self::transformInstanceMethods( mod )
185
+ self::findTargetMethods( mod.instance_methods(false) ) {|meth, aliasName|
186
+ self::installAlias( mod, meth, aliasName )
187
+ }
188
+ end
189
+
190
+
191
+ ### Install an alias +aliasName+ for the given instance method +meth+ of the
192
+ ### Class or Module +mod+.
193
+ def self::installAlias( mod, meth, aliasName )
194
+ unless mod.instance_methods(true).include?( aliasName )
195
+ mod.module_eval %{alias_method :#{aliasName}, :#{meth}}
196
+ end
197
+ end
198
+
199
+
200
+ ### Find methods in the given +methodList+ which are candidates for
201
+ ### aliasing.
202
+ def self::findTargetMethods( *methodList )
203
+ methodList.flatten.each {|meth|
204
+ next if /(singleton_)?method_added/ =~ meth
205
+ transformedName = transform( meth ) or next
206
+ yield( meth, transformedName )
207
+ }
208
+ end
209
+
210
+
211
+ ### Return an alternate name for the given method id +mid+. If the method id
212
+ ### is an under_barred method, returns a camelCased version, and
213
+ ### vice-versa. If no alternate is called for, returns +nil+.
214
+ def self::transform( mid )
215
+ methodName = mid.to_s
216
+ transformedName = ''
217
+
218
+ # camelCased methods
219
+ if /[A-Z]/.match( methodName ) && !/_/.match( methodName )
220
+ transformedName = methodName.gsub( /([a-z0-9])([A-Z])/ ) {|match|
221
+ $1 + '_' + $2
222
+ }.downcase
223
+
224
+ # underbarred_methods
225
+ elsif !/A-Z/.match( methodName ) && /[a-z0-9]_[a-z]/.match( methodName )
226
+ transformedName = methodName.gsub( /([a-z0-9])_([a-z])/ ) {|match|
227
+ $1 + $2.upcase
228
+ }
229
+
230
+ else
231
+ transformedName = nil
232
+ end
233
+
234
+ return transformedName
235
+ end
236
+
237
+ end
238
+
239
+
240
+ # --- test ---
241
+
242
+ if $0 == __FILE__
243
+
244
+ require 'raspberry/mix/utils'
245
+ include UtilityFunctions
246
+ $yaml = false
247
+
248
+ class Foo #:nodoc:
249
+ def self::singleton_method_added( id )
250
+ $stderr.puts "Original sma: Added #{id} to #{self.inspect}"
251
+ end
252
+
253
+ def self::method_added( id )
254
+ $stderr.puts "Original ma: Added #{id} to #{self.inspect}"
255
+ end
256
+
257
+ def self::classPreCamelMethod
258
+ "classPreCamelMethod"
259
+ end
260
+
261
+ def self::class_pre_underbarred_method
262
+ "class_pre_underbarred_method"
263
+ end
264
+
265
+ def preCamelCasedMethod
266
+ "preCamelCasedMethod"
267
+ end
268
+
269
+ def pre_underbarred_method
270
+ "pre_underbarred_method"
271
+ end
272
+
273
+ extend CrossCase
274
+
275
+ def self::classCamelMethod
276
+ "classCamelMethod"
277
+ end
278
+
279
+ def self::class_underbarred_method
280
+ "class_underbarred_method"
281
+ end
282
+
283
+ def camelCasedMethod
284
+ "camelCasedMethod"
285
+ end
286
+
287
+ def underbarred_method
288
+ "underbarred_method"
289
+ end
290
+ end
291
+
292
+ f = nil
293
+ try( "to instantiate Foo" ) { f = Foo::new }
294
+
295
+ m = %w{ classPreCamelMethod class_pre_camel_method
296
+ class_pre_underbarred_method classPreUnderbarredMethod
297
+ classCamelMethod class_camel_method
298
+ class_underbarred_method classUnderbarredMethod }
299
+
300
+ m.sort.each do |meth|
301
+ try( "to call #{meth} on Foo" ){ Foo.send( meth ) }
302
+ end
303
+
304
+ Foo.instance_methods(false).sort.each do |meth|
305
+ try( "to call #{meth} on the instance of Foo" ){ f.send( meth ) }
306
+ end
307
+
308
+ end
309
+
@@ -0,0 +1,158 @@
1
+ =begin rdoc
2
+
3
+ = DuckHunter
4
+
5
+ Method::DuckHunter is a method probe. It drop decoys into methods
6
+ which records the calls that are made against them. Of course it is
7
+ not perfect --as a matter of course for any internal probe. There are
8
+ a couple of issues related to conditionals. Since the method test for
9
+ a certain condition against the decoy, how is the decoy to respond?
10
+ Thus ceratin paths in the code may never get exceuted and so go unmapped.
11
+ If Ruby had better conditional reflection (i.e. if 'if', 'case', 'unless',
12
+ 'when', etc. were true methods) then this could be fixed by making the
13
+ DuckHunter reentrant, mapping out variant true/false/nil replies. Of course
14
+ the final problem is the Halting problem. It should be rare enough, but it
15
+ can happen and little can be done about it (I think).
16
+
17
+ Note, the alternative to this is a program that examines, rather
18
+ then executes, source code. This would circumvent the above problems,
19
+ but run into difficulties with dynamic evals.
20
+
21
+ This script is provided for experimetnal purposes. On occasion it may find
22
+ an intersteing use. Please inform the author if you find ways to improve.
23
+
24
+ == Synopsis
25
+
26
+ require 'carat/duckhunter'
27
+
28
+ def amethod(x)
29
+ x + 1
30
+ end
31
+
32
+ p method(:amethod).signiture
33
+ p method(:amethod).signiture(:class)
34
+ p method(:amethod).signiture(:pretty)
35
+
36
+ produces
37
+
38
+ [["+"]]
39
+ [{"+"=>[["Fixnum"]]}]
40
+ [["+( Fixnum )"]]
41
+
42
+ == Authors(s)
43
+
44
+ * Thomas Sawyer
45
+
46
+ == Legal
47
+
48
+ Ruby License
49
+ Copyright (c)2005 Thomas Sawyer
50
+
51
+ == History
52
+
53
+ * 2005.04.12 Passed basic tests.
54
+
55
+ =end
56
+
57
+
58
+ class Method
59
+
60
+ #
61
+ # DuckHunter class
62
+ #
63
+ class DuckHunter
64
+
65
+ def DuckHunter.duckcall
66
+ begin
67
+ yield
68
+ rescue TypeError => e
69
+ self.send(e.message)
70
+ retry
71
+ end
72
+ end
73
+
74
+ attr_reader :ducks, :decoys
75
+
76
+ def initialize
77
+ @ducks, @decoys = {}, {}
78
+ end
79
+
80
+ def initialize_copy(from)
81
+ initialize
82
+ end
83
+
84
+ def method_missing(aSym, *args)
85
+ aSymStr = aSym.to_s
86
+
87
+ # This will happen the first time
88
+ @ducks[aSymStr] ||= [] #unless @ducks[aSymStr]
89
+ @ducks[aSymStr] << args.collect { |a| "#{a.class}" }
90
+
91
+ decoy = self.dup
92
+
93
+ @decoys[aSymStr] ||= [] #unless @decoys[aSymStr]
94
+ @decoys[aSymStr] << decoy
95
+
96
+ # build proxy?
97
+ #begin
98
+ # d = <<-HERE
99
+ # def self.#{aSymStr}(*args)
100
+ # # This will happen the subsequent times
101
+ # @ducks["#{aSymStr}"] << args.collect { |a| #{'"#{a.class}"'} }
102
+ # @ducks["#{aSymStr}"].uniq!
103
+ # decoy = self.dup
104
+ # @decoys["#{aSymStr}"] = [] unless @decoys["#{aSymStr}"]
105
+ # @decoys["#{aSymStr}"] << decoy
106
+ # decoy
107
+ # end
108
+ # HERE
109
+ # instance_eval d
110
+ #rescue SyntaxError
111
+ # puts "This error may be avoidable by returning the failing duck type as the error message."
112
+ # raise
113
+ #end
114
+
115
+ decoy
116
+ end
117
+
118
+ end #class DuckHunter
119
+
120
+
121
+ # Outputs migration information.
122
+ def migration
123
+ parameters = []; argc = self.arity
124
+ if argc > 0
125
+ argc.times { parameters << DuckHunter.new }
126
+ DuckHunter.duckcall { self.call(*parameters) }
127
+ elsif argc < 0
128
+ raise "(NYI) method takes unlimited arguments"
129
+ end
130
+ return parameters
131
+ end
132
+ private :migration
133
+
134
+
135
+ # Outputs signiture information.
136
+ def signature(detail=nil)
137
+ ds = []
138
+ case detail
139
+ when :complete, :all, :full
140
+ ds = migration
141
+ when :class, :with_class
142
+ migration.each { |dh| ds << dh.ducks }
143
+ when :pp, :pretty, :prettyprint, :pretty_print
144
+ migration.each do |dh|
145
+ responders = []
146
+ dh.ducks.each do |responder, argss|
147
+ argss.each { |args| responders << "#{responder}( #{args.join(',')} )" }
148
+ end
149
+ ds << responders
150
+ end
151
+ else
152
+ migration.each { |dh| ds << dh.ducks.keys }
153
+ end
154
+ return ds
155
+ end
156
+
157
+ end #class DuckHunter
158
+