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,115 @@
1
+ =begin rdoc
2
+
3
+ = NackClass
4
+
5
+ The NackClass is is like the NilClass except one step down.
6
+ Nack is never used to to mean nothingness or emptiness.
7
+ The Nack class is only used to report something is "a miss" w/o
8
+ the system raising an Exception. It's a mechanism for
9
+ lazy error evaluation.
10
+
11
+ == Usage
12
+
13
+ def scalar( x )
14
+ if x.kind_of?(Enumerable)
15
+ return nack(ArgumentError, "Value must not be enumerable")
16
+ end
17
+ x
18
+ end
19
+
20
+ a = scaler( 1 ) #=> 1
21
+ b = scaler( [1,2] ) #=> nack
22
+ b.first #=> ArgumentError (previous)
23
+
24
+ a = nail scaler( 1 ) #=> 1
25
+ b = nail scaler( [1,2] ) #=> ArgumentError
26
+
27
+ == TODO
28
+
29
+ * I beleive this class has even more potential yet.
30
+ It would be interesting to see if a catch/try correction
31
+ facility could be built into it too.
32
+
33
+ == Author(s)
34
+
35
+ * Thomas Sawyer
36
+
37
+ == Legal
38
+
39
+ Ruby License
40
+ Copyright (c)2004 Thomas Sawyer
41
+
42
+
43
+ == History
44
+
45
+ * 2005.04.11 Passed basic test.
46
+
47
+ =end
48
+
49
+ class InvalidNackError < ArgumentError
50
+ end
51
+
52
+ class NackClass
53
+
54
+ attr_reader :error, :data
55
+
56
+ def initialize(error=nil, *data, &ctrl)
57
+ if Class === error and error <= Exception
58
+ @error = error.new(*data)
59
+ elsif error.kind_of?( Exception )
60
+ @error = error
61
+ elsif error.kind_of?( String )
62
+ @error = StandardError.new(error)
63
+ elsif error == nil
64
+ @error = StandardError.new
65
+ else
66
+ raise InvalidNackError
67
+ end
68
+ @data = data
69
+ @ctrl = ctrl
70
+ end
71
+
72
+ def call(*args)
73
+ @ctrl.call(*args)
74
+ end
75
+
76
+ def call_with_data
77
+ @ctrl.call(*@data)
78
+ end
79
+
80
+ def raise_error
81
+ raise @error
82
+ end
83
+
84
+ def to_s; "n/a"; end
85
+
86
+ def ==(x)
87
+ x.is_a?(NackClass)
88
+ end
89
+
90
+ def method_missing(meth, *args)
91
+ raise_error
92
+ end
93
+
94
+ end
95
+
96
+ module Kernel
97
+ def nack(err=nil, *data, &ctrl)
98
+ NackClass.new(err, *data, &ctrl)
99
+ end
100
+ end
101
+
102
+ # private Object method
103
+ def nail( arg )
104
+ if NackClass === arg
105
+ arg.raise_error
106
+ else
107
+ return arg
108
+ end
109
+ end
110
+
111
+ #class NilClass
112
+ # def method_missing(meth, *args)
113
+ # nack()
114
+ # end
115
+ #end
@@ -0,0 +1,67 @@
1
+ =begin rdoc
2
+
3
+ = NilComparable
4
+
5
+ NilComparable does two things. First it make nil comparable, such that
6
+ all things (except itself) are greater than it.
7
+
8
+ Secondly it provides a module called NilComparable to include into any
9
+ other class to allow it to compare itself to NilClass as the greater
10
+ of the two.
11
+
12
+ = Author(s)
13
+
14
+ * Paul Brannan
15
+ * Thomas Sawyer
16
+
17
+ =end
18
+
19
+ class NilClass
20
+ include Comparable
21
+ def <=>(x)
22
+ x.nil? ? 0 : -1
23
+ end
24
+ alias_method( :cmp, :<=> )
25
+ end
26
+
27
+ # # Calling this method for a given class allows instances
28
+ # # of a class to be compared to nil using <=>.
29
+ # # Adapted from code by Paul Brannan (Ruby License)
30
+ # # NOTE: THIS SHOULD BE A CLASS INCLUDING MODULE, I THINK.
31
+ # def nil_comparable(klass=self)
32
+ # klass.class_eval %{
33
+ # if method_defined?( :<=> )
34
+ # alias_method :compare_without_nil, :<=>
35
+ # else
36
+ # def compare_without_nil( other )
37
+ # raise TypeError, "Cannot compare \#{self.inspect} to \#{other.inspect}"
38
+ # end
39
+ # end
40
+ # def <=>( other )
41
+ # return 1 if other.nil?
42
+ # compare_without_nil( other )
43
+ # end
44
+ # }
45
+ # end
46
+
47
+ module NilComparable
48
+
49
+ def self.included( mod )
50
+ mod.class_eval %{
51
+ if method_defined?( :<=> )
52
+ alias_method :compare_without_nil, :<=>
53
+ else
54
+ def compare_without_nil( other )
55
+ raise TypeError, "Cannot compare \#{self.inspect} to \#{other.inspect}"
56
+ end
57
+ end
58
+ def <=>( other )
59
+ return 1 if other.nil?
60
+ compare_without_nil( other )
61
+ end
62
+ }
63
+ end
64
+
65
+ end
66
+
67
+
@@ -0,0 +1,12 @@
1
+ class NilClass
2
+ # Have nil respond to all non-existent methods,
3
+ # always returning <tt>nil</tt>.
4
+ #
5
+ # require 'facet/nil/nil_missing'
6
+ #
7
+ # nil.foo #=> nil
8
+ #
9
+ def method_missing(meth, *args)
10
+ nil
11
+ end
12
+ end
@@ -0,0 +1,68 @@
1
+ =begin rdoc
2
+
3
+ = NotCopyable
4
+
5
+ Disable copying via dup and clone (and copy).
6
+
7
+ == Usage
8
+
9
+ require 'carat/notcopyable.rb'
10
+
11
+ Class FixedString < String
12
+ include NotCopyable
13
+ end
14
+
15
+ s = FixedString.new("Don't tred on me!")
16
+ puts s
17
+ s2 = s.dup
18
+
19
+ produces
20
+
21
+ Don't tred on me!
22
+ TypeError, "Object not copyable"
23
+
24
+ == Todo
25
+
26
+ * If one is reopening a class and including this, it will
27
+ not work if the class defined #dub, #clone or #copy (and #deep_copy)
28
+ itself. It only work if it's ancestors are responsible for those
29
+ methods. How to fix?
30
+
31
+ == Notes
32
+
33
+ * I don't think this will prove very useful, but just in case
34
+ here it is.
35
+
36
+ == Author(s)
37
+
38
+ * Paul Brannan <paul at atdesk.com>
39
+ * Thomas Sawyer
40
+
41
+ == Legal
42
+
43
+ Adapted from Ruby Treasures 0.4
44
+ Copyright (C) 2002 Paul Brannan <paul@atdesk.com>
45
+
46
+ You may distribute this software under the same terms as Ruby
47
+ (see the file COPYING that was distributed with this library).
48
+
49
+ == History
50
+
51
+ * 2005.04.11 Passed basic test.
52
+
53
+ =end
54
+
55
+ module NotCopyable
56
+ def clone
57
+ raise TypeError, "Object not copyable"
58
+ end
59
+ def dup
60
+ raise TypeError, "Object not copyable"
61
+ end
62
+ # if object/copy has been required?
63
+ def copy
64
+ raise TypeError, "Object not copyable"
65
+ end
66
+ alias_method( :deep_copy, :copy )
67
+ end
68
+
@@ -0,0 +1,249 @@
1
+ #$Id: orderedhash.rb, v2.0 2004-12-05 transami Exp $
2
+
3
+ =begin rdoc
4
+
5
+ = OrderedHash
6
+
7
+ Hash with preserved order and some array-like extensions
8
+
9
+ == AUTHOR
10
+
11
+ * jan molic </mig/at/1984/dot/cz/>
12
+
13
+ == THANKS
14
+
15
+ Andrew Johnson for his suggestions and fixes of Hash[], merge,
16
+ to_a, inspect and shift.
17
+
18
+ == USAGE
19
+
20
+ Just require this file and use OrderedHash instead of Hash.
21
+
22
+ require 'trix/orderedhash'
23
+
24
+ # You can do simply
25
+ hsh = OrderedHash.new
26
+ hsh['z'] = 1
27
+ hsh['a'] = 2
28
+ hsh['c'] = 3
29
+ p hsh.keys #=> ['z','a','c']
30
+
31
+ # or using OrderedHash[] method
32
+ hsh = OrderedHash['z', 1, 'a', 2, 'c', 3]
33
+ p hsh.keys #=> ['z','a','c']
34
+
35
+ # but this don't preserve order
36
+ hsh = OrderedHash['z'=>1, 'a'=>2, 'c'=>3]
37
+ p hsh.keys #=> ['a','c','z']
38
+
39
+ # OrderedHash has useful extensions: push, pop and unshift
40
+ p hsh.push('to_end', 15) #=> true, key added
41
+ p hsh.push('to_end', 30) #=> false, already - nothing happen
42
+ p hsh.unshift('to_begin', 50) #=> true, key added
43
+ p hsh.unshift('to_begin', 60) #=> false, already - nothing happen
44
+ p hsh.keys #=> ["to_begin", "a", "c", "z", "to_end"]
45
+ p hsh.pop #=> ["to_end", 15], if nothing remains, return nil
46
+ p hsh.keys #=> ["to_begin", "a", "c", "z"]
47
+ p hsh.shift #=> ["to_begin", 30], if nothing remains, return nil
48
+
49
+ =end
50
+
51
+
52
+ class OrderedHash < Hash
53
+
54
+ attr_accessor :order
55
+
56
+ class << self
57
+ def [] *args
58
+ hsh = OrderedHash.new
59
+ if Hash === args[0]
60
+ hsh.replace args[0]
61
+ elsif (args.size % 2) != 0
62
+ raise ArgumentError, "odd number of elements for Hash"
63
+ else
64
+ hsh[args.shift] = args.shift while args.size > 0
65
+ end
66
+ hsh
67
+ end
68
+ end
69
+
70
+ def initialize
71
+ @order = []
72
+ end
73
+
74
+ def store_only a,b
75
+ store a,b
76
+ end
77
+
78
+ alias orig_store store
79
+ def store a,b
80
+ @order.push a unless has_key? a
81
+ super a,b
82
+ end
83
+ alias []= store
84
+
85
+ def == hsh2
86
+ return false if @order != hsh2.order
87
+ super hsh2
88
+ end
89
+
90
+ def clear
91
+ @order = []
92
+ super
93
+ end
94
+
95
+ def delete key
96
+ @order.delete key
97
+ super
98
+ end
99
+
100
+ def each_key
101
+ @order.each { |k| yield k }
102
+ self
103
+ end
104
+
105
+ def each_value
106
+ @order.each { |k| yield self[k] }
107
+ self
108
+ end
109
+
110
+ def each
111
+ @order.each { |k| yield k,self[k] }
112
+ self
113
+ end
114
+ alias each_pair each
115
+
116
+ def delete_if
117
+ @order.clone.each { |k|
118
+ delete k if yield
119
+ }
120
+ self
121
+ end
122
+
123
+ def values
124
+ ary = []
125
+ @order.each { |k| ary.push self[k] }
126
+ ary
127
+ end
128
+
129
+ def keys
130
+ @order
131
+ end
132
+
133
+ def invert
134
+ hsh2 = Hash.new
135
+ @order.each { |k| hsh2[self[k]] = k }
136
+ hsh2
137
+ end
138
+
139
+ def reject &block
140
+ self.dup.delete_if &block
141
+ end
142
+
143
+ def reject! &block
144
+ hsh2 = reject &block
145
+ self == hsh2 ? nil : hsh2
146
+ end
147
+
148
+ def replace hsh2
149
+ @order = hsh2.keys
150
+ super hsh2
151
+ end
152
+
153
+ def shift
154
+ key = @order.first
155
+ key ? [key,delete(key)] : super
156
+ end
157
+
158
+ def unshift k,v
159
+ unless self.include? k
160
+ @order.unshift k
161
+ orig_store(k,v)
162
+ true
163
+ else
164
+ false
165
+ end
166
+ end
167
+
168
+ def push k,v
169
+ unless self.include? k
170
+ @order.push k
171
+ orig_store(k,v)
172
+ true
173
+ else
174
+ false
175
+ end
176
+ end
177
+
178
+ def pop
179
+ key = @order.last
180
+ key ? [key,delete(key)] : nil
181
+ end
182
+
183
+ def to_a
184
+ ary = []
185
+ each { |k,v| ary << [k,v] }
186
+ ary
187
+ end
188
+
189
+ def to_s
190
+ self.to_a.to_s
191
+ end
192
+
193
+ def inspect
194
+ ary = []
195
+ each {|k,v| ary << k.inspect + "=>" + v.inspect}
196
+ '{' + ary.join(", ") + '}'
197
+ end
198
+
199
+ def update hsh2
200
+ hsh2.each { |k,v| self[k] = v }
201
+ self
202
+ end
203
+ alias :merge! update
204
+
205
+ def merge hsh2
206
+ self.dup update(hsh2)
207
+ end
208
+
209
+ def select
210
+ ary = []
211
+ each { |k,v| ary << [k,v] if yield k,v }
212
+ ary
213
+ end
214
+
215
+ end
216
+
217
+
218
+ =begin
219
+ # --- development testing ---
220
+
221
+ if __FILE__ == $0
222
+
223
+ # You can do simply
224
+ hsh = OrderedHash.new
225
+ hsh['z'] = 1
226
+ hsh['a'] = 2
227
+ hsh['c'] = 3
228
+ p hsh.keys # ['z','a','c']
229
+
230
+ # or using OrderedHash[] method
231
+ hsh = OrderedHash['z', 1, 'a', 2, 'c', 3]
232
+ p hsh.keys # ['z','a','c']
233
+
234
+ # but this don't preserve order
235
+ hsh = OrderedHash['z'=>1, 'a'=>2, 'c'=>3]
236
+ p hsh.keys # ['a','c','z']
237
+
238
+ # OrderedHash has useful extensions: push, pop and unshift
239
+ p hsh.push('to_end', 15) # true, key added
240
+ p hsh.push('to_end', 30) # false, already - nothing happen
241
+ p hsh.unshift('to_begin', 50) # true, key added
242
+ p hsh.unshift('to_begin', 60) # false, already - nothing happen
243
+ p hsh.keys # ["to_begin", "a", "c", "z", "to_end"]
244
+ p hsh.pop # ["to_end", 15], if nothing remains, return nil
245
+ p hsh.keys # ["to_begin", "a", "c", "z"]
246
+ p hsh.shift # ["to_begin", 30], if nothing remains, return nil
247
+
248
+ end
249
+ =end