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,84 @@
1
+ #$IMPORT_MODULE_debug = true
2
+ require "import-module"
3
+ module Import_Module
4
+ class Scope
5
+ def set_methods
6
+ meths = @target.get_orig_methods(@source)
7
+ @target.def_orig_methods meths
8
+ #def_methods
9
+ mod = @mod
10
+ @klass.class_eval do include mod end
11
+ end
12
+
13
+ def push()
14
+ def_methods
15
+ c = @target.stack.current
16
+ @target.stack.push(update(c))
17
+ end
18
+
19
+ def pop
20
+ c = @target.stack.pop
21
+ recov_methods(c)
22
+ end
23
+
24
+ private
25
+ def update(c)
26
+ d = c.dup
27
+ @source.methods.__each__ do |meth|
28
+ d[meth] = @mod
29
+ end
30
+ d
31
+ end
32
+
33
+ def def_methods
34
+ mod = @mod
35
+ target = @target
36
+ @source.methods.__each__ do |meth|
37
+ @klass.module_eval do
38
+ alias_method meth, Import_Module.name(meth, mod)
39
+ protected(meth) if target.protecteds.include?(meth)
40
+ private(meth) if target.privates.include?(meth)
41
+ end
42
+ end
43
+ end
44
+
45
+ def recov_methods(c)
46
+ orig_methods = @target.orig_methods
47
+ d = @target.stack.current
48
+ c.__each__ do |meth, mod|
49
+ @klass.module_eval do
50
+ if m = d[meth] || orig_methods[meth] && :orig
51
+ alias_method meth, Import_Module.name(meth, m)
52
+ else
53
+ undef_method meth
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+
60
+ class Target
61
+ def initialize(klass)
62
+ @scopes = {}
63
+ @klass = klass
64
+ @publics = @klass.public_instance_methods(true)#.find_all{|m| @klass.public_method_defined? m}
65
+ @privates = @klass.private_instance_methods(true)#.find_all{|m| @klass.private_method_defined? m}
66
+ @protecteds = @klass.protected_instance_methods(true)#.find_all{|m| @klass.protected_method_defined? m}
67
+ @orig_methods = {}
68
+ @saved_methods = {}
69
+ resist_orig_methods
70
+ @stack = Stack.new([Hash.new]) # diff
71
+ end
72
+ end
73
+
74
+ class Stack
75
+ private
76
+ def export_current; end
77
+ end
78
+ end
79
+
80
+ class << Thread
81
+ alias new new_org
82
+ alias start new_org
83
+ alias fork new_org
84
+ end
@@ -0,0 +1,493 @@
1
+ # import-module.rb ... create scope of methods by module
2
+ # by Shin-ichiro Hara
3
+ #
4
+ # This library is based on the algorithm of `scope-in-state'
5
+ # by Keiju ISHIZUKA
6
+ #
7
+ # Ver. 0.78
8
+ # beta1: adopt ruby-1.8.0
9
+ # beta2:
10
+ # beta3:
11
+ # beta4:
12
+ # beta5:
13
+ #
14
+ # 2003.04.30
15
+ #
16
+ # Example:
17
+ #
18
+ # require "import-module"
19
+ #
20
+ # class Foo
21
+ # def hello
22
+ # puts 'hello'
23
+ # end
24
+ # end
25
+ #
26
+ # module Bar
27
+ # def hello
28
+ # puts 'bye'
29
+ # end
30
+ # end
31
+ #
32
+ # module Baz
33
+ # def hello
34
+ # puts 'good-bye'
35
+ # end
36
+ # end
37
+ #
38
+ # foo = Foo.new
39
+ # foo.hello #=> hello
40
+ # Foo.import_module(Bar) do
41
+ # foo.hello #=> bye
42
+ # Foo.import_module(Baz) do
43
+ # foo.hello #=> good-bye
44
+ # end
45
+ # foo.hello #=> bye
46
+ # end
47
+ # foo.hello #=> hello
48
+ #
49
+ # Foo.import(Bar) do
50
+ # Foo.hello #=> bye
51
+ # end
52
+
53
+ #$IMPORT_MODULE_debug = true
54
+
55
+ ################################################################ kk
56
+ module Import_Module
57
+ IMPORT_MODULE_Version = "0.78beta1"
58
+
59
+ module API
60
+ def import_module(mod)
61
+ scope = adopt_module(mod) #not upper compatible
62
+ if block_given?
63
+ begin
64
+ yield
65
+ ensure
66
+ scope.pop
67
+ end
68
+ end
69
+ end
70
+
71
+ def adopt_module(mod)
72
+ sw = Thread.critical or Thread.critical = true # this 'or' is safe
73
+ unless scope = (@__IMPORT_MODULE_PREFIX_scopes ||= {})[mod.id]
74
+ scope = Scope.create(self, mod)
75
+ @__IMPORT_MODULE_PREFIX_scopes[mod.id] = scope
76
+ end
77
+ scope.push
78
+ Thread.critical = sw
79
+ scope
80
+ end
81
+
82
+ def set_orig_method(meth, orig)
83
+ meth = meth.id2name if meth.is_a? Symbol
84
+ orig = orig.id2name if orig.is_a? Symbol
85
+ meth0 = Import_Module.name(orig, :orig)
86
+ module_eval "def #{meth}(*a, &b); #{meth0}(*a, &b); end\n"
87
+ end
88
+ end
89
+
90
+ def self.name(meth, s, prefix = true)
91
+ name = s.to_s.gsub(/_|::|[^\w]/){|c| "_%03d" % [c[0]]}
92
+ if meth =~ /^[_a-zA-Z][_\w]*$/
93
+ meth = "__" + meth
94
+ else
95
+ meth = "_op" + meth.gsub(/[^\w]/){|c| "%03d" % [c[0]]} + "__"
96
+ end
97
+ (prefix ? "__IMPORT_MODULE_PREFIX_" : "") + name + meth
98
+ end
99
+
100
+ ################################################################ kk
101
+ class Scope
102
+ attr_reader :target, :klass, :source, :mod
103
+ @@cm_no = -1
104
+
105
+ def self.create(klass, mod)
106
+ target = Target.enclose(klass)
107
+ source = Source.enclose(mod)
108
+ scope = enclose(target, source)
109
+ scope.set_methods
110
+ scope
111
+ end
112
+
113
+ def self.enclose(target, source)
114
+ target.scopes[source.mod] ||= new(target, source)
115
+ end
116
+
117
+ def initialize(target, source)
118
+ @target = target
119
+ @klass = target.klass
120
+ @source = source
121
+ @mod = source.mod
122
+ end
123
+
124
+ def activate
125
+ push
126
+ begin
127
+ yield
128
+ ensure
129
+ pop
130
+ end
131
+ end
132
+
133
+ def set_methods
134
+ meths = @target.get_orig_methods(@source)
135
+ @target.def_orig_methods(meths)
136
+ set_meth_no
137
+ def_methods
138
+ mod = @mod
139
+ @klass.class_eval do include mod end
140
+ end
141
+
142
+ def inspect
143
+ "Scope(#{@target.inspect}, #{@source.inspect})"
144
+ end
145
+
146
+ def push()
147
+ c = Thread.current.__IMPORT_MODULE_PREFIX_stack.current
148
+ Thread.current.__IMPORT_MODULE_PREFIX_stack.push(update(c))
149
+ end
150
+
151
+ def pop
152
+ Thread.current.__IMPORT_MODULE_PREFIX_stack.pop
153
+ end
154
+
155
+ # private ### this declearation makes it slow
156
+
157
+ def set_meth_no
158
+ @source.methods.__each__ do |meth|
159
+ @target.meth_no[meth] || @target.meth_no[meth] = (@@cm_no += 1)
160
+ end
161
+ end
162
+
163
+ def update(c)
164
+ d = c.dup
165
+ @source.methods.__each__ do |meth|
166
+ d[@target.meth_no[meth]] = @mod.id
167
+ end
168
+ d
169
+ end
170
+
171
+ def def_methods
172
+ # Define new methods in the target class
173
+ t = ""
174
+ @source.methods.__each__ do |meth|
175
+ puts "#{@klass}> def #{meth}(#{@source.param(meth)})" if $IMPORT_MODULE_debug
176
+ s, = method_code(meth)
177
+ t << s
178
+ end
179
+ @klass.module_eval t
180
+ end
181
+
182
+ def method_code(meth)
183
+ param = @source.param(meth)
184
+ no = @target.meth_no[meth]
185
+ line_no = __LINE__ + 1
186
+ s = "def #{meth}(#{param})\n"
187
+ s << " modid = Thread.current.__IMPORT_MODULE_PREFIX_proxy[#{no}]\n"
188
+ i = 0
189
+ @target.scopes.each_key do |mod|
190
+ s << (i == 0 ? " " : " els") << "if modid == #{mod.id}\n"
191
+ s << " #{Import_Module.name(meth, mod)}(#{param})\n"
192
+ i += 1
193
+ end
194
+ s << " else\n" if i > 0
195
+ s << " #{Import_Module.name(meth, :orig)}(#{param})\n"
196
+ s << " end\n" if i > 0
197
+ s << "end\n"
198
+ s << "protected(:#{meth})\n" if @target.protecteds.include?(meth)
199
+ s << "private(:#{meth})\n" if @target.privates.include?(meth)
200
+ [s, __FILE__, line_no]
201
+ end
202
+ end
203
+
204
+ ################################################################ kk
205
+ class Target
206
+ attr_reader :scopes, :meth_no
207
+ attr_accessor :klass, :stack
208
+ attr_accessor :orig_methods, :saved_methods
209
+ attr_accessor :publics, :privates, :protecteds
210
+
211
+ def self.enclose(klass)
212
+ s = self
213
+ klass.instance_eval do
214
+ @__IMPORT_MODULE_PREFIX_target ||= s.new(klass)
215
+ end
216
+ end
217
+
218
+ def initialize(klass)
219
+ @scopes = {}
220
+ @meth_no = {}
221
+ @klass = klass
222
+ @publics = @klass.public_instance_methods(true)#.find_all{|m| @klass.public_method_defined? m}
223
+ @privates = @klass.private_instance_methods(true)#.find_all{|m| @klass.private_method_defined? m}
224
+ @protecteds = @klass.protected_instance_methods(true)#.find_all{|m| @klass.protected_method_defined? m}
225
+ @orig_methods = {}
226
+ @saved_methods = {}
227
+ resist_orig_methods
228
+ end
229
+
230
+ def inspect
231
+ "Target(#{@klass})"
232
+ end
233
+
234
+ def def_orig_methods(meths, pub_sw = false)
235
+ # Store original methods of the root class
236
+ @klass.module_eval do
237
+ meths.__each__ do |meth|
238
+ meth0 = Import_Module.name(meth, :orig)
239
+ alias_method meth0, meth
240
+ public meth0 if pub_sw
241
+ end
242
+ end
243
+ end
244
+
245
+ def get_orig_methods(source)
246
+ meths = []
247
+ source.methods.__each__ do |meth|
248
+ if @orig_methods[meth] && !@saved_methods[meth]
249
+ @saved_methods[meth] = true
250
+ meths.push meth
251
+ end
252
+ end
253
+ meths
254
+ end
255
+
256
+ private
257
+
258
+ def resist_orig_methods
259
+ @publics.__each__ do |x|
260
+ @orig_methods[x] = true
261
+ end
262
+ @protecteds.__each__ do |x|
263
+ @orig_methods[x] = true
264
+ end
265
+ @privates.__each__ do |x|
266
+ @orig_methods[x] = true
267
+ end
268
+ end
269
+ end
270
+
271
+ ################################################################ kk
272
+ class Source
273
+ attr_reader :mod, :methods
274
+ def self.enclose(mod)
275
+ s = self
276
+ mod.instance_eval do
277
+ @__IMPORT_MODULE_PREFIX_source or
278
+ @__IMPORT_MODULE_PREFIX_source = s.new(mod)
279
+ end
280
+ end
281
+
282
+ def initialize(mod)
283
+ @mod = mod
284
+ @methods = _methods
285
+ store
286
+ end
287
+
288
+ def inspect
289
+ "Source(#{@mod})"
290
+ end
291
+
292
+ def param(meth)
293
+ s = ""
294
+ if (n = @mod.instance_method(meth).arity) >= 0
295
+ n.times do |i| s << "x#{i}, " end
296
+ s << "&b"
297
+ else
298
+ (-n-1).times do |i| s << "x#{i}, " end
299
+ s << "*a, &b"
300
+ end
301
+ end
302
+
303
+ def param0(meth)
304
+ s = ""
305
+ if (n = @mod.instance_method(meth).arity) >= 0
306
+ n.times do |i| s << "x#{i}, " end
307
+ s << "b"
308
+ else
309
+ (-n-1).times do |i| s << "x#{i}, " end
310
+ s << "a, b"
311
+ end
312
+ end
313
+
314
+ private
315
+
316
+ def _methods
317
+ meths = @mod.instance_methods(true)
318
+ meths.concat @mod.protected_instance_methods(true)
319
+ meths.concat @mod.private_instance_methods(true)
320
+ meths.reject!{|f| f =~ /^__IMPORT_MODULE_PREFIX_/ }
321
+ meths
322
+ end
323
+
324
+ def store
325
+ # Store Soruce methods
326
+ methods = @methods
327
+ @mod.module_eval do
328
+ methods.__each__ do |meth|
329
+ meth0 = Import_Module.name(meth, self)
330
+ unless method_defined? meth0
331
+ alias_method meth0, meth
332
+ public meth0 if true
333
+ end
334
+ end
335
+ end
336
+ end
337
+ end
338
+
339
+ ################################################################ kk
340
+ class Stack
341
+ def initialize(a)
342
+ @stack = a
343
+ export_current
344
+ end
345
+
346
+ def dup
347
+ self.class.new(@stack.dup)
348
+ end
349
+
350
+ def current
351
+ @stack.last
352
+ end
353
+
354
+ def push(c)
355
+ @stack.push c
356
+ export_current
357
+ end
358
+
359
+ def nop(scope)
360
+ NO USE
361
+ end
362
+
363
+ def pop
364
+ c = @stack.pop
365
+ export_current
366
+ c
367
+ end
368
+
369
+ private
370
+ def export_current
371
+ Thread.current.__IMPORT_MODULE_PREFIX_proxy = current
372
+ end
373
+ end
374
+ end
375
+
376
+ ################################################################ kk
377
+ Module.module_eval do
378
+ include Import_Module::API
379
+ end
380
+
381
+ class Thread
382
+ attr_accessor :__IMPORT_MODULE_PREFIX_proxy
383
+ attr_accessor :__IMPORT_MODULE_PREFIX_stack
384
+ end
385
+
386
+ class << Thread
387
+ alias new_org new
388
+
389
+ def new(*opts, &b)
390
+ Thread.new_org(Thread.current, *opts) do |parent, *opts|
391
+ Thread.current.__IMPORT_MODULE_PREFIX_stack =
392
+ parent.__IMPORT_MODULE_PREFIX_stack.dup
393
+ yield *opts
394
+ end
395
+ end
396
+ alias start new
397
+ alias fork new
398
+ end
399
+
400
+ Thread.current.__IMPORT_MODULE_PREFIX_stack =
401
+ Import_Module::Stack.new([Array.new])
402
+ # Import_Module::Stack.new([Hash.new])
403
+
404
+ class Object
405
+ def import(mod)
406
+ (class << self; self; end).import_module(mod) do
407
+ yield self
408
+ end
409
+ end
410
+
411
+ def adopt(mod)
412
+ (class << self; self; end).adopt_module(mod)
413
+ self
414
+ end
415
+ end
416
+
417
+ class Array
418
+ alias __each__ each
419
+ end
420
+
421
+ class Hash
422
+ alias __each__ each
423
+ end
424
+
425
+ ################################################################ kk
426
+ if $IMPORT_MODULE_debug
427
+ class Module
428
+ alias include_orig include
429
+ def include(mod)
430
+ puts "#{self}> includes #{mod}"
431
+ include_orig mod
432
+ end
433
+
434
+ alias alias_method_orig alias_method
435
+ def alias_method(a, b)
436
+ a0 = a.sub(/__IMPORT_MODULE_PREFIX_/, "@").sub(/\d+(\d{3})/, '\1')
437
+ b0 = b.sub(/__IMPORT_MODULE_PREFIX_/, "@").sub(/\d+(\d{3})/, '\1')
438
+ puts "#{self}> #{a0} = #{b0}"
439
+ alias_method_orig a, b
440
+ end
441
+
442
+ alias remove_method_orig remove_method
443
+ def remove_method(a)
444
+ a0 = a.sub(/__IMPORT_MODULE_PREFIX_/, "@").sub(/\d+(\d{3})/, '\1')
445
+ puts "#{self}> remove #{a0}"
446
+ remove_method_orig a
447
+ end
448
+
449
+ alias undef_method_orig undef_method
450
+ def undef_method(a)
451
+ a0 = a.sub(/__IMPORT_MODULE_PREFIX_/, "@").sub(/\d+(\d{3})/, '\1')
452
+ puts "#{self}> undef #{a0}"
453
+ undef_method_orig a
454
+ end
455
+ end
456
+ end
457
+
458
+ ################################################################ kk
459
+ if $0 == __FILE__
460
+ class Foo
461
+ def hello
462
+ puts 'hello'
463
+ end
464
+ end
465
+
466
+ module Bar
467
+ def hello
468
+ puts 'bye'
469
+ end
470
+ end
471
+
472
+ module Baz
473
+ def hello
474
+ puts 'good-bye'
475
+ end
476
+ end
477
+
478
+ foo = Foo.new
479
+ foo.hello #=> hello
480
+ Foo.import_module(Bar) do
481
+ foo.hello #=> bye
482
+ Foo.import_module(Baz) do
483
+ foo.hello #=> good-bye
484
+ end
485
+ foo.hello #=> bye
486
+ end
487
+ foo.hello #=> hello
488
+ puts
489
+
490
+ Foo.import(Bar) do
491
+ Foo.hello #=> bye
492
+ end
493
+ end