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,108 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Module: IO</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Module</strong></td>
53
+ <td class="class-name-in-header">IO</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ </td>
59
+ </tr>
60
+
61
+ </table>
62
+ </div>
63
+ <!-- banner header -->
64
+
65
+ <div id="bodyContent">
66
+
67
+
68
+
69
+ <div id="contextContent">
70
+
71
+
72
+
73
+ </div>
74
+
75
+
76
+ </div>
77
+
78
+
79
+ <!-- if includes -->
80
+
81
+ <div id="section">
82
+
83
+ <div id="class-list">
84
+ <h3 class="section-bar">Classes and Modules</h3>
85
+
86
+ Class <a href="IO/Reactor.html" class="link">IO::Reactor</a><br />
87
+ Class <a href="IO/Redirect.html" class="link">IO::Redirect</a><br />
88
+
89
+ </div>
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+ <!-- if method_list -->
98
+
99
+
100
+ </div>
101
+
102
+
103
+ <div id="validator-badges">
104
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
105
+ </div>
106
+
107
+ </body>
108
+ </html>
@@ -0,0 +1,790 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: IO::Reactor</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">IO::Reactor</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/lib/carat/io-reactor_rb.html">
59
+ lib/carat/io-reactor.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ <a href="../Object.html">
69
+ Object
70
+ </a>
71
+ </td>
72
+ </tr>
73
+ </table>
74
+ </div>
75
+ <!-- banner header -->
76
+
77
+ <div id="bodyContent">
78
+
79
+
80
+
81
+ <div id="contextContent">
82
+
83
+ <div id="description">
84
+ <p>
85
+ An object-oriented multiplexing asynchronous <a href="../IO.html">IO</a>
86
+ reactor class.
87
+ </p>
88
+
89
+ </div>
90
+
91
+
92
+ </div>
93
+
94
+ <div id="method-list">
95
+ <h3 class="section-bar">Methods</h3>
96
+
97
+ <div class="name-list">
98
+ <a href="#M000597">add</a>&nbsp;&nbsp;
99
+ <a href="#M000607">clear</a>&nbsp;&nbsp;
100
+ <a href="#M000599">disableEvents</a>&nbsp;&nbsp;
101
+ <a href="#M000609">empty?</a>&nbsp;&nbsp;
102
+ <a href="#M000598">enableEvents</a>&nbsp;&nbsp;
103
+ <a href="#M000610">getPendingEvents</a>&nbsp;&nbsp;
104
+ <a href="#M000611">getReadHandles</a>&nbsp;&nbsp;
105
+ <a href="#M000612">getWriteHandles</a>&nbsp;&nbsp;
106
+ <a href="#M000595">new</a>&nbsp;&nbsp;
107
+ <a href="#M000608">poll</a>&nbsp;&nbsp;
108
+ <a href="#M000596">register</a>&nbsp;&nbsp;
109
+ <a href="#M000606">registered?</a>&nbsp;&nbsp;
110
+ <a href="#M000605">remove</a>&nbsp;&nbsp;
111
+ <a href="#M000603">removeArgs</a>&nbsp;&nbsp;
112
+ <a href="#M000601">removeHandler</a>&nbsp;&nbsp;
113
+ <a href="#M000602">setArgs</a>&nbsp;&nbsp;
114
+ <a href="#M000600">setHandler</a>&nbsp;&nbsp;
115
+ <a href="#M000604">unregister</a>&nbsp;&nbsp;
116
+ </div>
117
+ </div>
118
+
119
+ </div>
120
+
121
+
122
+ <!-- if includes -->
123
+
124
+ <div id="section">
125
+
126
+
127
+ <div id="constants-list">
128
+ <h3 class="section-bar">Constants</h3>
129
+
130
+ <div class="name-list">
131
+ <table summary="Constants">
132
+ <tr class="top-aligned-row context-row">
133
+ <td class="context-item-name">Version</td>
134
+ <td>=</td>
135
+ <td class="context-item-value">/([\d\.]+)/.match( %q{$Revision: 1.13 $} )[1]</td>
136
+ <td width="3em">&nbsp;</td>
137
+ <td class="context-item-desc">
138
+ <a href="../Class.html">Class</a> constants
139
+
140
+ </td>
141
+ </tr>
142
+ <tr class="top-aligned-row context-row">
143
+ <td class="context-item-name">Rcsid</td>
144
+ <td>=</td>
145
+ <td class="context-item-value">%q$Id: reactor.rb,v 1.13 2003/08/04 23:56:14 deveiant Exp $</td>
146
+ </tr>
147
+ <tr class="top-aligned-row context-row">
148
+ <td class="context-item-name">ValidEvents</td>
149
+ <td>=</td>
150
+ <td class="context-item-value">[:read, :write, :error]</td>
151
+ </tr>
152
+ </table>
153
+ </div>
154
+ </div>
155
+
156
+
157
+
158
+ <div id="attribute-list">
159
+ <h3 class="section-bar">Attributes</h3>
160
+
161
+ <div class="name-list">
162
+ <table>
163
+ <tr class="top-aligned-row context-row">
164
+ <td class="context-item-name">handles</td>
165
+ <td class="context-item-value">&nbsp;[R]&nbsp;</td>
166
+ <td class="context-item-desc">
167
+ The Hash of handles (instances of <a href="../IO.html">IO</a> or its
168
+ subclasses) associated with the reactor. The keys are the <a
169
+ href="../IO.html">IO</a> objects, and the values are a Hash of event/s
170
+ =&gt; handler.
171
+
172
+ </td>
173
+ </tr>
174
+ <tr class="top-aligned-row context-row">
175
+ <td class="context-item-name">pendingEvents</td>
176
+ <td class="context-item-value">&nbsp;[R]&nbsp;</td>
177
+ <td class="context-item-desc">
178
+ The Hash of unhandled events which occurred in the last call to <a
179
+ href="Reactor.html#M000608">poll</a>, keyed by handle.
180
+
181
+ </td>
182
+ </tr>
183
+ </table>
184
+ </div>
185
+ </div>
186
+
187
+
188
+
189
+ <!-- if method_list -->
190
+ <div id="methods">
191
+ <h3 class="section-bar">Public Class methods</h3>
192
+
193
+ <div id="method-M000595" class="method-detail">
194
+ <a name="M000595"></a>
195
+
196
+ <div class="method-heading">
197
+ <a href="#M000595" class="method-signature">
198
+ <span class="method-name">new</span><span class="method-args">()</span>
199
+ </a>
200
+ </div>
201
+
202
+ <div class="method-description">
203
+ <p>
204
+ Create and return a new <a href="../IO.html">IO</a> reactor object.
205
+ </p>
206
+ <p><a class="source-toggle" href="#"
207
+ onclick="toggleCode('M000595-source');return false;">[Source]</a></p>
208
+ <div class="method-source-code" id="M000595-source">
209
+ <pre>
210
+ <span class="ruby-comment cmt"># File lib/carat/io-reactor.rb, line 106</span>
211
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
212
+ <span class="ruby-ivar">@handles</span> = <span class="ruby-constant">Hash</span><span class="ruby-operator">::</span><span class="ruby-identifier">new</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">hsh</span>,<span class="ruby-identifier">key</span><span class="ruby-operator">|</span>
213
+ <span class="ruby-identifier">hsh</span>[ <span class="ruby-identifier">key</span> ] = {
214
+ <span class="ruby-identifier">:events</span> =<span class="ruby-operator">&gt;</span> [],
215
+ <span class="ruby-identifier">:handler</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
216
+ <span class="ruby-identifier">:args</span> =<span class="ruby-operator">&gt;</span> [],
217
+ }
218
+ }
219
+ <span class="ruby-ivar">@pendingEvents</span> = <span class="ruby-constant">Hash</span><span class="ruby-operator">::</span><span class="ruby-identifier">new</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">hsh</span>,<span class="ruby-identifier">key</span><span class="ruby-operator">|</span> <span class="ruby-identifier">hsh</span>[ <span class="ruby-identifier">key</span> ] = []}
220
+ <span class="ruby-keyword kw">end</span>
221
+ </pre>
222
+ </div>
223
+ </div>
224
+ </div>
225
+
226
+ <h3 class="section-bar">Public Instance methods</h3>
227
+
228
+ <div id="method-M000597" class="method-detail">
229
+ <a name="M000597"></a>
230
+
231
+ <div class="method-heading">
232
+ <span class="method-name">add</span><span class="method-args">( io, *args, &amp;handler )</span>
233
+ </div>
234
+
235
+ <div class="method-description">
236
+ <p>
237
+ Alias for <a href="Reactor.html#M000596">register</a>
238
+ </p>
239
+ </div>
240
+ </div>
241
+
242
+ <div id="method-M000607" class="method-detail">
243
+ <a name="M000607"></a>
244
+
245
+ <div class="method-heading">
246
+ <a href="#M000607" class="method-signature">
247
+ <span class="method-name">clear</span><span class="method-args">()</span>
248
+ </a>
249
+ </div>
250
+
251
+ <div class="method-description">
252
+ <p>
253
+ Clear all registered handles from the poll object. Returns the handles that
254
+ were cleared.
255
+ </p>
256
+ <p><a class="source-toggle" href="#"
257
+ onclick="toggleCode('M000607-source');return false;">[Source]</a></p>
258
+ <div class="method-source-code" id="M000607-source">
259
+ <pre>
260
+ <span class="ruby-comment cmt"># File lib/carat/io-reactor.rb, line 236</span>
261
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">clear</span>
262
+ <span class="ruby-identifier">rv</span> = <span class="ruby-ivar">@handles</span>.<span class="ruby-identifier">keys</span>
263
+
264
+ <span class="ruby-ivar">@pendingEvents</span>.<span class="ruby-identifier">clear</span>
265
+ <span class="ruby-ivar">@handles</span>.<span class="ruby-identifier">clear</span>
266
+
267
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">rv</span>
268
+ <span class="ruby-keyword kw">end</span>
269
+ </pre>
270
+ </div>
271
+ </div>
272
+ </div>
273
+
274
+ <div id="method-M000599" class="method-detail">
275
+ <a name="M000599"></a>
276
+
277
+ <div class="method-heading">
278
+ <a href="#M000599" class="method-signature">
279
+ <span class="method-name">disableEvents</span><span class="method-args">( io, *events )</span>
280
+ </a>
281
+ </div>
282
+
283
+ <div class="method-description">
284
+ <p>
285
+ Remove the specified <tt>events</tt> from the list that will be polled for
286
+ on the given <tt>io</tt> handle.
287
+ </p>
288
+ <p><a class="source-toggle" href="#"
289
+ onclick="toggleCode('M000599-source');return false;">[Source]</a></p>
290
+ <div class="method-source-code" id="M000599-source">
291
+ <pre>
292
+ <span class="ruby-comment cmt"># File lib/carat/io-reactor.rb, line 174</span>
293
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">disableEvents</span>( <span class="ruby-identifier">io</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">events</span> )
294
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">RuntimeError</span>, <span class="ruby-value str">&quot;Cannot disable the :error event&quot;</span> <span class="ruby-keyword kw">if</span>
295
+ <span class="ruby-identifier">events</span>.<span class="ruby-identifier">include?</span>( <span class="ruby-identifier">:error</span> )
296
+ <span class="ruby-ivar">@handles</span>[ <span class="ruby-identifier">io</span> ][<span class="ruby-identifier">:events</span>] <span class="ruby-operator">-=</span> <span class="ruby-identifier">events</span>
297
+ <span class="ruby-keyword kw">end</span>
298
+ </pre>
299
+ </div>
300
+ </div>
301
+ </div>
302
+
303
+ <div id="method-M000609" class="method-detail">
304
+ <a name="M000609"></a>
305
+
306
+ <div class="method-heading">
307
+ <a href="#M000609" class="method-signature">
308
+ <span class="method-name">empty?</span><span class="method-args">()</span>
309
+ </a>
310
+ </div>
311
+
312
+ <div class="method-description">
313
+ <p>
314
+ Returns <tt>true</tt> if no handles are associated with the receiver.
315
+ </p>
316
+ <p><a class="source-toggle" href="#"
317
+ onclick="toggleCode('M000609-source');return false;">[Source]</a></p>
318
+ <div class="method-source-code" id="M000609-source">
319
+ <pre>
320
+ <span class="ruby-comment cmt"># File lib/carat/io-reactor.rb, line 305</span>
321
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">empty?</span>
322
+ <span class="ruby-ivar">@handles</span>.<span class="ruby-identifier">empty?</span>
323
+ <span class="ruby-keyword kw">end</span>
324
+ </pre>
325
+ </div>
326
+ </div>
327
+ </div>
328
+
329
+ <div id="method-M000598" class="method-detail">
330
+ <a name="M000598"></a>
331
+
332
+ <div class="method-heading">
333
+ <a href="#M000598" class="method-signature">
334
+ <span class="method-name">enableEvents</span><span class="method-args">( io, *events )</span>
335
+ </a>
336
+ </div>
337
+
338
+ <div class="method-description">
339
+ <p>
340
+ Add the specified <tt>events</tt> to the list that will be polled for on
341
+ the given <tt>io</tt> handle.
342
+ </p>
343
+ <p><a class="source-toggle" href="#"
344
+ onclick="toggleCode('M000598-source');return false;">[Source]</a></p>
345
+ <div class="method-source-code" id="M000598-source">
346
+ <pre>
347
+ <span class="ruby-comment cmt"># File lib/carat/io-reactor.rb, line 167</span>
348
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">enableEvents</span>( <span class="ruby-identifier">io</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">events</span> )
349
+ <span class="ruby-ivar">@handles</span>[ <span class="ruby-identifier">io</span> ][<span class="ruby-identifier">:events</span>] <span class="ruby-operator">|=</span> <span class="ruby-identifier">events</span>
350
+ <span class="ruby-keyword kw">end</span>
351
+ </pre>
352
+ </div>
353
+ </div>
354
+ </div>
355
+
356
+ <div id="method-M000608" class="method-detail">
357
+ <a name="M000608"></a>
358
+
359
+ <div class="method-heading">
360
+ <a href="#M000608" class="method-signature">
361
+ <span class="method-name">poll</span><span class="method-args">( timeout=-1 ) {|io, eventMask| ...}</span>
362
+ </a>
363
+ </div>
364
+
365
+ <div class="method-description">
366
+ <p>
367
+ Poll the handles registered to the reactor for pending events. The
368
+ following event types are defined:
369
+ </p>
370
+ <dl>
371
+ <dt><tt>:read</tt></dt><dd>Data may be read from the handle without blocking.
372
+
373
+ </dd>
374
+ <dt><tt>:write</tt></dt><dd>Data may be written to the handle without blocking.
375
+
376
+ </dd>
377
+ <dt><tt>:error</tt></dt><dd>An error has occurred on the handle. This event type is always enabled,
378
+ regardless of whether or not it is passed as one of the <tt>events</tt>.
379
+
380
+ </dd>
381
+ </dl>
382
+ <p>
383
+ Any handlers specified when the handles were registered are run for those
384
+ handles with events. If a block is given, it will be invoked once for each
385
+ handle which doesn&#8217;t have an explicit handler. If no block is given,
386
+ events without explicit handlers are inserted into the reactor&#8217;s
387
+ <tt>pendingEvents</tt> attribute.
388
+ </p>
389
+ <p>
390
+ The <tt>timeout</tt> argument is the number of floating-point seconds to
391
+ wait for an event before returning (ie., fourth argument to the underlying
392
+ <tt>select()</tt> call); negative timeout values will cause <a
393
+ href="Reactor.html#M000608">poll</a> to block until there is at least one
394
+ event to report.
395
+ </p>
396
+ <p>
397
+ This method returns the number of handles on which one or more events
398
+ occurred.
399
+ </p>
400
+ <p><a class="source-toggle" href="#"
401
+ onclick="toggleCode('M000608-source');return false;">[Source]</a></p>
402
+ <div class="method-source-code" id="M000608-source">
403
+ <pre>
404
+ <span class="ruby-comment cmt"># File lib/carat/io-reactor.rb, line 272</span>
405
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">poll</span>( <span class="ruby-identifier">timeout</span>=<span class="ruby-value">-1</span> ) <span class="ruby-comment cmt"># :yields: io, eventMask</span>
406
+ <span class="ruby-identifier">timeout</span> = <span class="ruby-identifier">timeout</span>.<span class="ruby-identifier">to_f</span>
407
+ <span class="ruby-ivar">@pendingEvents</span>.<span class="ruby-identifier">clear</span>
408
+ <span class="ruby-identifier">count</span> = <span class="ruby-value">0</span>
409
+
410
+ <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@handles</span>.<span class="ruby-identifier">empty?</span>
411
+ <span class="ruby-identifier">timeout</span> = <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">timeout</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span>
412
+ <span class="ruby-identifier">eventedHandles</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">getPendingEvents</span>( <span class="ruby-identifier">timeout</span> )
413
+
414
+ <span class="ruby-comment cmt"># For each event of each io that had an event happen, call any</span>
415
+ <span class="ruby-comment cmt"># associated callback, or any provided block, or failing both of</span>
416
+ <span class="ruby-comment cmt"># those, add the event to the hash of unhandled pending events.</span>
417
+ <span class="ruby-identifier">eventedHandles</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">io</span>,<span class="ruby-identifier">events</span><span class="ruby-operator">|</span>
418
+ <span class="ruby-identifier">count</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
419
+ <span class="ruby-identifier">events</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">ev</span><span class="ruby-operator">|</span>
420
+ <span class="ruby-identifier">args</span> = <span class="ruby-ivar">@handles</span>[ <span class="ruby-identifier">io</span> ][<span class="ruby-identifier">:args</span>]
421
+
422
+ <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@handles</span>[ <span class="ruby-identifier">io</span> ][<span class="ruby-identifier">:handler</span>]
423
+ <span class="ruby-ivar">@handles</span>[ <span class="ruby-identifier">io</span> ][<span class="ruby-identifier">:handler</span>].<span class="ruby-identifier">call</span>( <span class="ruby-identifier">io</span>, <span class="ruby-identifier">ev</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> )
424
+ <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">block_given?</span>
425
+ <span class="ruby-keyword kw">yield</span>( <span class="ruby-identifier">io</span>, <span class="ruby-identifier">ev</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> )
426
+ <span class="ruby-keyword kw">else</span>
427
+ <span class="ruby-ivar">@pendingEvents</span>[<span class="ruby-identifier">io</span>].<span class="ruby-identifier">push</span>( <span class="ruby-identifier">ev</span> )
428
+ <span class="ruby-keyword kw">end</span>
429
+ }
430
+ }
431
+ <span class="ruby-keyword kw">end</span>
432
+
433
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">count</span>
434
+ <span class="ruby-keyword kw">end</span>
435
+ </pre>
436
+ </div>
437
+ </div>
438
+ </div>
439
+
440
+ <div id="method-M000596" class="method-detail">
441
+ <a name="M000596"></a>
442
+
443
+ <div class="method-heading">
444
+ <a href="#M000596" class="method-signature">
445
+ <span class="method-name">register</span><span class="method-args">( io, *args, &amp;handler )</span>
446
+ </a>
447
+ </div>
448
+
449
+ <div class="method-description">
450
+ <p>
451
+ Register the specified <a href="../IO.html">IO</a> object with the reactor
452
+ for events given as <tt>args</tt>. The reactor will test the given
453
+ <tt>io</tt> for the events specified whenever <a
454
+ href="Reactor.html#M000608">poll</a> is called. See the <a
455
+ href="Reactor.html#M000608">poll</a> method for a list of valid events. If
456
+ no events are specified, only <tt>:error</tt> events will be polled for.
457
+ </p>
458
+ <p>
459
+ If a <tt>handler</tt> is specified, it will be called whenever the
460
+ <tt>io</tt> has any of the specified <tt>events</tt> occur to it. It should
461
+ take at least two parameters: the <tt>io</tt> and the event.
462
+ </p>
463
+ <p>
464
+ If <tt>args</tt> contains any objects except the Symbols
465
+ &#8216;<tt>:read</tt>&#8217;, &#8216;<tt>:write</tt>&#8217;, or
466
+ &#8216;<tt>:error</tt>&#8217;, and a <tt>handler</tt> is specified, they
467
+ will be saved and passed to handler for each event.
468
+ </p>
469
+ <p>
470
+ Registering a handle will unregister any previously registered
471
+ event/handler+arguments pairs associated with the handle.
472
+ </p>
473
+ <p><a class="source-toggle" href="#"
474
+ onclick="toggleCode('M000596-source');return false;">[Source]</a></p>
475
+ <div class="method-source-code" id="M000596-source">
476
+ <pre>
477
+ <span class="ruby-comment cmt"># File lib/carat/io-reactor.rb, line 148</span>
478
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">register</span>( <span class="ruby-identifier">io</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">handler</span> )
479
+ <span class="ruby-identifier">events</span> = [<span class="ruby-identifier">:read</span>, <span class="ruby-identifier">:write</span>, <span class="ruby-identifier">:error</span>] <span class="ruby-operator">&amp;</span> <span class="ruby-identifier">args</span>
480
+ <span class="ruby-identifier">args</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">events</span>
481
+
482
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">unregister</span>( <span class="ruby-identifier">io</span> )
483
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">enableEvents</span>( <span class="ruby-identifier">io</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">events</span> )
484
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">handler</span>
485
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">setHandler</span>( <span class="ruby-identifier">io</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">handler</span> )
486
+ <span class="ruby-keyword kw">else</span>
487
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">setArgs</span>( <span class="ruby-identifier">io</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> )
488
+ <span class="ruby-keyword kw">end</span>
489
+
490
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">self</span>
491
+ <span class="ruby-keyword kw">end</span>
492
+ </pre>
493
+ </div>
494
+ </div>
495
+ </div>
496
+
497
+ <div id="method-M000606" class="method-detail">
498
+ <a name="M000606"></a>
499
+
500
+ <div class="method-heading">
501
+ <a href="#M000606" class="method-signature">
502
+ <span class="method-name">registered?</span><span class="method-args">( io )</span>
503
+ </a>
504
+ </div>
505
+
506
+ <div class="method-description">
507
+ <p>
508
+ Returns true if the specified <tt>io</tt> is registered with the poll
509
+ object.
510
+ </p>
511
+ <p><a class="source-toggle" href="#"
512
+ onclick="toggleCode('M000606-source');return false;">[Source]</a></p>
513
+ <div class="method-source-code" id="M000606-source">
514
+ <pre>
515
+ <span class="ruby-comment cmt"># File lib/carat/io-reactor.rb, line 229</span>
516
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">registered?</span>( <span class="ruby-identifier">io</span> )
517
+ <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@handles</span>.<span class="ruby-identifier">has_key?</span>( <span class="ruby-identifier">io</span> )
518
+ <span class="ruby-keyword kw">end</span>
519
+ </pre>
520
+ </div>
521
+ </div>
522
+ </div>
523
+
524
+ <div id="method-M000605" class="method-detail">
525
+ <a name="M000605"></a>
526
+
527
+ <div class="method-heading">
528
+ <span class="method-name">remove</span><span class="method-args">( io )</span>
529
+ </div>
530
+
531
+ <div class="method-description">
532
+ <p>
533
+ Alias for <a href="Reactor.html#M000604">unregister</a>
534
+ </p>
535
+ </div>
536
+ </div>
537
+
538
+ <div id="method-M000603" class="method-detail">
539
+ <a name="M000603"></a>
540
+
541
+ <div class="method-heading">
542
+ <a href="#M000603" class="method-signature">
543
+ <span class="method-name">removeArgs</span><span class="method-args">( io )</span>
544
+ </a>
545
+ </div>
546
+
547
+ <div class="method-description">
548
+ <p>
549
+ Remove the arguments for the given handle to the given <tt>args</tt>.
550
+ </p>
551
+ <p><a class="source-toggle" href="#"
552
+ onclick="toggleCode('M000603-source');return false;">[Source]</a></p>
553
+ <div class="method-source-code" id="M000603-source">
554
+ <pre>
555
+ <span class="ruby-comment cmt"># File lib/carat/io-reactor.rb, line 212</span>
556
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">removeArgs</span>( <span class="ruby-identifier">io</span> )
557
+ <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@handles</span>[ <span class="ruby-identifier">io</span> ][<span class="ruby-identifier">:args</span>].<span class="ruby-identifier">clear</span>
558
+ <span class="ruby-keyword kw">end</span>
559
+ </pre>
560
+ </div>
561
+ </div>
562
+ </div>
563
+
564
+ <div id="method-M000601" class="method-detail">
565
+ <a name="M000601"></a>
566
+
567
+ <div class="method-heading">
568
+ <a href="#M000601" class="method-signature">
569
+ <span class="method-name">removeHandler</span><span class="method-args">( io )</span>
570
+ </a>
571
+ </div>
572
+
573
+ <div class="method-description">
574
+ <p>
575
+ Remove and return the handler for events on the given <tt>io</tt> handle.
576
+ </p>
577
+ <p><a class="source-toggle" href="#"
578
+ onclick="toggleCode('M000601-source');return false;">[Source]</a></p>
579
+ <div class="method-source-code" id="M000601-source">
580
+ <pre>
581
+ <span class="ruby-comment cmt"># File lib/carat/io-reactor.rb, line 194</span>
582
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">removeHandler</span>( <span class="ruby-identifier">io</span> )
583
+ <span class="ruby-identifier">rval</span> = <span class="ruby-ivar">@handles</span>[ <span class="ruby-identifier">io</span> ][<span class="ruby-identifier">:handler</span>]
584
+ <span class="ruby-ivar">@handles</span>[ <span class="ruby-identifier">io</span> ][<span class="ruby-identifier">:handler</span>] = <span class="ruby-keyword kw">nil</span>
585
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">removeArgs</span>( <span class="ruby-identifier">io</span> )
586
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">rval</span>
587
+ <span class="ruby-keyword kw">end</span>
588
+ </pre>
589
+ </div>
590
+ </div>
591
+ </div>
592
+
593
+ <div id="method-M000602" class="method-detail">
594
+ <a name="M000602"></a>
595
+
596
+ <div class="method-heading">
597
+ <a href="#M000602" class="method-signature">
598
+ <span class="method-name">setArgs</span><span class="method-args">( io, *args )</span>
599
+ </a>
600
+ </div>
601
+
602
+ <div class="method-description">
603
+ <p>
604
+ Set the additional arguments to pass to the handler for the given
605
+ <tt>io</tt> handle on each event to the given <tt>args</tt>.
606
+ </p>
607
+ <p><a class="source-toggle" href="#"
608
+ onclick="toggleCode('M000602-source');return false;">[Source]</a></p>
609
+ <div class="method-source-code" id="M000602-source">
610
+ <pre>
611
+ <span class="ruby-comment cmt"># File lib/carat/io-reactor.rb, line 204</span>
612
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setArgs</span>( <span class="ruby-identifier">io</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> )
613
+ <span class="ruby-identifier">rval</span> = <span class="ruby-ivar">@handles</span>[ <span class="ruby-identifier">io</span> ][<span class="ruby-identifier">:args</span>]
614
+ <span class="ruby-ivar">@handles</span>[ <span class="ruby-identifier">io</span> ][<span class="ruby-identifier">:args</span>] = <span class="ruby-identifier">args</span>
615
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">rval</span>
616
+ <span class="ruby-keyword kw">end</span>
617
+ </pre>
618
+ </div>
619
+ </div>
620
+ </div>
621
+
622
+ <div id="method-M000600" class="method-detail">
623
+ <a name="M000600"></a>
624
+
625
+ <div class="method-heading">
626
+ <a href="#M000600" class="method-signature">
627
+ <span class="method-name">setHandler</span><span class="method-args">( io, *args, &amp;handler )</span>
628
+ </a>
629
+ </div>
630
+
631
+ <div class="method-description">
632
+ <p>
633
+ Set the handler for events on the given <tt>io</tt> handle to the specified
634
+ <tt>handler</tt>. If any <tt>args</tt> are present, they will be passed as
635
+ an exploded array to the handler for each event. Returns the
636
+ previously-registered handler, if any.
637
+ </p>
638
+ <p><a class="source-toggle" href="#"
639
+ onclick="toggleCode('M000600-source');return false;">[Source]</a></p>
640
+ <div class="method-source-code" id="M000600-source">
641
+ <pre>
642
+ <span class="ruby-comment cmt"># File lib/carat/io-reactor.rb, line 185</span>
643
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setHandler</span>( <span class="ruby-identifier">io</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">handler</span> )
644
+ <span class="ruby-identifier">rval</span> = <span class="ruby-ivar">@handles</span>[ <span class="ruby-identifier">io</span> ][<span class="ruby-identifier">:handler</span>]
645
+ <span class="ruby-ivar">@handles</span>[ <span class="ruby-identifier">io</span> ][<span class="ruby-identifier">:handler</span>] = <span class="ruby-identifier">handler</span>
646
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">setArgs</span>( <span class="ruby-identifier">io</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> )
647
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">rval</span>
648
+ <span class="ruby-keyword kw">end</span>
649
+ </pre>
650
+ </div>
651
+ </div>
652
+ </div>
653
+
654
+ <div id="method-M000604" class="method-detail">
655
+ <a name="M000604"></a>
656
+
657
+ <div class="method-heading">
658
+ <a href="#M000604" class="method-signature">
659
+ <span class="method-name">unregister</span><span class="method-args">( io )</span>
660
+ </a>
661
+ </div>
662
+
663
+ <div class="method-description">
664
+ <p>
665
+ Remove the specified <tt>io</tt> from the receiver&#8217;s list of
666
+ registered handles, if present. Returns the handle if it was registered, or
667
+ <tt>nil</tt> if it was not.
668
+ </p>
669
+ <p><a class="source-toggle" href="#"
670
+ onclick="toggleCode('M000604-source');return false;">[Source]</a></p>
671
+ <div class="method-source-code" id="M000604-source">
672
+ <pre>
673
+ <span class="ruby-comment cmt"># File lib/carat/io-reactor.rb, line 220</span>
674
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">unregister</span>( <span class="ruby-identifier">io</span> )
675
+ <span class="ruby-ivar">@pendingEvents</span>.<span class="ruby-identifier">delete</span>( <span class="ruby-identifier">io</span> )
676
+ <span class="ruby-ivar">@handles</span>.<span class="ruby-identifier">delete</span>( <span class="ruby-identifier">io</span> )
677
+ <span class="ruby-keyword kw">end</span>
678
+ </pre>
679
+ </div>
680
+ </div>
681
+ </div>
682
+
683
+ <h3 class="section-bar">Protected Instance methods</h3>
684
+
685
+ <div id="method-M000610" class="method-detail">
686
+ <a name="M000610"></a>
687
+
688
+ <div class="method-heading">
689
+ <a href="#M000610" class="method-signature">
690
+ <span class="method-name">getPendingEvents</span><span class="method-args">( timeout )</span>
691
+ </a>
692
+ </div>
693
+
694
+ <div class="method-description">
695
+ <p>
696
+ Select on the registered handles, returning a Hash of handles =&gt; events
697
+ for handles which had events occur.
698
+ </p>
699
+ <p><a class="source-toggle" href="#"
700
+ onclick="toggleCode('M000610-source');return false;">[Source]</a></p>
701
+ <div class="method-source-code" id="M000610-source">
702
+ <pre>
703
+ <span class="ruby-comment cmt"># File lib/carat/io-reactor.rb, line 316</span>
704
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getPendingEvents</span>( <span class="ruby-identifier">timeout</span> )
705
+ <span class="ruby-identifier">eventHandles</span> = <span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-identifier">select</span>( <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">getReadHandles</span>, <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">getWriteHandles</span>,
706
+ <span class="ruby-ivar">@handles</span>.<span class="ruby-identifier">keys</span>, <span class="ruby-identifier">timeout</span> ) <span class="ruby-keyword kw">or</span> <span class="ruby-keyword kw">return</span> {}
707
+ <span class="ruby-identifier">eventHash</span> = <span class="ruby-constant">Hash</span><span class="ruby-operator">::</span><span class="ruby-identifier">new</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">hsh</span>,<span class="ruby-identifier">io</span><span class="ruby-operator">|</span> <span class="ruby-identifier">hsh</span>[<span class="ruby-identifier">io</span>] = []}
708
+
709
+ <span class="ruby-comment cmt"># Fill in the hash with pending events of each type</span>
710
+ [<span class="ruby-identifier">:read</span>, <span class="ruby-identifier">:write</span>, <span class="ruby-identifier">:error</span>].<span class="ruby-identifier">each_with_index</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">event</span>,<span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
711
+ <span class="ruby-identifier">eventHandles</span>[<span class="ruby-identifier">i</span>].<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">io</span><span class="ruby-operator">|</span> <span class="ruby-identifier">eventHash</span>[<span class="ruby-identifier">io</span>].<span class="ruby-identifier">push</span>( <span class="ruby-identifier">event</span> )}
712
+ }
713
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">eventHash</span>
714
+ <span class="ruby-keyword kw">end</span>
715
+ </pre>
716
+ </div>
717
+ </div>
718
+ </div>
719
+
720
+ <div id="method-M000611" class="method-detail">
721
+ <a name="M000611"></a>
722
+
723
+ <div class="method-heading">
724
+ <a href="#M000611" class="method-signature">
725
+ <span class="method-name">getReadHandles</span><span class="method-args">()</span>
726
+ </a>
727
+ </div>
728
+
729
+ <div class="method-description">
730
+ <p>
731
+ Return an <a href="../Array.html">Array</a> of handles which have handlers
732
+ for the <tt>:read</tt> event.
733
+ </p>
734
+ <p><a class="source-toggle" href="#"
735
+ onclick="toggleCode('M000611-source');return false;">[Source]</a></p>
736
+ <div class="method-source-code" id="M000611-source">
737
+ <pre>
738
+ <span class="ruby-comment cmt"># File lib/carat/io-reactor.rb, line 331</span>
739
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getReadHandles</span>
740
+ <span class="ruby-ivar">@handles</span>.
741
+ <span class="ruby-identifier">find_all</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">io</span>,<span class="ruby-identifier">hsh</span><span class="ruby-operator">|</span> <span class="ruby-identifier">hsh</span>[<span class="ruby-identifier">:events</span>].<span class="ruby-identifier">include?</span>( <span class="ruby-identifier">:read</span> )}.
742
+ <span class="ruby-identifier">collect</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">io</span>,<span class="ruby-identifier">hsh</span><span class="ruby-operator">|</span> <span class="ruby-identifier">io</span>}
743
+ <span class="ruby-keyword kw">end</span>
744
+ </pre>
745
+ </div>
746
+ </div>
747
+ </div>
748
+
749
+ <div id="method-M000612" class="method-detail">
750
+ <a name="M000612"></a>
751
+
752
+ <div class="method-heading">
753
+ <a href="#M000612" class="method-signature">
754
+ <span class="method-name">getWriteHandles</span><span class="method-args">()</span>
755
+ </a>
756
+ </div>
757
+
758
+ <div class="method-description">
759
+ <p>
760
+ Return an <a href="../Array.html">Array</a> of handles which have handlers
761
+ for the <tt>:write</tt> event.
762
+ </p>
763
+ <p><a class="source-toggle" href="#"
764
+ onclick="toggleCode('M000612-source');return false;">[Source]</a></p>
765
+ <div class="method-source-code" id="M000612-source">
766
+ <pre>
767
+ <span class="ruby-comment cmt"># File lib/carat/io-reactor.rb, line 340</span>
768
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getWriteHandles</span>
769
+ <span class="ruby-ivar">@handles</span>.
770
+ <span class="ruby-identifier">find_all</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">io</span>,<span class="ruby-identifier">hsh</span><span class="ruby-operator">|</span> <span class="ruby-identifier">hsh</span>[<span class="ruby-identifier">:events</span>].<span class="ruby-identifier">include?</span>( <span class="ruby-identifier">:write</span> )}.
771
+ <span class="ruby-identifier">collect</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">io</span>,<span class="ruby-identifier">hsh</span><span class="ruby-operator">|</span> <span class="ruby-identifier">io</span>}
772
+ <span class="ruby-keyword kw">end</span>
773
+ </pre>
774
+ </div>
775
+ </div>
776
+ </div>
777
+
778
+
779
+ </div>
780
+
781
+
782
+ </div>
783
+
784
+
785
+ <div id="validator-badges">
786
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
787
+ </div>
788
+
789
+ </body>
790
+ </html>