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,94 @@
1
+ =begin rdoc
2
+
3
+ = Snapshot
4
+
5
+ A lightweight single-depth object state capture.
6
+ The #take_snapshot method reads the object's state,
7
+ which is generally it's collection of instance variables,
8
+ and returns them in a hash. The state can be restored
9
+ with #apply_snapshot.
10
+
11
+ == Usage
12
+
13
+ require 'raspberry/new/snapshot'
14
+
15
+ Customer = Struct.new("Customer", :name, :address, :zip)
16
+ joe = Customer.new( "Joe Pitare", "1115 Lila Ln.", 47634 )
17
+
18
+ # simple transactions
19
+ joe_snap = joe.take_snapshot
20
+ begin
21
+ do_something_with( joe )
22
+ rescue
23
+ joe.apply_snapshot( joe_snap )
24
+ end
25
+
26
+ joe_snap[:name] => "Joe Pitare"
27
+ joe_snap[:address] => "1115 Lila Ln."
28
+ joe_snap[:zip] => 47634
29
+
30
+ == TODO
31
+
32
+ * Perhaps extend to offer multiple depths.
33
+ * Should key consitancy be enforced? Currently
34
+ Struct's will have symobl keys while other classes
35
+ will have string keys in the form of "@name".
36
+ * Add other core classes.
37
+
38
+ == History
39
+
40
+ * 20005.04.11 Passed basic test.
41
+
42
+ ==
43
+
44
+ =end
45
+
46
+ class Object
47
+ def take_snapshot
48
+ snap = Hash.new
49
+ instance_variables.each do |iv|
50
+ snap[iv] = instance_variable_get(iv)
51
+ end
52
+ snap
53
+ end
54
+
55
+ def apply_snapshot(snap)
56
+ instance_variables.each do |iv|
57
+ instance_variable_set(iv, snap[iv])
58
+ end
59
+ end
60
+ end
61
+
62
+ class Array
63
+ def take_snapshot
64
+ dup
65
+ end
66
+
67
+ def apply_snapshot(snap)
68
+ replace(snap)
69
+ end
70
+ end
71
+
72
+ class String
73
+ def take_snapshot
74
+ dup
75
+ end
76
+
77
+ def apply_snapshot(snap)
78
+ replace(snap)
79
+ end
80
+ end
81
+
82
+ # Struct snapshots look a bit different
83
+ # since they don't use instance variables.
84
+ class Struct
85
+ def take_snapshot
86
+ snap = Hash.new
87
+ each_pair { |k,v| snap[k] = v }
88
+ snap
89
+ end
90
+
91
+ def apply_snapshot(snap)
92
+ snap.each_pair{ |k,v| send( "#{k}=", v ) }
93
+ end
94
+ end
@@ -0,0 +1,104 @@
1
+ =begin rdoc
2
+
3
+ = Soundex
4
+
5
+ Implementation of the soundex algorithm as described by Knuth
6
+ in volume 3 of The Art of Computer Programming.
7
+
8
+ == Author
9
+
10
+ * Michael Neumann (neumann@s-direktnet.de)
11
+
12
+ == Legal
13
+
14
+ Copyright (c) 2000 Michael Neumann
15
+
16
+ GNU GPL (see included file)
17
+
18
+ == History
19
+
20
+ * 2005.04.11 Passes basic test.
21
+
22
+ =end
23
+
24
+ module Text
25
+ module Soundex
26
+
27
+ def soundex(str_or_arr)
28
+ case str_or_arr
29
+ when String
30
+ soundex_str(str_or_arr)
31
+ when Array
32
+ str_or_arr.collect{|ele| soundex_str(ele)}
33
+ else
34
+ nil
35
+ end
36
+ end
37
+ module_function :soundex
38
+
39
+ private
40
+
41
+ #
42
+ # returns nil if the value couldn't be calculated (empty-string, wrong-character)
43
+ # do not change the parameter "str"
44
+ #
45
+ def soundex_str(str)
46
+ return nil if str.empty?
47
+
48
+ str = str.upcase
49
+ last_code = get_code(str[0,1])
50
+ soundex_code = str[0,1]
51
+
52
+ for index in 1...(str.size) do
53
+ return soundex_code if soundex_code.size == 4
54
+
55
+ code = get_code(str[index,1])
56
+
57
+ if code == "0" then
58
+ last_code = nil
59
+ elsif code == nil then
60
+ return nil
61
+ elsif code != last_code then
62
+ soundex_code += code
63
+ last_code = code
64
+ end
65
+ end # for
66
+
67
+ return soundex_code + "000"[0,4-soundex_code.size]
68
+ end
69
+ module_function :soundex_str
70
+
71
+ def get_code(char)
72
+ char.tr! "AEIOUYWHBPFVCSKGJQXZDTLMNR", "00000000111122222222334556"
73
+ end
74
+ module_function :get_code
75
+
76
+ end # module Soundex
77
+ end # module Text
78
+
79
+
80
+ =begin
81
+
82
+ # --- development testing ----
83
+
84
+ if __FILE__ == $0
85
+ testvec = "Euler Ellery Gauss Ghosh Hilbert Heilbronn Knuth Kant Lloyd Ladd Lukasiewicz Lissajous".split(" ")
86
+ resvec = "E460 E460 G200 G200 H416 H416 K530 K530 L300 L300 L222 L222".split(" ")
87
+
88
+ wrong = 0
89
+
90
+ testvec.each_with_index {|str,i|
91
+ res = Text::Soundex.soundex(str)
92
+ print "#{str.ljust(11)} => #{res} ... "
93
+ if res == resvec[i] then
94
+ puts "ok"
95
+ else
96
+ wrong += 1
97
+ puts "failed, had to be #{resvec[i]}"
98
+ end
99
+ }
100
+ puts "summary: #{wrong} of #{testvec.size} tests failed!"
101
+ readline
102
+ end
103
+
104
+ =end
@@ -0,0 +1,223 @@
1
+ =begin rdoc
2
+
3
+ = SuperStruct
4
+
5
+ This is an easy way to create Struct-like classes; it converts easily
6
+ between hashes and arrays, and it allows OpenStruct-like dynamic naming
7
+ of members.
8
+
9
+ Unlike Struct, it creates a "real" class, and it has real instance variables
10
+ with predictable names.
11
+
12
+ A basic limitation is that the hash keys must be legal method names (unless
13
+ used with send()).
14
+
15
+ Basically, ss["alpha"], ss[:alpha], ss[0], and ss.alpha all mean the same.
16
+
17
+ == Usage
18
+
19
+
20
+ == Author(s)
21
+
22
+ * Hal Fulton
23
+
24
+ == Legal
25
+
26
+ Ruby License (see incuded file)
27
+
28
+ =end
29
+
30
+
31
+ class SuperStruct
32
+
33
+ def SuperStruct.new(*args)
34
+ @table = []
35
+ @setsyms = [] # Setter symbols
36
+ klass = Class.new
37
+ if (args.size == 1) && (args[0].is_a? Array)
38
+ args = args[0]
39
+ end
40
+ strs = args.map {|x| x.to_s }
41
+ args.each_with_index do |k,i|
42
+ case
43
+ when (! [String,Symbol].include? k.class)
44
+ raise ArgumentError, "Need a String or Symbol"
45
+ when (strs[i] !~ /[_a-zA-Z][_a-zA-Z0-9]*/)
46
+ raise ArgumentError, "Illegal character"
47
+ end
48
+ k = k.intern if k.is_a? String
49
+ @table << k
50
+ @setsyms << (k.to_s + "=").intern
51
+ klass.instance_eval { attr_accessor k }
52
+ end
53
+
54
+ setsyms = @setsyms
55
+ table = @table
56
+ vals = @vals
57
+ klass.class_eval do
58
+ attr_reader :singleton
59
+ define_method(:initialize) do |*vals|
60
+ n = vals.size
61
+ m = table.size
62
+ case
63
+ when n < m
64
+ # raise ArgumentError, "Too few arguments (#{n} for #{m})"
65
+ # Never mind... extra variables will just be nil
66
+ when n > m
67
+ raise ArgumentError, "Too many arguments (#{n} for #{m})"
68
+ end
69
+ setsyms.each_with_index do |var,i|
70
+ self.send(var,vals[i])
71
+ end
72
+ end
73
+ define_method(:pretty_print) do |q| # pp.rb support
74
+ q.object_group(self) do
75
+ q.seplist(self.members, proc { q.text "," }) do |member|
76
+ # self.members.each do |member|
77
+ # q.text "," # unless q.first?
78
+ q.breakable
79
+ q.text member.to_s
80
+ q.text '='
81
+ q.group(1) do
82
+ q.breakable ''
83
+ q.pp self[member]
84
+ end
85
+ end
86
+ end
87
+ end
88
+ define_method(:inspect) do
89
+ str = "#<#{self.class}:"
90
+ table.each {|item| str << " #{item}=#{self.send(item)}" }
91
+ str + ">"
92
+ end
93
+ define_method(:[]) do |*index|
94
+ case index.map {|x| x.class }
95
+ when [Fixnum]
96
+ self.send(table[*index])
97
+ when [Fixnum,Fixnum], [Range]
98
+ table[*index].map {|x| self.send(x)}
99
+ when [String]
100
+ self.send(index[0].intern)
101
+ when [Symbol]
102
+ self.send(index[0])
103
+ else
104
+ raise ArgumentError,"Illegal index"
105
+ end
106
+ end
107
+ define_method(:[]=) do |*index|
108
+ value = index[-1]
109
+ index = index[0..-2]
110
+ case index.map {|x| x.class }
111
+ when [Fixnum]
112
+ self.send(table[*index])
113
+ when [Fixnum,Fixnum], [Range]
114
+ setsyms[*index].map {|x| self.send(x,value) }
115
+ when [String]
116
+ self.send(index[0].intern,value)
117
+ when [Symbol]
118
+ self.send(index[0],value)
119
+ else
120
+ raise ArgumentError,"Illegal index"
121
+ end
122
+ end
123
+ define_method(:to_a) { table.map {|x| eval("@"+x.to_s) } }
124
+ define_method(:to_ary) { to_a }
125
+ define_method(:members) { table.map {|x| x.to_s } }
126
+ define_method(:to_struct) do
127
+ mems = table
128
+ Struct.new("TEMP",*mems)
129
+ # Struct::TEMP.new(*vals) # Why doesn't this work??
130
+ data = mems.map {|x| self.send(x) }
131
+ Struct::TEMP.new(*data)
132
+ end
133
+ define_method(:to_hash) do
134
+ hash = {}
135
+ table.each do |mem|
136
+ mem = mem.to_s
137
+ hash.update(mem => self.send(mem))
138
+ end
139
+ hash
140
+ end
141
+ define_method(:set) {|h| h.each_pair {|k,v| send(k.to_s+"=",v) } }
142
+
143
+ # Class methods...
144
+
145
+ @singleton = class << self
146
+ self
147
+ end
148
+
149
+ @singleton.instance_eval do
150
+ define_method(:members) do
151
+ table.map {|x| x.to_s }
152
+ end
153
+ me = self
154
+ define_method(:attr_tester) do |*syms|
155
+ syms.each {|sym| alias_method(sym.to_s+"?",sym) }
156
+ end
157
+ end
158
+
159
+ end
160
+ klass
161
+ end
162
+
163
+
164
+ def SuperStruct.open(*args)
165
+ klass = SuperStruct.new(*args)
166
+ table = @table
167
+ setsyms = @setsyms
168
+ table = @table
169
+ klass.class_eval do
170
+ define_method(:method_missing) do |meth, *args|
171
+ mname = meth.id2name
172
+ if mname =~ /=$/
173
+ getter = mname.chop
174
+ setter = mname
175
+ elsif mname =~ /\?$/
176
+ raise NoMethodError # ?-methods are not created automatically
177
+ else
178
+ getter = mname
179
+ setter = mname + "="
180
+ end
181
+ gsym = getter.intern
182
+ ssym = setter.intern
183
+ ivar = "@" + getter
184
+ setsyms << setter
185
+ table << getter
186
+ len = args.length
187
+ if mname == getter
188
+ klass.class_eval do # getter
189
+ define_method(getter) do
190
+ instance_variable_get(ivar)
191
+ end
192
+ end
193
+ else
194
+ klass.class_eval do # setter
195
+ define_method(setter) do |*args|
196
+ if len != 1
197
+ raise ArgumentError, "Wrong # of arguments (#{len} for 1)",
198
+ caller(1)
199
+ end
200
+ instance_variable_set(ivar,args[0])
201
+ instance_variable_get(ivar)
202
+ end
203
+ end
204
+ end
205
+ if mname == setter
206
+ self.send(setter,*args)
207
+ else
208
+ if len == 0
209
+ self.send(getter)
210
+ else
211
+ raise NoMethodError, "Undefined method '#{mname}' for #{self}",
212
+ caller(1)
213
+ end
214
+ end
215
+ end
216
+ end
217
+ klass
218
+ end
219
+
220
+ end
221
+
222
+
223
+ require "test-sstruct" if $0 == __FILE__
@@ -0,0 +1,49 @@
1
+ =begin rdoc
2
+
3
+ = StaticHash
4
+
5
+ A Hash object which raises an error if any
6
+ previously-defined key attempts to be set again.
7
+
8
+ == Synopsis
9
+
10
+ foo = StaticHash.new
11
+ foo['name'] = 'Tom' #=> 'Tom'
12
+ foo['age'] = 30 #=> 30
13
+ foo['name'] = 'Bob'
14
+
15
+ _produces_
16
+
17
+ Error: StaticHash has value for key 'name' in object:
18
+ {"name"=>"Tom", "age"=>30} (RuntimeError)
19
+
20
+ == Author(s)
21
+
22
+ * Gavin Kistner
23
+ * T. Onoma
24
+
25
+ == Legal
26
+
27
+ Adapted from Gavin Kistner's WriteOnceHash in basiclibrary.rb
28
+ Copyright (c)2004 Gavin Kistner
29
+
30
+ It is covered under the license viewable at http://phrogz.net/JS/_ReuseLicense.txt
31
+ Reuse or modification is free provided you abide by the terms of that license.
32
+ (Including the first two lines above in your source code usually satisfies the conditions.)
33
+
34
+ == History
35
+
36
+ * 2005.04.11 Passed basic test.
37
+
38
+ =end
39
+
40
+ class StaticHash < Hash
41
+ # Set a value for a key; raises an error if that key already exists with a different value.
42
+ def []=(key,val)
43
+ if self.has_key?(key) && self[key]!=val
44
+ raise ArgumentError, "StaticHash already has value for key '#{key.to_s}'"
45
+ end
46
+ super
47
+ end
48
+ end
49
+