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
data/lib/carat/timer.rb
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
=begin rdoc
|
|
2
|
+
|
|
3
|
+
= Timer, with #timed
|
|
4
|
+
|
|
5
|
+
Timer class. Also provides a block method for running a timed procedure.
|
|
6
|
+
|
|
7
|
+
== Usage
|
|
8
|
+
|
|
9
|
+
require 'carat/timer'
|
|
10
|
+
|
|
11
|
+
timed { |timer|
|
|
12
|
+
|
|
13
|
+
timer.total_time.round #=> 0
|
|
14
|
+
|
|
15
|
+
sleep 1
|
|
16
|
+
timer.total_time.round #=> 1
|
|
17
|
+
|
|
18
|
+
timer.stop
|
|
19
|
+
timer.total_time.round #=> 1
|
|
20
|
+
|
|
21
|
+
sleep 2
|
|
22
|
+
timer.total_time.round #=> 1
|
|
23
|
+
|
|
24
|
+
timer.start
|
|
25
|
+
timer.total_time.round #=> 1
|
|
26
|
+
|
|
27
|
+
sleep 1
|
|
28
|
+
timer.total_time.round #=> 2
|
|
29
|
+
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
== Notes
|
|
33
|
+
|
|
34
|
+
I would like to take this and meger it with TimeLimit in some manner.
|
|
35
|
+
|
|
36
|
+
== Author
|
|
37
|
+
|
|
38
|
+
* Paul Brannan <paul@atdesk.com>
|
|
39
|
+
|
|
40
|
+
== Legal
|
|
41
|
+
|
|
42
|
+
Adapted from Ruby Treasures 0.4
|
|
43
|
+
Copyright (C) 2002 Paul Brannan <paul@atdesk.com>
|
|
44
|
+
|
|
45
|
+
You may distribute this software under the same terms as Ruby (see the file
|
|
46
|
+
COPYING that was distributed with this library).
|
|
47
|
+
|
|
48
|
+
=end
|
|
49
|
+
|
|
50
|
+
class Timer
|
|
51
|
+
attr_reader :start_time
|
|
52
|
+
attr_reader :end_time
|
|
53
|
+
|
|
54
|
+
def initialize
|
|
55
|
+
@start_time = nil
|
|
56
|
+
@end_time = nil
|
|
57
|
+
@total_time = 0
|
|
58
|
+
@runnning = nil
|
|
59
|
+
start
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def start
|
|
63
|
+
@start_time = Time.now
|
|
64
|
+
@running = true
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def stop
|
|
68
|
+
@end_time = Time.now
|
|
69
|
+
@total_time += @end_time - @start_time
|
|
70
|
+
@running = false
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def running?
|
|
74
|
+
return @running
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def stopped?
|
|
78
|
+
return !@running
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def total_time
|
|
82
|
+
if running? then
|
|
83
|
+
return @total_time + (Time.now - @start_time)
|
|
84
|
+
else
|
|
85
|
+
return @total_time
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# Takes a block and returns the total time it
|
|
92
|
+
# took to execute.
|
|
93
|
+
module Kernel
|
|
94
|
+
def timed
|
|
95
|
+
timer = Timer.new
|
|
96
|
+
yield(timer)
|
|
97
|
+
return timer.total_time
|
|
98
|
+
end
|
|
99
|
+
end
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
=begin rdoc
|
|
2
|
+
|
|
3
|
+
= TracePoint
|
|
4
|
+
|
|
5
|
+
A TracePoint is a CodePoint (i.e. a Binding) with the addition of event information.
|
|
6
|
+
It functions very well as the join-point for Event-based AOP.
|
|
7
|
+
|
|
8
|
+
== Usage
|
|
9
|
+
|
|
10
|
+
require 'raspberry/tracepoint'
|
|
11
|
+
|
|
12
|
+
TracePoint.trace { |tp|
|
|
13
|
+
puts "#{tp.self.class}\t#{tp.called}\t#{tp.event}\t#{tp.return?}\t#{tp.back == tp.bind}"
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
1 + 1
|
|
17
|
+
|
|
18
|
+
produces
|
|
19
|
+
|
|
20
|
+
Class trace return true false
|
|
21
|
+
Object line false false
|
|
22
|
+
Fixnum + c-call false false
|
|
23
|
+
Fixnum + c-return false false
|
|
24
|
+
|
|
25
|
+
== Version
|
|
26
|
+
|
|
27
|
+
0.2.0
|
|
28
|
+
|
|
29
|
+
=end
|
|
30
|
+
|
|
31
|
+
require 'facet/binding'
|
|
32
|
+
|
|
33
|
+
# This is the same as a Binding. Not really needed, but I like consistency :)
|
|
34
|
+
CodePoint = Binding
|
|
35
|
+
|
|
36
|
+
# You can't subclass Binding, so we delegate (which is better anyway).
|
|
37
|
+
class TracePoint #< CodePoint
|
|
38
|
+
|
|
39
|
+
# -- class ---------------------
|
|
40
|
+
class << self
|
|
41
|
+
|
|
42
|
+
@@active = false
|
|
43
|
+
|
|
44
|
+
def active ; @@active ; end
|
|
45
|
+
|
|
46
|
+
def active=(x)
|
|
47
|
+
@@active = x ? true : false
|
|
48
|
+
unless @@active
|
|
49
|
+
set_trace_func nil
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Trace execution using a TracePoint.
|
|
54
|
+
def trace # :yield:
|
|
55
|
+
if active
|
|
56
|
+
bb_stack = []
|
|
57
|
+
set_trace_func proc{ |e, f, l, m, b, k|
|
|
58
|
+
#(p e, f, l, m, b, k, @@bb_stack; puts "---") if $DEBUG
|
|
59
|
+
if ['call','c-call','class'].include?(e)
|
|
60
|
+
bb_stack << b
|
|
61
|
+
elsif ['return','c-return','end'].include?(e)
|
|
62
|
+
bb = bb_stack.pop
|
|
63
|
+
end
|
|
64
|
+
b = bb if ! b # this sucks!
|
|
65
|
+
tp = TracePoint.new(e,m,b,bb)
|
|
66
|
+
yield(tp)
|
|
67
|
+
}
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
end #class
|
|
72
|
+
|
|
73
|
+
# -- instance -------------------
|
|
74
|
+
|
|
75
|
+
attr_accessor :event, :binding, :back_binding
|
|
76
|
+
|
|
77
|
+
# Until Ruby has a built-in way to get the name of the calling method
|
|
78
|
+
# that information must be passed into the TracePoint.
|
|
79
|
+
def initialize( event, method, bind, back_binding=bind )
|
|
80
|
+
@event = event
|
|
81
|
+
@method = method
|
|
82
|
+
@binding = bind
|
|
83
|
+
@back_binding = back_binding
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
# shorthand for binding
|
|
87
|
+
def bind ; @binding ; end
|
|
88
|
+
|
|
89
|
+
# shorthand for back_binding
|
|
90
|
+
def back ; @back_binding ; end
|
|
91
|
+
|
|
92
|
+
# Delegates "self" to the binding which
|
|
93
|
+
# in turn delegates the binding object.
|
|
94
|
+
def self ; @binding.self ; end
|
|
95
|
+
|
|
96
|
+
# Returns the name of the event's method.
|
|
97
|
+
# This could delegate to the binding if Ruby had
|
|
98
|
+
# an internal way to retrieve the current method name.
|
|
99
|
+
def called ; @method ; end
|
|
100
|
+
alias_method( :method_name, :called )
|
|
101
|
+
alias_method( :me, :called )
|
|
102
|
+
|
|
103
|
+
# delegate to binding
|
|
104
|
+
#def method_missing(meth, *args, &blk)
|
|
105
|
+
# @binding.send(meth, *args, &blk)
|
|
106
|
+
#end
|
|
107
|
+
|
|
108
|
+
### methods for working with events
|
|
109
|
+
|
|
110
|
+
EVENT_MAP = {
|
|
111
|
+
:all => ['call', 'c-call', 'return', 'c-return', 'line', 'class', 'end', 'raise'],
|
|
112
|
+
:before => ['call', 'c-call'],
|
|
113
|
+
:after => ['return', 'c-return'],
|
|
114
|
+
:call => ['call'],
|
|
115
|
+
:return => ['return'],
|
|
116
|
+
:ccall => ['c-call'],
|
|
117
|
+
:creturn => ['c-return'],
|
|
118
|
+
:line => ['line'],
|
|
119
|
+
:class => ['class'],
|
|
120
|
+
:end => ['end'],
|
|
121
|
+
:raise => ['raise']
|
|
122
|
+
}
|
|
123
|
+
def event_map(e) ; EVENT_MAP[e] ; end
|
|
124
|
+
|
|
125
|
+
# Is the trace point defined or undefined?
|
|
126
|
+
def event? ; !! @event ; end
|
|
127
|
+
def eventless? ; ! @event ; end
|
|
128
|
+
|
|
129
|
+
# For use in case conditions
|
|
130
|
+
def ===(e)
|
|
131
|
+
EVENT_MAP[e].include?(@event)
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
# Creates an <event>? method for each of the above event mappings.
|
|
135
|
+
EVENT_MAP.each_pair { |m,v|
|
|
136
|
+
define_method( "#{m}?" ){ v.include?(@event) }
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
# --- test ---
|
|
143
|
+
|
|
144
|
+
if $0 == __FILE__
|
|
145
|
+
|
|
146
|
+
TracePoint.active = true
|
|
147
|
+
|
|
148
|
+
TracePoint.trace { |tp|
|
|
149
|
+
puts "#{tp.self.class}\t#{tp.called}\t#{tp.event}\t#{tp.return?}\t#{tp.back == tp.bind}"
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
1 + 1
|
|
153
|
+
|
|
154
|
+
end
|
data/lib/carat/tuple.rb
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
=begin rdoc
|
|
2
|
+
|
|
3
|
+
= Tuple
|
|
4
|
+
|
|
5
|
+
A Tuple is essentially an Array that is also Comaparable.
|
|
6
|
+
|
|
7
|
+
== Usage
|
|
8
|
+
|
|
9
|
+
t1 = Tuple.new(1,2,3)
|
|
10
|
+
t2 = Tuple.new(2,3,4)
|
|
11
|
+
|
|
12
|
+
t1 > t2 #=> false
|
|
13
|
+
t2 > t1 #=> true
|
|
14
|
+
|
|
15
|
+
== Note
|
|
16
|
+
|
|
17
|
+
This class probably needs some enhancements to
|
|
18
|
+
be truly considered a Tuple. For instance, should
|
|
19
|
+
a Tuple by multiton?
|
|
20
|
+
|
|
21
|
+
=end
|
|
22
|
+
|
|
23
|
+
class Tuple < Array
|
|
24
|
+
include Comparable
|
|
25
|
+
|
|
26
|
+
def initialize(*args)
|
|
27
|
+
super()
|
|
28
|
+
self.concat args
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
#:title: Module Uninheritable
|
|
2
|
+
#--
|
|
3
|
+
# Uninheritable
|
|
4
|
+
# Version 1.2.0
|
|
5
|
+
#
|
|
6
|
+
# Copyright (c) 2003 Austin Ziegler
|
|
7
|
+
#
|
|
8
|
+
# $Id: uninheritable.rb,v 1.2 2003/09/18 03:10:10 austin Exp $
|
|
9
|
+
#
|
|
10
|
+
# ==========================================================================
|
|
11
|
+
# Revision History ::
|
|
12
|
+
# YYYY.MM.DD Developer Description
|
|
13
|
+
# --------------------------------------------------------------------------
|
|
14
|
+
# 2003.09.17 Austin Ziegler Minor modifications to documentation.
|
|
15
|
+
# ==========================================================================
|
|
16
|
+
#++
|
|
17
|
+
|
|
18
|
+
# = Introduction
|
|
19
|
+
#
|
|
20
|
+
# Allows an object to declare itself as unable to be subclassed. The
|
|
21
|
+
# technique behind this is very simple (redefinition of #inherited), so this
|
|
22
|
+
# just provides an easier way to do the same thing with a consistent error
|
|
23
|
+
# message.
|
|
24
|
+
#
|
|
25
|
+
# == Usage
|
|
26
|
+
#
|
|
27
|
+
# require 'uninheritable'
|
|
28
|
+
#
|
|
29
|
+
# class A
|
|
30
|
+
# extend Uninheritable
|
|
31
|
+
# end
|
|
32
|
+
#
|
|
33
|
+
# class B < A; end # => raises TypeError
|
|
34
|
+
#
|
|
35
|
+
# == Info
|
|
36
|
+
#
|
|
37
|
+
# Copyright:: Copyright (c) 2003 Austin Ziegler
|
|
38
|
+
# Licence:: MIT-Style
|
|
39
|
+
# Version:: 1.2.0
|
|
40
|
+
#
|
|
41
|
+
# == Licence
|
|
42
|
+
#
|
|
43
|
+
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
44
|
+
# copy of this software and associated documentation files (the "Software"),
|
|
45
|
+
# to deal in the Software without restriction, including without limitation
|
|
46
|
+
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
47
|
+
# and/or sell copies of the Software, and to permit persons to whom the
|
|
48
|
+
# Software is furnished to do so, subject to the following conditions:
|
|
49
|
+
#
|
|
50
|
+
# The above copyright notice and this permission notice shall be included in
|
|
51
|
+
# all copies or substantial portions of the Software.
|
|
52
|
+
#
|
|
53
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
54
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
55
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
56
|
+
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
57
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
58
|
+
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
59
|
+
# DEALINGS IN THE SOFTWARE.
|
|
60
|
+
#
|
|
61
|
+
module Uninheritable
|
|
62
|
+
VERSION = "1.2.0"
|
|
63
|
+
# Redefines a class's #inherited definition to prevent subclassing of the
|
|
64
|
+
# class extended by this module.
|
|
65
|
+
def inherited(klass)
|
|
66
|
+
raise TypeError, "Class #{self} cannot be subclassed."
|
|
67
|
+
end
|
|
68
|
+
end
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
=begin rdoc
|
|
2
|
+
|
|
3
|
+
= Version
|
|
4
|
+
|
|
5
|
+
A class for manipulating and storing conventional version numbers
|
|
6
|
+
in the form of "1.0.0".
|
|
7
|
+
|
|
8
|
+
== Usage
|
|
9
|
+
|
|
10
|
+
VERSION = Version("1.2.3") # same as Version.new()
|
|
11
|
+
|
|
12
|
+
VERSION.major #=> 1
|
|
13
|
+
VERSION.minor #=> 2
|
|
14
|
+
VERSION.teeny #=> 3
|
|
15
|
+
|
|
16
|
+
VERSION.teeny += 1 #=> 4
|
|
17
|
+
|
|
18
|
+
VERSION > Version(1,2,3) #=> true
|
|
19
|
+
VERSION > Version("1.2.4") #=> false
|
|
20
|
+
|
|
21
|
+
== Author(s)
|
|
22
|
+
|
|
23
|
+
* Minero Aoki
|
|
24
|
+
* Thomas Sawyer
|
|
25
|
+
|
|
26
|
+
== License
|
|
27
|
+
|
|
28
|
+
Based on original by Minero Aoki.
|
|
29
|
+
GPL Copyright (c) 2000-2001 Minero Aoki <aamine at loveruby.net>
|
|
30
|
+
GPL Copyright (c) 2004-2005 Thomas Sawyer <tranfire at gmail.com>
|
|
31
|
+
|
|
32
|
+
This program is free software.
|
|
33
|
+
You can distribute/modify this program under the terms of
|
|
34
|
+
the GNU Lesser General Public License version 2 or later.
|
|
35
|
+
|
|
36
|
+
=end
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class Version
|
|
40
|
+
|
|
41
|
+
VERSION_EXP = /\d+(?:\.\d+)*/
|
|
42
|
+
|
|
43
|
+
def self.[](*args)
|
|
44
|
+
Version.new(*args)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
include Comparable
|
|
48
|
+
|
|
49
|
+
def initialize( arg, *nums )
|
|
50
|
+
set( arg, *nums )
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def set( arg, *nums )
|
|
54
|
+
if String === arg then
|
|
55
|
+
unless m = VERSION_EXP.match( arg ) then
|
|
56
|
+
raise ArgumentError, "wrong version string format '#{arg}'"
|
|
57
|
+
end
|
|
58
|
+
@num = m[0].split('.').collect {|i| i.to_i }
|
|
59
|
+
else
|
|
60
|
+
@num = [ arg, *(nums || []) ]
|
|
61
|
+
#@num.unshift arg
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def dup
|
|
66
|
+
self.class.new( *@nums )
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def ==( other )
|
|
70
|
+
@num == other.to_a
|
|
71
|
+
end
|
|
72
|
+
alias_method( :eql?, :== )
|
|
73
|
+
|
|
74
|
+
def hash ; @num.hash ; end
|
|
75
|
+
|
|
76
|
+
def to_s ; @num.join '.' ; end
|
|
77
|
+
def to_a ; @num.dup ; end
|
|
78
|
+
|
|
79
|
+
def inspect
|
|
80
|
+
"\#<#{self.class} #{to_s}>"
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def major ; @num[0] ; end
|
|
84
|
+
def major=( i ) ; @num[0] = i ; end
|
|
85
|
+
|
|
86
|
+
def minor ; @num[1] ; end
|
|
87
|
+
def minor=( i ) ; @num[1] = i ; end
|
|
88
|
+
|
|
89
|
+
def teeny ; @num[2] ; end
|
|
90
|
+
def teeny=( i ) ; @num[2] = i ; end
|
|
91
|
+
|
|
92
|
+
def weeny ; @num[3] ; end
|
|
93
|
+
def weeny=( i ) ; @num[3] = i ; end
|
|
94
|
+
|
|
95
|
+
def next_major!
|
|
96
|
+
(1..last_index).each{ |i| @num[i] = 0 } if last_index > 0
|
|
97
|
+
@num[0] += 1
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def next_minor!
|
|
101
|
+
(2..last_index).each{ |i| @num[i] = 0 } if last_index > 1
|
|
102
|
+
if @num[1]
|
|
103
|
+
@num[1] += 1
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def next_teeny!
|
|
108
|
+
(3..last_index).each{ |i| @num[i] = 0 } if last_index > 2
|
|
109
|
+
if @num[2]
|
|
110
|
+
@num[2] += 1
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def next_weeny!
|
|
115
|
+
#(4..last_index).each{ |i| @num[i] = 0 } if last_index > 3
|
|
116
|
+
if @num[3]
|
|
117
|
+
@num[3] += 1
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def type
|
|
122
|
+
case last_index
|
|
123
|
+
when 0 then :major
|
|
124
|
+
when 1 then :minor
|
|
125
|
+
when 2 then :teeny
|
|
126
|
+
when 3 then :weeny
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def <=>( other )
|
|
131
|
+
return false unless self.class === other
|
|
132
|
+
n = @num
|
|
133
|
+
ret = nil; other.instance_eval { ret = (n <=> @num) }
|
|
134
|
+
ret
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
private
|
|
138
|
+
|
|
139
|
+
def last_index
|
|
140
|
+
@num.length - 1
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
# not really the ruby way
|
|
146
|
+
#def Version(*args) ; Version.new(*args) ; end
|
|
147
|
+
|