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,109 @@
1
+
2
+ module Predicate
3
+
4
+ class Predicate
5
+ attr_reader :predicate, :facts
6
+ def initialize( name )
7
+ @predicate = name
8
+ @facts = []
9
+ end
10
+ def <<(args)
11
+ @facts << args
12
+ end
13
+ end
14
+
15
+ # Criterion is a psuedo-method probe
16
+ class Criterion
17
+ attr_accessor :expression, :matches
18
+ def initialize(exp)
19
+ @expression = exp
20
+ @matches = []
21
+ end
22
+ def match( value )
23
+ if @expression.is_a?(Regexp)
24
+ @matches << value if value =~ @expression
25
+ else
26
+ @matches << value if value == @expression
27
+ end
28
+ end
29
+ end
30
+
31
+ class Tester
32
+ attr_reader :value
33
+ def initialize(v)
34
+ @value = v
35
+ end
36
+ end
37
+
38
+
39
+ module LogicInclusion
40
+
41
+ def predicate( st, *args )
42
+ spred = ( (@predicates ||= {})[st] ||= Predicate.new(st) )
43
+ if args.any? { |a| a.is_a?(Regexp) || a.is_a?(Criterion) }
44
+ # every arugument is a criterion probe
45
+ cargs = args.collect { |a| (a.is_a?(Criterion) ? a : Criterion.new(a)) }
46
+ # update criterion matches
47
+ spred.facts.each { |f| f.each_with_index { |a,i| cargs[i].match(a) } }
48
+ # criterion probe
49
+ send("#{st}_?", *cargs)
50
+ # collect the match arrays
51
+ nargs = cargs.collect { |c| c.matches }
52
+ # deduce
53
+ perms = LogicExtension.permutations(nargs)
54
+ deductions = perms.collect { |_p|
55
+ _t = _p.collect { |v| Tester.new(v) }
56
+ _p if send(st,*_t)
57
+ }.compact
58
+ return spred.facts + deductions
59
+ elsif args.all? { |a| a.is_a?(Tester) }
60
+ if spred.facts.include?( args.collect { |t| t.value } )
61
+ return true
62
+ else
63
+ return send("#{st}_?", *args)
64
+ end
65
+ else
66
+ #puts "Defining fact #{st}(" + args.join(',') + ')'
67
+ spred << args
68
+ end
69
+ end
70
+
71
+ end # LogicInclusion
72
+
73
+
74
+ module LogicExtension
75
+
76
+ def self.permutations( arr, prepend=[] )
77
+ head = arr[0]
78
+ tail = arr[1..-1]
79
+ perms = []
80
+ if tail.empty?
81
+ head.each { |h| perms << (prepend + [h]) }
82
+ else
83
+ head.each { |h| perms = perms | permutations(tail, (prepend + [h])) }
84
+ end
85
+ return perms
86
+ end
87
+
88
+ def method_added( st )
89
+ #if st.to_s[-1..-1] != '?' && !method_defined?("#{st}_?")
90
+ if !@prevent_method_added
91
+ @prevent_method_added = true
92
+ #puts "Defining predicate #{st}"
93
+ alias_method("#{st}_?".intern, st)
94
+ module_eval %Q{
95
+ def #{st}(*args)
96
+ predicate(:#{st}, *args)
97
+ end
98
+ def #{st}?(*args)
99
+ targs = args.collect { |a| Tester.new(a) }
100
+ #{st}(*targs)
101
+ end
102
+ }
103
+ @prevent_method_added = false
104
+ end
105
+ end
106
+
107
+ end # LogicalExtension
108
+
109
+ end # PredicateLogic
@@ -0,0 +1,67 @@
1
+
2
+ require 'test/unit'
3
+ require 'raspberry/succ/predicate'
4
+
5
+ module TestLogic
6
+
7
+ include Predicate::LogicInclusion
8
+ extend Predicate::LogicExtension
9
+
10
+ def man(x)
11
+ end
12
+
13
+ def woman(x)
14
+ end
15
+
16
+ def tool(x)
17
+ end
18
+
19
+ def mortal(x)
20
+ woman(x) | man(x)
21
+ end
22
+
23
+ def can_use(x, y)
24
+ ( man(x) | woman(x) ) & tool(y)
25
+ end
26
+
27
+ end
28
+
29
+ class TC_Predicate < Test::Unit::TestCase
30
+
31
+ include TestLogic
32
+
33
+ def setup
34
+ man('socrates')
35
+ woman('dido')
36
+ tool('hammer')
37
+ can_use('me', 'ball')
38
+ end
39
+
40
+ def test_facts
41
+ assert(man?('socrates'), "man?('socrates')")
42
+ assert(woman?('dido'), "woman?('dido')")
43
+ assert(tool?('hammer'), "tool?('hammer')")
44
+ assert(can_use?('me', 'ball'), "can_use?('me', 'ball')")
45
+ end
46
+
47
+ def test_deductions
48
+ assert(mortal?('socrates'))
49
+ assert(mortal?('dido'))
50
+ assert(can_use?('socrates','hammer'))
51
+ assert(can_use?('dido','hammer'))
52
+ end
53
+
54
+ def test_queries
55
+ assert(man(/.*/).include?(['socrates']))
56
+ assert(woman(/.*/).include?(['dido']))
57
+ assert(mortal(/.*/).include?(['socrates']))
58
+ assert(mortal(/.*/).include?(['dido']))
59
+ assert(can_use(/.*/,/.*/).include?(['socrates', 'hammer']))
60
+ assert(can_use(/.*/,/.*/).include?(['dido', 'hammer']))
61
+ assert(can_use(/.*/,/.*/).include?(['me', 'ball']))
62
+ end
63
+
64
+ end
65
+
66
+
67
+
@@ -0,0 +1,40 @@
1
+ #!/ur/local/bin/ruby
2
+ # $premshree$ $2005-03-18 03:13$
3
+
4
+ require 'GD'
5
+ include GD
6
+
7
+ img = Image.newFromPng(File.new('firefox.png', 'rb'))
8
+ text = 'FIREFOX'
9
+
10
+ width = img.width
11
+ height = img.height
12
+ temps = [0]*3
13
+ skip_pixels = 1
14
+ skip_lines = 2
15
+ char_next = 0
16
+ print '<pre style="background: #FFFFFF">'
17
+ height.times { |i|
18
+ if temps[2] == 0
19
+ width.times { |j|
20
+ if temps[1] == 0
21
+ idx = img.getPixel(j, i)
22
+ color = img.rgb(idx)
23
+ print "<span style=\"color: rgb(#{color[0]}, #{color[1]},
24
+ #{color[2]}); font-size:10px;\">#{text.split('')[char_next]}</span>"
25
+ char_next = char_next + 1
26
+ if char_next == text.split('').length then char_next = 0 end
27
+ end
28
+ temps[1] = temps[1] + 1
29
+ if temps[1] == skip_pixels then temps[1] = 0 end
30
+ if temps[0] == width
31
+ print '<br />'
32
+ temps[0] = 0
33
+ end
34
+ temps[0] = temps[0] + 1
35
+ }
36
+ end
37
+ temps[2] = temps[2] + 1
38
+ if temps[2] == skip_lines then temps[2] = 0 end
39
+ }
40
+ print '</pre>'
@@ -0,0 +1,183 @@
1
+ =begin
2
+
3
+ = PQueue
4
+
5
+ Priority queue with array based heap.
6
+
7
+ == Authors
8
+
9
+ * Rick Bradley 2003/02/02 (patch for Ruby 1.6.5. Thank you!)
10
+ * K.Kodama 2001/03/10
11
+
12
+ == Legal
13
+
14
+ This is distributed freely in the sence of
15
+ GPL(GNU General Public License).
16
+
17
+ =end
18
+
19
+ class PQueue
20
+
21
+ attr_accessor :qarray
22
+ attr_reader :size
23
+ attr_reader :gt
24
+
25
+ def initialize(&compareProc)
26
+ # By default, retrieves maximal elements first.
27
+ compareProc = ( block_given? ? compareProc : lambda{|x,y| x>y} )
28
+ @qarray=[nil]
29
+ @size=0
30
+ @gt=compareProc
31
+ make_legal
32
+ end
33
+ private :initialize
34
+
35
+ #
36
+ def upheap(k)
37
+ k2 = (k/2).to_i
38
+ v = @qarray[k]
39
+ while ( (k2 > 0) and (@gt[v,@qarray[k2]]) )
40
+ @qarray[k] = @qarray[k2]
41
+ k = k2
42
+ k2 = (k2 / 2).to_i
43
+ end
44
+ @qarray[k] = v
45
+ end
46
+ private :upheap
47
+
48
+ #
49
+ def downheap(k)
50
+ v = @qarray[k]
51
+ q2 = (@size/2).to_i
52
+ loop do
53
+ break if (k > q2)
54
+ j = k + k
55
+ j += 1 if ( (j < @size) and (@gt[@qarray[j+1],@qarray[j]]) )
56
+ break if @gt[v,@qarray[j]]
57
+ @qarray[k] = @qarray[j]
58
+ k = j
59
+ end
60
+ @qarray[k]=v
61
+ end
62
+ private :downheap
63
+
64
+ #
65
+ def make_legal
66
+ (2..@size).each do |k|
67
+ upheap(k)
68
+ end
69
+ end
70
+
71
+ #
72
+ def empty?
73
+ return (0==@size)
74
+ end
75
+
76
+ #
77
+ def clear
78
+ @qarray.replace([nil])
79
+ @size=0
80
+ end
81
+
82
+ # Returns array sorted in increasing order.
83
+ def to_a
84
+ res=@qarray[1..@size];
85
+ res.sort!{|x,y| if @gt[x,y]; 1;elsif @gt[y,x]; -1; else 0; end;}
86
+ return res
87
+ end
88
+
89
+ #
90
+ def replace(arr=[])
91
+ @qarray.replace([nil]+arr); @size=arr.size; make_legal
92
+ end
93
+
94
+ #
95
+ def clone
96
+ q=new; q.qarray=@qarray.clone; q.size=@size; q.gt=@gt; return q;
97
+ end
98
+
99
+ #
100
+ def push(v)
101
+ @size += 1
102
+ @qarray[@size] = v
103
+ upheap(@size)
104
+ end
105
+
106
+ # Return top element. Returns nil if queue is empty.
107
+ def pop
108
+ if @size > 0
109
+ res = @qarray[1]
110
+ @qarray[1] = @qarray[@size]
111
+ @size -= 1
112
+ downheap(1)
113
+ return res
114
+ else
115
+ return nil
116
+ end
117
+ end
118
+
119
+ # Returns top element, non-destructive.
120
+ def top
121
+ @size > 0 ? @qarray[1] : nil
122
+ end
123
+
124
+ # Replace top element if v < top element.
125
+ def replace_low(v)
126
+ if @size > 0
127
+ @qarray[0] = v
128
+ downheap(0)
129
+ return @qarray[0]
130
+ else
131
+ @qarray[1] = v
132
+ return nil
133
+ end
134
+ end
135
+
136
+ # Rreplace top element.
137
+ def replace(v)
138
+ if @size>0
139
+ res=@qarray[1]
140
+ @qarray[1] = v
141
+ downheap(1)
142
+ return res
143
+ else
144
+ @qarray[1] = v
145
+ return nil
146
+ end
147
+ end
148
+
149
+ # Iterate pop. Destructive.
150
+ # Use as self.each_pop{|x| ... }.
151
+ def each_pop
152
+ while(@size>0)
153
+ yield self.pop
154
+ end
155
+ end
156
+
157
+ # Not ordered.
158
+ # Use as self.each_with_index{|e,i| ... }.
159
+ def each_with_index
160
+ (1..@size).each do |i|
161
+ yield( @qarray[i], i )
162
+ end
163
+ end
164
+
165
+ end # class pqueue
166
+
167
+
168
+ # --- test ---
169
+
170
+ if $0 == __FILE__
171
+ pq=PQueue.new{ |x,y| x > y}
172
+ pq.push(2)
173
+ pq.push(3)
174
+ pq.push(4)
175
+ pq.push(3)
176
+ pq.push(2)
177
+ pq.push(4)
178
+ print pq.size.to_s+"\n"
179
+ print pq.to_a.to_s+"\n"
180
+ pq.each_with_index{|x,y| print x.to_s+","+y.to_s+"\n"}
181
+ pq.each_pop{|x| print x.to_s+"\n"}
182
+ end
183
+
@@ -0,0 +1,84 @@
1
+ require 'thread'
2
+
3
+ class PriorityQueue
4
+
5
+ def initialize (*classes)
6
+ @order = classes
7
+ @queues = Hash::new
8
+ classes.each { |c| @queues[c] = Queue::new }
9
+ @ilimit = @order.size
10
+ @waiting = []
11
+ end
12
+
13
+ def push (obj)
14
+ Thread.critical = true
15
+ begin
16
+ @queues[obj.class.to_s].push obj
17
+ t = @waiting.shift
18
+ t.wakeup if t
19
+ rescue ThreadError
20
+ retry
21
+ rescue NameError
22
+ raise NameError, "unknown class queue"
23
+ ensure
24
+ Thread.critical = false
25
+ end
26
+ begin
27
+ t.run if t
28
+ rescue ThreadError
29
+ end
30
+ end
31
+ alias << push
32
+ alias enq push
33
+
34
+ def pop(non_block=false)
35
+ Thread.critical = true
36
+ begin
37
+ loop do
38
+ i = 0
39
+ while (i < @ilimit) and (@queues[@order[i]].empty?)
40
+ i = i + 1
41
+ end
42
+ if i == @ilimit
43
+ if non_block
44
+ raise ThreadError, "queue empty"
45
+ end
46
+ @waiting.push Thread.current
47
+ Thread.stop
48
+ else
49
+ return @queues[@order[i]].shift
50
+ end
51
+ end
52
+ ensure
53
+ Thread.critical = false
54
+ end
55
+ end
56
+ alias shift pop
57
+ alias deq pop
58
+
59
+ def empty?
60
+ epty = true
61
+ @queues.each_value { |q| epty = epty and q.empty? }
62
+ return epty
63
+ end
64
+
65
+ def clear
66
+ @queues.each_value { |q| q.clear }
67
+ end
68
+
69
+ def length
70
+ l = 0
71
+ @queues.each_value { |q| l += q.length }
72
+ return l
73
+ end
74
+
75
+ def size
76
+ length
77
+ end
78
+
79
+ def num_waiting
80
+ @waiting.size
81
+ end
82
+
83
+ end
84
+