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.
- data/ChangeLog +2 -0
- data/LICENSE +5 -0
- data/README +67 -0
- data/Reapfile +72 -0
- data/ToDo +24 -0
- data/bench/b_harray.rb +49 -0
- data/bench/b_range.rb +64 -0
- data/demo/ansicolor/cdiff.rb +20 -0
- data/demo/ansicolor/example.rb +82 -0
- data/demo/io-reactor/chatserver.rb +347 -0
- data/doc/classes/Array.html +172 -0
- data/doc/classes/BBCode.html +638 -0
- data/doc/classes/BinaryReader.html +675 -0
- data/doc/classes/Binding.html +223 -0
- data/doc/classes/ByteOrder.html +284 -0
- data/doc/classes/Class.html +189 -0
- data/doc/classes/Constant.html +785 -0
- data/doc/classes/Constant/CGS.html +609 -0
- data/doc/classes/Continuation.html +113 -0
- data/doc/classes/Coroutine.html +387 -0
- data/doc/classes/CountingSemaphore.html +337 -0
- data/doc/classes/CrossCase.html +561 -0
- data/doc/classes/DynamicMixin.html +185 -0
- data/doc/classes/EnumerableWithArgs.html +550 -0
- data/doc/classes/Expect.html +428 -0
- data/doc/classes/Expect/DefaultChain.html +113 -0
- data/doc/classes/Expect/SeparatedPattern.html +223 -0
- data/doc/classes/Expect/Timeout.html +167 -0
- data/doc/classes/Expect/UnmatchedMessage.html +160 -0
- data/doc/classes/FileList.html +833 -0
- data/doc/classes/FloatString.html +534 -0
- data/doc/classes/Functor.html +211 -0
- data/doc/classes/HArray.html +1872 -0
- data/doc/classes/HTML.html +328 -0
- data/doc/classes/Heap.html +683 -0
- data/doc/classes/Heap/EmptyHeapException.html +111 -0
- data/doc/classes/Heap/Max.html +176 -0
- data/doc/classes/Heap/Min.html +176 -0
- data/doc/classes/IO.html +108 -0
- data/doc/classes/IO/Reactor.html +790 -0
- data/doc/classes/IO/Redirect.html +289 -0
- data/doc/classes/Infinity.html +320 -0
- data/doc/classes/Interval.html +1014 -0
- data/doc/classes/InvalidNackError.html +161 -0
- data/doc/classes/Kernel.html +204 -0
- data/doc/classes/Lisp.html +1132 -0
- data/doc/classes/Lisp/DottedPair.html +379 -0
- data/doc/classes/Lisp/Format.html +178 -0
- data/doc/classes/Lisp/Format/ArgumentError.html +126 -0
- data/doc/classes/Lisp/Format/Directives.html +155 -0
- data/doc/classes/Lisp/Format/Directives/ArgJump.html +178 -0
- data/doc/classes/Lisp/Format/Directives/Ascii.html +119 -0
- data/doc/classes/Lisp/Format/Directives/BeginCaseConversion.html +185 -0
- data/doc/classes/Lisp/Format/Directives/BeginConditional.html +307 -0
- data/doc/classes/Lisp/Format/Directives/BeginIteration.html +338 -0
- data/doc/classes/Lisp/Format/Directives/Binary.html +157 -0
- data/doc/classes/Lisp/Format/Directives/Character.html +228 -0
- data/doc/classes/Lisp/Format/Directives/CharacterDirective.html +203 -0
- data/doc/classes/Lisp/Format/Directives/ClauseSeparator.html +166 -0
- data/doc/classes/Lisp/Format/Directives/Decimal.html +119 -0
- data/doc/classes/Lisp/Format/Directives/Directive.html +397 -0
- data/doc/classes/Lisp/Format/Directives/DollarFP.html +205 -0
- data/doc/classes/Lisp/Format/Directives/EndCaseConversion.html +174 -0
- data/doc/classes/Lisp/Format/Directives/EndConditional.html +159 -0
- data/doc/classes/Lisp/Format/Directives/EndIteration.html +163 -0
- data/doc/classes/Lisp/Format/Directives/ExpFP.html +252 -0
- data/doc/classes/Lisp/Format/Directives/FFFP.html +224 -0
- data/doc/classes/Lisp/Format/Directives/Factory.html +180 -0
- data/doc/classes/Lisp/Format/Directives/FreshLine.html +175 -0
- data/doc/classes/Lisp/Format/Directives/GeneralFP.html +265 -0
- data/doc/classes/Lisp/Format/Directives/Hexadecimal.html +157 -0
- data/doc/classes/Lisp/Format/Directives/Indirection.html +183 -0
- data/doc/classes/Lisp/Format/Directives/Literal.html +187 -0
- data/doc/classes/Lisp/Format/Directives/NewLine.html +158 -0
- data/doc/classes/Lisp/Format/Directives/NewPage.html +158 -0
- data/doc/classes/Lisp/Format/Directives/Number.html +243 -0
- data/doc/classes/Lisp/Format/Directives/Octal.html +157 -0
- data/doc/classes/Lisp/Format/Directives/Plural.html +177 -0
- data/doc/classes/Lisp/Format/Directives/Print.html +237 -0
- data/doc/classes/Lisp/Format/Directives/Radix.html +432 -0
- data/doc/classes/Lisp/Format/Directives/SExpression.html +157 -0
- data/doc/classes/Lisp/Format/Directives/SkipWhitespace.html +165 -0
- data/doc/classes/Lisp/Format/Directives/Tabulate.html +198 -0
- data/doc/classes/Lisp/Format/Directives/Tilde.html +158 -0
- data/doc/classes/Lisp/Format/Directives/UnknownDirectiveError.html +117 -0
- data/doc/classes/Lisp/Format/Formatter.html +193 -0
- data/doc/classes/Lisp/Format/IncompleteParameterError.html +119 -0
- data/doc/classes/Lisp/Format/IndexError.html +126 -0
- data/doc/classes/Lisp/Format/Lexer.html +479 -0
- data/doc/classes/Lisp/Format/MalformedError.html +119 -0
- data/doc/classes/Lisp/Format/MissingParameterError.html +119 -0
- data/doc/classes/Lisp/Format/ModifierError.html +119 -0
- data/doc/classes/Lisp/Format/Output.html +239 -0
- data/doc/classes/Lisp/Format/ParameterError.html +126 -0
- data/doc/classes/Lisp/Format/Parameters.html +123 -0
- data/doc/classes/Lisp/Format/Parameters/Argument.html +172 -0
- data/doc/classes/Lisp/Format/Parameters/ArgumentCount.html +159 -0
- data/doc/classes/Lisp/Format/Parameters/Character.html +119 -0
- data/doc/classes/Lisp/Format/Parameters/Default.html +120 -0
- data/doc/classes/Lisp/Format/Parameters/Integer.html +119 -0
- data/doc/classes/Lisp/Format/Parameters/Parameter.html +206 -0
- data/doc/classes/Lisp/Format/Parser.html +212 -0
- data/doc/classes/Lisp/Format/Positioned.html +166 -0
- data/doc/classes/Lisp/Format/State.html +455 -0
- data/doc/classes/Lisp/Format/SyntaxError.html +126 -0
- data/doc/classes/Method.html +274 -0
- data/doc/classes/Method/DuckHunter.html +281 -0
- data/doc/classes/Module.html +709 -0
- data/doc/classes/Multiton.html +284 -0
- data/doc/classes/Multiton/New.html +164 -0
- data/doc/classes/Multiton/Semi.html +155 -0
- data/doc/classes/NackClass.html +322 -0
- data/doc/classes/NilClass.html +231 -0
- data/doc/classes/NilComparable.html +179 -0
- data/doc/classes/NotCopyable.html +273 -0
- data/doc/classes/Object.html +261 -0
- data/doc/classes/OpenStructable.html +346 -0
- data/doc/classes/OrderedHash.html +939 -0
- data/doc/classes/Parser.html +515 -0
- data/doc/classes/Parser/Main.html +178 -0
- data/doc/classes/Parser/Marker.html +475 -0
- data/doc/classes/Parser/Registry.html +354 -0
- data/doc/classes/Parser/Token.html +399 -0
- data/doc/classes/Parser/UnitToken.html +222 -0
- data/doc/classes/Ref.html +230 -0
- data/doc/classes/SimpleStringIO.html +183 -0
- data/doc/classes/StaticHash.html +202 -0
- data/doc/classes/String.html +172 -0
- data/doc/classes/Struct.html +181 -0
- data/doc/classes/SuperStruct.html +382 -0
- data/doc/classes/Term.html +156 -0
- data/doc/classes/Term/ANSIColor.html +185 -0
- data/doc/classes/Text.html +138 -0
- data/doc/classes/Text/Soundex.html +222 -0
- data/doc/classes/TextTagIterator.html +911 -0
- data/doc/classes/Time.html +119 -0
- data/doc/classes/Time/Limit.html +303 -0
- data/doc/classes/Time/Limit/Dummy.html +181 -0
- data/doc/classes/Timer.html +351 -0
- data/doc/classes/TracePoint.html +532 -0
- data/doc/classes/Tuple.html +178 -0
- data/doc/classes/Uninheritable.html +213 -0
- data/doc/classes/Version.html +783 -0
- data/doc/created.rid +1 -0
- data/doc/files/LICENSE.html +113 -0
- data/doc/files/README.html +201 -0
- data/doc/files/lib/carat/1st_rb.html +107 -0
- data/doc/files/lib/carat/ansicolor_rb.html +146 -0
- data/doc/files/lib/carat/attr_rb.html +101 -0
- data/doc/files/lib/carat/bbcode_rb.html +152 -0
- data/doc/files/lib/carat/binaryreader_rb.html +114 -0
- data/doc/files/lib/carat/binding-of-caller_rb.html +108 -0
- data/doc/files/lib/carat/byteorder_rb.html +107 -0
- data/doc/files/lib/carat/constant_rb.html +167 -0
- data/doc/files/lib/carat/coroutine_rb.html +156 -0
- data/doc/files/lib/carat/crosscase_rb.html +224 -0
- data/doc/files/lib/carat/duckhunter_rb.html +165 -0
- data/doc/files/lib/carat/dynamic-mixin_rb.html +101 -0
- data/doc/files/lib/carat/enumerable-args_rb.html +140 -0
- data/doc/files/lib/carat/expect_rb.html +137 -0
- data/doc/files/lib/carat/filelist_rb.html +130 -0
- data/doc/files/lib/carat/floatstring_rb.html +126 -0
- data/doc/files/lib/carat/functor_rb.html +140 -0
- data/doc/files/lib/carat/harray_rb.html +128 -0
- data/doc/files/lib/carat/heap_rb.html +154 -0
- data/doc/files/lib/carat/html-helpers_rb.html +116 -0
- data/doc/files/lib/carat/infinity_rb.html +142 -0
- data/doc/files/lib/carat/init_rb.html +127 -0
- data/doc/files/lib/carat/interval_rb.html +162 -0
- data/doc/files/lib/carat/io-reactor_rb.html +211 -0
- data/doc/files/lib/carat/io-redirect_rb.html +132 -0
- data/doc/files/lib/carat/lisp-format_rb.html +187 -0
- data/doc/files/lib/carat/lisp_rb.html +152 -0
- data/doc/files/lib/carat/macro_rb.html +129 -0
- data/doc/files/lib/carat/multiton_rb.html +178 -0
- data/doc/files/lib/carat/nack_rb.html +193 -0
- data/doc/files/lib/carat/nil-comparable_rb.html +126 -0
- data/doc/files/lib/carat/nil-missing_rb.html +101 -0
- data/doc/files/lib/carat/notcopyable_rb.html +166 -0
- data/doc/files/lib/carat/orderedhash_rb.html +107 -0
- data/doc/files/lib/carat/ostructable_rb.html +157 -0
- data/doc/files/lib/carat/parser-old_rb.html +239 -0
- data/doc/files/lib/carat/parser_rb.html +244 -0
- data/doc/files/lib/carat/ref_rb.html +107 -0
- data/doc/files/lib/carat/semaphore_rb.html +132 -0
- data/doc/files/lib/carat/snapshot_rb.html +152 -0
- data/doc/files/lib/carat/soundex_rb.html +128 -0
- data/doc/files/lib/carat/sstruct_rb.html +142 -0
- data/doc/files/lib/carat/statichash_rb.html +150 -0
- data/doc/files/lib/carat/tagiter_rb.html +236 -0
- data/doc/files/lib/carat/timelimit_rb.html +136 -0
- data/doc/files/lib/carat/timer_rb.html +153 -0
- data/doc/files/lib/carat/tracepoint_rb.html +160 -0
- data/doc/files/lib/carat/tuple_rb.html +123 -0
- data/doc/files/lib/carat/uninheritable_rb.html +101 -0
- data/doc/files/lib/carat/version_rb.html +141 -0
- data/doc/fr_class_index.html +159 -0
- data/doc/fr_file_index.html +78 -0
- data/doc/fr_method_index.html +663 -0
- data/doc/index.html +24 -0
- data/doc/rdoc-style.css +208 -0
- data/lib/carat-dev/README +11 -0
- data/lib/carat-dev/access-blocks/access_blocks.rb +42 -0
- data/lib/carat-dev/association/association.rb +70 -0
- data/lib/carat-dev/blankslate/blankslate.rb +51 -0
- data/lib/carat-dev/breakpoint.rb +518 -0
- data/lib/carat-dev/class-constructor/constructor_methods.rb +78 -0
- data/lib/carat-dev/class-constructor/tc_constructor.rb +35 -0
- data/lib/carat-dev/closecall/closecall-test.rb +39 -0
- data/lib/carat-dev/closecall/closecall.rb +101 -0
- data/lib/carat-dev/commandrunner/commandrunner.rb +100 -0
- data/lib/carat-dev/conditional/conditionals.rb +106 -0
- data/lib/carat-dev/daemon/daemon.rb +70 -0
- data/lib/carat-dev/detach/detach.rb +363 -0
- data/lib/carat-dev/detach/tc_detach.rb +57 -0
- data/lib/carat-dev/import-module/import-module-0.81.tar.gz +0 -0
- data/lib/carat-dev/import-module/import-module-0.81/LICENSE +1 -0
- data/lib/carat-dev/import-module/import-module-0.81/Makefile +11 -0
- data/lib/carat-dev/import-module/import-module-0.81/README +4 -0
- data/lib/carat-dev/import-module/import-module-0.81/dev-lib/import-module-hash.rb +49 -0
- data/lib/carat-dev/import-module/import-module-0.81/dev-lib/import-module-pip.rb +71 -0
- data/lib/carat-dev/import-module/import-module-0.81/dev-lib/import-module-unbound-method.rb +36 -0
- data/lib/carat-dev/import-module/import-module-0.81/doc/README-ja.html +293 -0
- data/lib/carat-dev/import-module/import-module-0.81/doc/README-ja.rd +306 -0
- data/lib/carat-dev/import-module/import-module-0.81/doc/README.html +290 -0
- data/lib/carat-dev/import-module/import-module-0.81/doc/README.rd +303 -0
- data/lib/carat-dev/import-module/import-module-0.81/doc/style.css +85 -0
- data/lib/carat-dev/import-module/import-module-0.81/install.rb +99 -0
- data/lib/carat-dev/import-module/import-module-0.81/lib/import-module-single-thread.rb +84 -0
- data/lib/carat-dev/import-module/import-module-0.81/lib/import-module.rb +493 -0
- data/lib/carat-dev/import-module/import-module-0.81/test/Makefile +2 -0
- data/lib/carat-dev/import-module/import-module-0.81/test/test +91 -0
- data/lib/carat-dev/import-module/import-module-0.81/test/test-import-module.rb +936 -0
- data/lib/carat-dev/import-module/import-module-0.81/test/test-import_scope.rb +33 -0
- data/lib/carat-dev/import-module/import-module-0.81/test/test-scope_import.rb +33 -0
- data/lib/carat-dev/import-module/import-module-0.81/test/test-time.rb +184 -0
- data/lib/carat-dev/import-module/import-module-0.81/test/test.sh +91 -0
- data/lib/carat-dev/import-module/import-module-0.81/test/time.rb +135 -0
- data/lib/carat-dev/import-module/import-module-0.81/test/times-do.sh +10 -0
- data/lib/carat-dev/interface_work/SCRAP/i-contracts.rb +37 -0
- data/lib/carat-dev/interface_work/SCRAP/interface.rb +105 -0
- data/lib/carat-dev/interface_work/SCRAP/j-interface/interface-0.1.0.zip +0 -0
- data/lib/carat-dev/interface_work/SCRAP/j-interface/interface-0.1.0/CHANGES +3 -0
- data/lib/carat-dev/interface_work/SCRAP/j-interface/interface-0.1.0/MANIFEST +15 -0
- data/lib/carat-dev/interface_work/SCRAP/j-interface/interface-0.1.0/README +32 -0
- data/lib/carat-dev/interface_work/SCRAP/j-interface/interface-0.1.0/doc/interface.rd +73 -0
- data/lib/carat-dev/interface_work/SCRAP/j-interface/interface-0.1.0/doc/interface.txt +94 -0
- data/lib/carat-dev/interface_work/SCRAP/j-interface/interface-0.1.0/install.rb +16 -0
- data/lib/carat-dev/interface_work/SCRAP/j-interface/interface-0.1.0/lib/interface.rb +50 -0
- data/lib/carat-dev/interface_work/SCRAP/j-interface/interface-0.1.0/test/tc_interface.rb +51 -0
- data/lib/carat-dev/interface_work/SCRAP/j-interface/interface-0.1.0/test/test.rb +29 -0
- data/lib/carat-dev/interface_work/SCRAP/j-interface/interface-0.1.0/test/test_instance.rb +24 -0
- data/lib/carat-dev/interface_work/SCRAP/j-interface/interface-0.1.0/test/test_sub.rb +29 -0
- data/lib/carat-dev/interface_work/SCRAP/j-interface/interface-0.1.0/test/test_unrequire.rb +28 -0
- data/lib/carat-dev/interface_work/contracts/contract.zip +0 -0
- data/lib/carat-dev/interface_work/contracts/contract/doc/classes/Contract.html +376 -0
- data/lib/carat-dev/interface_work/contracts/contract/doc/classes/Contract.src/M000001.html +23 -0
- data/lib/carat-dev/interface_work/contracts/contract/doc/classes/Contract.src/M000002.html +18 -0
- data/lib/carat-dev/interface_work/contracts/contract/doc/classes/Contract.src/M000003.html +19 -0
- data/lib/carat-dev/interface_work/contracts/contract/doc/classes/Contract.src/M000004.html +29 -0
- data/lib/carat-dev/interface_work/contracts/contract/doc/classes/Contract.src/M000005.html +18 -0
- data/lib/carat-dev/interface_work/contracts/contract/doc/classes/Contract.src/M000006.html +18 -0
- data/lib/carat-dev/interface_work/contracts/contract/doc/classes/Contract/ContractError.html +142 -0
- data/lib/carat-dev/interface_work/contracts/contract/doc/classes/Contract/ContractException.html +153 -0
- data/lib/carat-dev/interface_work/contracts/contract/doc/classes/Contract/ContractMismatch.html +125 -0
- data/lib/carat-dev/interface_work/contracts/contract/doc/classes/Module.html +157 -0
- data/lib/carat-dev/interface_work/contracts/contract/doc/classes/Module.src/M000007.html +112 -0
- data/lib/carat-dev/interface_work/contracts/contract/doc/created.rid +1 -0
- data/lib/carat-dev/interface_work/contracts/contract/doc/files/lib/contract/assertions_rb.html +109 -0
- data/lib/carat-dev/interface_work/contracts/contract/doc/files/lib/contract/exception_rb.html +108 -0
- data/lib/carat-dev/interface_work/contracts/contract/doc/files/lib/contract/integration_rb.html +108 -0
- data/lib/carat-dev/interface_work/contracts/contract/doc/files/lib/contract/overrides_rb.html +109 -0
- data/lib/carat-dev/interface_work/contracts/contract/doc/files/lib/contract_rb.html +114 -0
- data/lib/carat-dev/interface_work/contracts/contract/doc/fr_class_index.html +31 -0
- data/lib/carat-dev/interface_work/contracts/contract/doc/fr_file_index.html +31 -0
- data/lib/carat-dev/interface_work/contracts/contract/doc/fr_method_index.html +33 -0
- data/lib/carat-dev/interface_work/contracts/contract/doc/index.html +24 -0
- data/lib/carat-dev/interface_work/contracts/contract/doc/rdoc-style.css +208 -0
- data/lib/carat-dev/interface_work/contracts/contract/lib/contract.rb +88 -0
- data/lib/carat-dev/interface_work/contracts/contract/lib/contract/assertions.rb +37 -0
- data/lib/carat-dev/interface_work/contracts/contract/lib/contract/exception.rb +92 -0
- data/lib/carat-dev/interface_work/contracts/contract/lib/contract/integration.rb +132 -0
- data/lib/carat-dev/interface_work/contracts/contract/lib/contract/overrides.rb +32 -0
- data/lib/carat-dev/interface_work/must.rb +37 -0
- data/lib/carat-dev/interface_work/type.rb +232 -0
- data/lib/carat-dev/main/tc_toplevel.rb +23 -0
- data/lib/carat-dev/main/toplevel.rb +33 -0
- data/lib/carat-dev/main/toplevel_test.rb +24 -0
- data/lib/carat-dev/misc/1.rb +40 -0
- data/lib/carat-dev/misc/misc.rb +44 -0
- data/lib/carat-dev/misc/sys.rb +186 -0
- data/lib/carat-dev/misc/temp.rb +1 -0
- data/lib/carat-dev/misc/utils.rb +518 -0
- data/lib/carat-dev/predicate/predicate.rb +109 -0
- data/lib/carat-dev/predicate/predicate_test.rb +67 -0
- data/lib/carat-dev/premshree.rb +40 -0
- data/lib/carat-dev/priority-queue/pqueue.rb +183 -0
- data/lib/carat-dev/priority-queue/priorityqueue.rb +84 -0
- data/lib/carat-dev/quaternion/quaternion.rb +529 -0
- data/lib/carat-dev/range.rb +259 -0
- data/lib/carat-dev/system/rubyinfo.rb +75 -0
- data/lib/carat-dev/system/system.rb +105 -0
- data/lib/carat-dev/tc_range.rb +118 -0
- data/lib/carat-dev/timer/timer-doc/classes/Timer.html +291 -0
- data/lib/carat-dev/timer/timer-doc/classes/Timer.src/M000001.html +26 -0
- data/lib/carat-dev/timer/timer-doc/classes/Timer.src/M000002.html +19 -0
- data/lib/carat-dev/timer/timer-doc/classes/Timer.src/M000003.html +18 -0
- data/lib/carat-dev/timer/timer-doc/classes/Timer.src/M000004.html +18 -0
- data/lib/carat-dev/timer/timer-doc/classes/Timer.src/M000005.html +21 -0
- data/lib/carat-dev/timer/timer-doc/classes/Timer.src/M000006.html +23 -0
- data/lib/carat-dev/timer/timer-doc/created.rid +1 -0
- data/lib/carat-dev/timer/timer-doc/files/timer_rb.html +144 -0
- data/lib/carat-dev/timer/timer-doc/fr_class_index.html +27 -0
- data/lib/carat-dev/timer/timer-doc/fr_file_index.html +27 -0
- data/lib/carat-dev/timer/timer-doc/fr_method_index.html +32 -0
- data/lib/carat-dev/timer/timer-doc/index.html +24 -0
- data/lib/carat-dev/timer/timer-doc/rdoc-style.css +208 -0
- data/lib/carat-dev/timer/timer.rb +160 -0
- data/lib/carat-dev/vars/vars.rb +62 -0
- data/lib/carat/1st.rb +58 -0
- data/lib/carat/ansicolor.rb +122 -0
- data/lib/carat/attr.rb +342 -0
- data/lib/carat/bbcode.rb +352 -0
- data/lib/carat/binaryreader.rb +170 -0
- data/lib/carat/binding-of-caller.rb +83 -0
- data/lib/carat/byteorder.rb +34 -0
- data/lib/carat/constant.rb +287 -0
- data/lib/carat/coroutine.rb +102 -0
- data/lib/carat/crosscase.rb +309 -0
- data/lib/carat/duckhunter.rb +158 -0
- data/lib/carat/dynamic-mixin.rb +71 -0
- data/lib/carat/enumerable-args.rb +125 -0
- data/lib/carat/expect.rb +192 -0
- data/lib/carat/filelist.rb +277 -0
- data/lib/carat/floatstring.rb +153 -0
- data/lib/carat/functor.rb +41 -0
- data/lib/carat/harray.rb +507 -0
- data/lib/carat/heap.rb +193 -0
- data/lib/carat/html-helpers.rb +82 -0
- data/lib/carat/infinity.rb +61 -0
- data/lib/carat/init.rb +33 -0
- data/lib/carat/interval.rb +248 -0
- data/lib/carat/io-reactor.rb +657 -0
- data/lib/carat/io-redirect.rb +99 -0
- data/lib/carat/lisp-format.rb +1832 -0
- data/lib/carat/lisp.rb +336 -0
- data/lib/carat/macro.rb +68 -0
- data/lib/carat/multiton.rb +153 -0
- data/lib/carat/nack.rb +115 -0
- data/lib/carat/nil-comparable.rb +67 -0
- data/lib/carat/nil-missing.rb +12 -0
- data/lib/carat/notcopyable.rb +68 -0
- data/lib/carat/orderedhash.rb +249 -0
- data/lib/carat/ostructable.rb +138 -0
- data/lib/carat/parser-old.rb +350 -0
- data/lib/carat/parser.rb +393 -0
- data/lib/carat/ref.rb +31 -0
- data/lib/carat/semaphore.rb +69 -0
- data/lib/carat/snapshot.rb +94 -0
- data/lib/carat/soundex.rb +104 -0
- data/lib/carat/sstruct.rb +223 -0
- data/lib/carat/statichash.rb +49 -0
- data/lib/carat/tagiter.rb +345 -0
- data/lib/carat/timelimit.rb +114 -0
- data/lib/carat/timer.rb +99 -0
- data/lib/carat/tracepoint.rb +154 -0
- data/lib/carat/tuple.rb +31 -0
- data/lib/carat/uninheritable.rb +68 -0
- data/lib/carat/version.rb +147 -0
- data/pub/doc/sstruct.txt +204 -0
- data/pub/doc/tagiter.html +145 -0
- data/setup.rb +1361 -0
- data/test/fixtures/filelist/testfile.txt +1 -0
- data/test/fixtures/filelist/testfile2.txt +1 -0
- data/test/tc_1st.rb +16 -0
- data/test/tc_ansicolor.rb +23 -0
- data/test/tc_attr.rb +46 -0
- data/test/tc_bbcode.rb +20 -0
- data/test/tc_binaryreader.rb +14 -0
- data/test/tc_binding_of_caller.rb +2 -0
- data/test/tc_byteorder.rb +41 -0
- data/test/tc_constant.rb +12 -0
- data/test/tc_coroutine.rb +50 -0
- data/test/tc_crosscase.rb +33 -0
- data/test/tc_duckhunter.rb +37 -0
- data/test/tc_dynamic-mixin.rb +66 -0
- data/test/tc_enumerable-args.rb +66 -0
- data/test/tc_expect.rb +83 -0
- data/test/tc_filelist.rb +17 -0
- data/test/tc_floatstring.rb +22 -0
- data/test/tc_functor.rb +18 -0
- data/test/tc_harray.rb +280 -0
- data/test/tc_heap.rb +6 -0
- data/test/tc_infinity.rb +23 -0
- data/test/tc_init.rb +29 -0
- data/test/tc_interval.rb +153 -0
- data/test/tc_io-reactor.rb +5 -0
- data/test/tc_io-redirect.rb +5 -0
- data/test/tc_lisp-format.rb +24 -0
- data/test/tc_lisp.rb +32 -0
- data/test/tc_macro.rb +48 -0
- data/test/tc_multiton.rb +188 -0
- data/test/tc_nack.rb +31 -0
- data/test/tc_nil-as-emptiness.rb +19 -0
- data/test/tc_nil-comparable.rb +29 -0
- data/test/tc_nil-missing.rb +0 -0
- data/test/tc_notcopyable.rb +64 -0
- data/test/tc_orderedhash.rb +36 -0
- data/test/tc_ostructable.rb +31 -0
- data/test/tc_semaphore.rb +5 -0
- data/test/tc_snapshot.rb +20 -0
- data/test/tc_soundex.rb +19 -0
- data/test/tc_sstruct.rb +313 -0
- data/test/tc_statichash.rb +24 -0
- data/test/tc_tagiter.rb +80 -0
- data/test/tc_timelimit.rb +47 -0
- data/test/tc_timer.rb +35 -0
- data/test/tc_tracepoint.rb +10 -0
- data/test/tc_tuple.rb +25 -0
- data/test/tc_uninheritable.rb +33 -0
- data/test/tc_version.rb +90 -0
- metadata +531 -0
@@ -0,0 +1,37 @@
|
|
1
|
+
|
2
|
+
class ImplementationError < StandardError
|
3
|
+
end
|
4
|
+
|
5
|
+
# namespace to store contracts
|
6
|
+
module InterfaceContracts
|
7
|
+
end
|
8
|
+
|
9
|
+
class Module
|
10
|
+
|
11
|
+
def implements(*klasses)
|
12
|
+
klasses.each do |klass|
|
13
|
+
unless klass === Class
|
14
|
+
InterfaceContracts.module_eval %Q{
|
15
|
+
class ::InterfaceContracts::#{klass} < ::#{klass}; end
|
16
|
+
#{klass}.freeze
|
17
|
+
}
|
18
|
+
end
|
19
|
+
end
|
20
|
+
ifc_str = '[' + klasses.collect { |k| "InterfaceContracts::#{k.name}" }.join(',') + ']'
|
21
|
+
ifm = Module.new
|
22
|
+
ifm.module_eval %Q{
|
23
|
+
def initialize(*args)
|
24
|
+
#{ifc_str}.each do |k|
|
25
|
+
umeths = k.public_instance_methods(true) - self.public_methods
|
26
|
+
if umeths != []
|
27
|
+
raise ImplementationError, self.class.name + " as " + k.name + "\n" + umeths.sort.join(', ')
|
28
|
+
end
|
29
|
+
end
|
30
|
+
super
|
31
|
+
end
|
32
|
+
}
|
33
|
+
class_eval { include ifm }
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
@@ -0,0 +1,105 @@
|
|
1
|
+
# Ruby Treasures 0.4
|
2
|
+
# Copyright (C) 2002 Paul Brannan <paul@atdesk.com>
|
3
|
+
#
|
4
|
+
# You may distribute this software under the same terms as Ruby (see the file
|
5
|
+
# COPYING that was distributed with this library).
|
6
|
+
#
|
7
|
+
##
|
8
|
+
# A hack to allow a mixin to be used like Java's "interfaces".
|
9
|
+
#
|
10
|
+
# E.g.:
|
11
|
+
# <pre>
|
12
|
+
# module Foo
|
13
|
+
# interface_method :foo
|
14
|
+
# interface_method :bar
|
15
|
+
# end
|
16
|
+
#
|
17
|
+
# class XYZ
|
18
|
+
# def bar
|
19
|
+
# end
|
20
|
+
# end
|
21
|
+
#
|
22
|
+
# class Bar < XYZ
|
23
|
+
# include Foo
|
24
|
+
# def foo
|
25
|
+
# puts "foo"
|
26
|
+
# end
|
27
|
+
# end
|
28
|
+
#
|
29
|
+
# b = Bar.new
|
30
|
+
# assert_object_includes_complete(b, Foo)
|
31
|
+
# </pre>
|
32
|
+
#
|
33
|
+
class Module
|
34
|
+
public
|
35
|
+
##
|
36
|
+
# Determine if a class includes a module, in O(n) time.
|
37
|
+
#
|
38
|
+
# @return true if the class includes the module, false otherwise.
|
39
|
+
#
|
40
|
+
def includes_module?(mod)
|
41
|
+
return included_modules.index(mod)
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
##
|
46
|
+
# Declare an abstract method.
|
47
|
+
#
|
48
|
+
# @param symbol the name of the method.
|
49
|
+
#
|
50
|
+
def interface_method(symbol)
|
51
|
+
self.class_eval %{
|
52
|
+
if not defined?(@@__interface_methods__) then
|
53
|
+
@@__interface_methods__ = Array.new
|
54
|
+
end
|
55
|
+
@@__interface_methods__.push(symbol)
|
56
|
+
}
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
##
|
61
|
+
# Determine if a class includes a module, in O(n) time.
|
62
|
+
#
|
63
|
+
# @return true if the class includes the module, false otherwise.
|
64
|
+
#
|
65
|
+
def assert_class_includes(klass, mod)
|
66
|
+
if not klass.includes_module?(mod) then
|
67
|
+
raise TypeError, "foo_obj should have the Foo interface"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
##
|
72
|
+
# Determine if an object's class includes a module, in O(n) time.
|
73
|
+
#
|
74
|
+
# @return true if the object's class includes the module, false otherwise.
|
75
|
+
#
|
76
|
+
def assert_object_includes(obj, mod)
|
77
|
+
assert_class_includes(obj.class, mod)
|
78
|
+
end
|
79
|
+
|
80
|
+
##
|
81
|
+
# Determine if a class includes a module and implements all the module's
|
82
|
+
# abstract methods, in O(n+m) time.
|
83
|
+
#
|
84
|
+
# @return true if the class includes the module, false otherwise.
|
85
|
+
#
|
86
|
+
def assert_class_includes_complete(klass, mod)
|
87
|
+
assert_class_includes(klass, mod)
|
88
|
+
imethods = mod.class_eval("@@__interface_methods__")
|
89
|
+
imethods.each do |meth|
|
90
|
+
if not klass.method_defined?(meth) then
|
91
|
+
raise TypeError, "Class #{klass} should have method #{meth} from module #{mod} defined"
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
##
|
97
|
+
# Determine if an object's class includes a module and implements all the
|
98
|
+
# module's abstract methods, in O(n+m) time.
|
99
|
+
#
|
100
|
+
# @return true if the object's class includes the module, false otherwise.
|
101
|
+
#
|
102
|
+
def assert_object_includes_complete(obj, mod)
|
103
|
+
assert_class_includes_complete(obj.class, mod)
|
104
|
+
end
|
105
|
+
|
Binary file
|
@@ -0,0 +1,32 @@
|
|
1
|
+
Quick Description
|
2
|
+
=================
|
3
|
+
This module provides Java style interfaces for Ruby, including a fairly
|
4
|
+
similar syntax. I don't necessarily believe in interfaces, but I wanted to
|
5
|
+
put it out there as proof that it could be done. Frankly, Java needs mixins
|
6
|
+
more than Ruby needs interfaces, but here you go.
|
7
|
+
|
8
|
+
Installation
|
9
|
+
============
|
10
|
+
ruby install.rb (may require root access)
|
11
|
+
|
12
|
+
A bit about how this module came to be
|
13
|
+
======================================
|
14
|
+
A discussion on IRC with Mauricio Fernandez got us talking about traits.
|
15
|
+
During that discussion I remembered a blog entry by David Naseby. I revisited
|
16
|
+
his blog entry (at http://homepages.ihug.com.au/~naseby/33.html) and took
|
17
|
+
a closer look.
|
18
|
+
|
19
|
+
Keep in mind that I also happened to be thinking about Java at the moment
|
20
|
+
because of a recent job switch that involved coding in Java. I was also
|
21
|
+
trying to figure out what good interfaces were.
|
22
|
+
|
23
|
+
As I read the first page of David Naseby's article I realized that,
|
24
|
+
whether intended or not, he had implemented a rudimentary form of interfaces
|
25
|
+
for Ruby. When I discovered this, I talked about it some more with Mauricio
|
26
|
+
and he and I (mostly him) fleshed out the rest of the module, including some
|
27
|
+
syntax improvements. The result is syntax and functionality that is nearly
|
28
|
+
identical to Java.
|
29
|
+
|
30
|
+
I should note that, although I am listed as the author, this was mostly the
|
31
|
+
combined work of David Naseby and Mauricio Fernandez. I just happened to be
|
32
|
+
the guy that put it all together.
|
@@ -0,0 +1,73 @@
|
|
1
|
+
=begin
|
2
|
+
= Description
|
3
|
+
Java style interfaces for Ruby.
|
4
|
+
= Synopsis
|
5
|
+
require "interface"
|
6
|
+
|
7
|
+
MyInterface = interface{
|
8
|
+
required_methods :foo, :bar, :baz
|
9
|
+
}
|
10
|
+
|
11
|
+
# Raises an error until 'baz' is defined
|
12
|
+
class MyClass
|
13
|
+
def foo
|
14
|
+
puts "foo"
|
15
|
+
end
|
16
|
+
def bar
|
17
|
+
puts "bar"
|
18
|
+
end
|
19
|
+
implements MyInterface
|
20
|
+
end
|
21
|
+
= Constants
|
22
|
+
--- Interface::VERSION
|
23
|
+
Returns the current version number of this package as a String.
|
24
|
+
= Methods
|
25
|
+
--- extends(module)
|
26
|
+
An alias for 'extend'.
|
27
|
+
|
28
|
+
--- implements(module)
|
29
|
+
An alias for 'include'. Syntactic sugar for the Java folks. :)
|
30
|
+
|
31
|
+
--- interface(&block)
|
32
|
+
Accepts a block. There are only two methods you should ever pass to this
|
33
|
+
block: required_methods and/or unrequired_methods.
|
34
|
+
|
35
|
+
Subinterfaces will need to 'extend' their parent interface.
|
36
|
+
= Module Methods
|
37
|
+
--- Interface.required_methods(:method1, :method2, ...)
|
38
|
+
Accepts an array of method names that define the interface. When this
|
39
|
+
module is included/implemented, those method names must have already been
|
40
|
+
defined.
|
41
|
+
|
42
|
+
--- Interface.unrequired_methods(:method1, :method2, ...)
|
43
|
+
Accepts an array of method names that are removed as a requirement for
|
44
|
+
implementation.
|
45
|
+
|
46
|
+
Presumably, you would use this in a subinterface where you only wanted a
|
47
|
+
partial implementation of an existing interface.
|
48
|
+
= Error classes
|
49
|
+
--- Interface::MethodMissing
|
50
|
+
Raised if a class or instance does not meet the interface requirements.
|
51
|
+
= Notes
|
52
|
+
Subinterfaces work as well. See the test_sub.rb file under the 'test'
|
53
|
+
directory for a sample.
|
54
|
+
= Acknowledgements
|
55
|
+
This module was largely inspired and somewhat copied from a post by
|
56
|
+
David Naseby at http://homepages.ihug.com.au/~naseby/33.html. It was
|
57
|
+
subsequently modified almost entirely by Mauricio Fernandez through a
|
58
|
+
series of discussions on IRC.
|
59
|
+
= Copyright
|
60
|
+
(C) 2004 Daniel J. Berger
|
61
|
+
All rights reserved.
|
62
|
+
= Warranty
|
63
|
+
This package is provided "as is" and without any express or
|
64
|
+
implied warranties, including, without limitation, the implied
|
65
|
+
warranties of merchantability and fitness for a particular purpose.
|
66
|
+
= License
|
67
|
+
Ruby's
|
68
|
+
= Author
|
69
|
+
Daniel J. Berger (who mostly stole it from David Naseby, which was then
|
70
|
+
modified by Mauricio Fernandez)
|
71
|
+
djberg96 at yahoo dot com
|
72
|
+
rubyhacker1/imperator on IRC
|
73
|
+
=end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
Description
|
2
|
+
===========
|
3
|
+
Java style interfaces for Ruby.
|
4
|
+
|
5
|
+
Synopsis
|
6
|
+
========
|
7
|
+
require "interface"
|
8
|
+
|
9
|
+
MyInterface = interface{
|
10
|
+
required_methods :foo, :bar, :baz
|
11
|
+
}
|
12
|
+
|
13
|
+
# Raises an error until 'baz' is defined
|
14
|
+
class MyClass
|
15
|
+
def foo
|
16
|
+
puts "foo"
|
17
|
+
end
|
18
|
+
def bar
|
19
|
+
puts "bar"
|
20
|
+
end
|
21
|
+
implements MyInterface
|
22
|
+
end
|
23
|
+
|
24
|
+
Constants
|
25
|
+
=========
|
26
|
+
Interface::VERSION
|
27
|
+
Returns the current version number of this package as a String.
|
28
|
+
|
29
|
+
Methods
|
30
|
+
=======
|
31
|
+
extends(module)
|
32
|
+
An alias for 'extend'.
|
33
|
+
|
34
|
+
implements(module)
|
35
|
+
An alias for 'include'. Syntactic sugar for the Java folks. :)
|
36
|
+
|
37
|
+
interface(&block)
|
38
|
+
Accepts a block. There are only two methods you should ever pass to this
|
39
|
+
block: required_methods and/or unrequired_methods.
|
40
|
+
|
41
|
+
Subinterfaces will need to 'extend' their parent interface.
|
42
|
+
|
43
|
+
Module Methods
|
44
|
+
==============
|
45
|
+
Interface.required_methods(:method1, :method2, ...)
|
46
|
+
Accepts an array of method names that define the interface. When this
|
47
|
+
module is included/implemented, those method names must have already been
|
48
|
+
defined.
|
49
|
+
|
50
|
+
Interface.unrequired_methods(:method1, :method2, ...)
|
51
|
+
Accepts an array of method names that are removed as a requirement for
|
52
|
+
implementation.
|
53
|
+
|
54
|
+
Presumably, you would use this in a subinterface where you only wanted a
|
55
|
+
partial implementation of an existing interface.
|
56
|
+
|
57
|
+
Error classes
|
58
|
+
=============
|
59
|
+
Interface::MethodMissing
|
60
|
+
Raised if a class or instance does not meet the interface requirements.
|
61
|
+
|
62
|
+
Notes
|
63
|
+
=====
|
64
|
+
Subinterfaces work as well. See the test_sub.rb file under the 'test'
|
65
|
+
directory for a sample.
|
66
|
+
|
67
|
+
Acknowledgements
|
68
|
+
================
|
69
|
+
This module was largely inspired and somewhat copied from a post by
|
70
|
+
David Naseby at http://homepages.ihug.com.au/~naseby/33.html. It was
|
71
|
+
subsequently modified almost entirely by Mauricio Fernandez through a
|
72
|
+
series of discussions on IRC.
|
73
|
+
|
74
|
+
Copyright
|
75
|
+
=========
|
76
|
+
(C) 2004 Daniel J. Berger
|
77
|
+
All rights reserved.
|
78
|
+
|
79
|
+
Warranty
|
80
|
+
========
|
81
|
+
This package is provided "as is" and without any express or
|
82
|
+
implied warranties, including, without limitation, the implied
|
83
|
+
warranties of merchantability and fitness for a particular purpose.
|
84
|
+
|
85
|
+
License
|
86
|
+
=======
|
87
|
+
Ruby's
|
88
|
+
|
89
|
+
Author
|
90
|
+
======
|
91
|
+
Daniel J. Berger (who mostly stole it from David Naseby, which was then
|
92
|
+
modified by Mauricio Fernandez)
|
93
|
+
djberg96 at yahoo dot com
|
94
|
+
rubyhacker1/imperator on IRC
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'rbconfig'
|
2
|
+
require 'ftools'
|
3
|
+
include Config
|
4
|
+
|
5
|
+
sitelibdir = CONFIG["sitelibdir"]
|
6
|
+
source_file = "lib/interface.rb"
|
7
|
+
|
8
|
+
puts "cp #{source_file} #{sitelibdir}"
|
9
|
+
begin
|
10
|
+
File.copy(source_file,sitelibdir)
|
11
|
+
rescue
|
12
|
+
puts "Error installing interface: [" + $! + "]"
|
13
|
+
exit
|
14
|
+
end
|
15
|
+
|
16
|
+
puts "interface has been successfully installed"
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Interface
|
2
|
+
Interface::VERSION = "0.1.0"
|
3
|
+
class MethodMissing < RuntimeError; end
|
4
|
+
|
5
|
+
def extends(o)
|
6
|
+
extend o
|
7
|
+
end
|
8
|
+
|
9
|
+
def extend_object(o)
|
10
|
+
return append_features(o) if Interface === o
|
11
|
+
append_features(class << o; self end)
|
12
|
+
included(o)
|
13
|
+
end
|
14
|
+
|
15
|
+
def append_features(mod)
|
16
|
+
return super if Interface === mod
|
17
|
+
inherited = (self.ancestors-[self]).select{|x| Interface === x}.
|
18
|
+
map{|x| x.instance_variable_get("@ids")}
|
19
|
+
ids = @ids + inherited.flatten
|
20
|
+
@unreq ||= []
|
21
|
+
(ids-@unreq).uniq.each do |id|
|
22
|
+
unless mod.instance_methods( true ).include?( id.to_s )
|
23
|
+
raise Interface::MethodMissing, id.to_s
|
24
|
+
end
|
25
|
+
end
|
26
|
+
super mod
|
27
|
+
end
|
28
|
+
|
29
|
+
def required_methods(*ids)
|
30
|
+
@ids = ids
|
31
|
+
end
|
32
|
+
|
33
|
+
def unrequired_methods(*ids)
|
34
|
+
@unreq ||= []
|
35
|
+
@unreq += ids
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def interface(&block)
|
40
|
+
mod = Module.new
|
41
|
+
mod.extend Interface
|
42
|
+
mod.instance_eval(&block)
|
43
|
+
mod
|
44
|
+
end
|
45
|
+
|
46
|
+
class Module
|
47
|
+
def implements m
|
48
|
+
include m
|
49
|
+
end
|
50
|
+
end
|