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,328 @@
|
|
|
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: HTML</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">HTML</td>
|
|
54
|
+
</tr>
|
|
55
|
+
<tr class="top-aligned-row">
|
|
56
|
+
<td><strong>In:</strong></td>
|
|
57
|
+
<td>
|
|
58
|
+
<a href="../files/lib/carat/html-helpers_rb.html">
|
|
59
|
+
lib/carat/html-helpers.rb
|
|
60
|
+
</a>
|
|
61
|
+
<br />
|
|
62
|
+
</td>
|
|
63
|
+
</tr>
|
|
64
|
+
|
|
65
|
+
</table>
|
|
66
|
+
</div>
|
|
67
|
+
<!-- banner header -->
|
|
68
|
+
|
|
69
|
+
<div id="bodyContent">
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
<div id="contextContent">
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
</div>
|
|
78
|
+
|
|
79
|
+
<div id="method-list">
|
|
80
|
+
<h3 class="section-bar">Methods</h3>
|
|
81
|
+
|
|
82
|
+
<div class="name-list">
|
|
83
|
+
<a href="#M000409">CGI_include!</a>
|
|
84
|
+
<a href="#M000410">FCGI_include!</a>
|
|
85
|
+
<a href="#M000413">esc</a>
|
|
86
|
+
<a href="#M000414">escformat</a>
|
|
87
|
+
<a href="#M000412">marshal_from_html</a>
|
|
88
|
+
<a href="#M000411">marshal_to_html</a>
|
|
89
|
+
<a href="#M000415">render_object</a>
|
|
90
|
+
</div>
|
|
91
|
+
</div>
|
|
92
|
+
|
|
93
|
+
</div>
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
<!-- if includes -->
|
|
97
|
+
<div id="includes">
|
|
98
|
+
<h3 class="section-bar">Included Modules</h3>
|
|
99
|
+
|
|
100
|
+
<div id="includes-list">
|
|
101
|
+
<span class="include-name">XHTML</span>
|
|
102
|
+
<span class="include-name">XHTML</span>
|
|
103
|
+
</div>
|
|
104
|
+
</div>
|
|
105
|
+
|
|
106
|
+
<div id="section">
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
<!-- if method_list -->
|
|
116
|
+
<div id="methods">
|
|
117
|
+
<h3 class="section-bar">Public Class methods</h3>
|
|
118
|
+
|
|
119
|
+
<div id="method-M000409" class="method-detail">
|
|
120
|
+
<a name="M000409"></a>
|
|
121
|
+
|
|
122
|
+
<div class="method-heading">
|
|
123
|
+
<a href="#M000409" class="method-signature">
|
|
124
|
+
<span class="method-name">CGI_include!</span><span class="method-args">()</span>
|
|
125
|
+
</a>
|
|
126
|
+
</div>
|
|
127
|
+
|
|
128
|
+
<div class="method-description">
|
|
129
|
+
<p><a class="source-toggle" href="#"
|
|
130
|
+
onclick="toggleCode('M000409-source');return false;">[Source]</a></p>
|
|
131
|
+
<div class="method-source-code" id="M000409-source">
|
|
132
|
+
<pre>
|
|
133
|
+
<span class="ruby-comment cmt"># File lib/carat/html-helpers.rb, line 26</span>
|
|
134
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-constant">CGI_include!</span>
|
|
135
|
+
<span class="ruby-identifier">require</span> <span class="ruby-value str">'cgi'</span>
|
|
136
|
+
<span class="ruby-constant">CGI</span>.<span class="ruby-identifier">class_eval</span> { <span class="ruby-identifier">include</span> <span class="ruby-constant">XHTML</span> }
|
|
137
|
+
<span class="ruby-keyword kw">end</span>
|
|
138
|
+
</pre>
|
|
139
|
+
</div>
|
|
140
|
+
</div>
|
|
141
|
+
</div>
|
|
142
|
+
|
|
143
|
+
<div id="method-M000410" class="method-detail">
|
|
144
|
+
<a name="M000410"></a>
|
|
145
|
+
|
|
146
|
+
<div class="method-heading">
|
|
147
|
+
<a href="#M000410" class="method-signature">
|
|
148
|
+
<span class="method-name">FCGI_include!</span><span class="method-args">()</span>
|
|
149
|
+
</a>
|
|
150
|
+
</div>
|
|
151
|
+
|
|
152
|
+
<div class="method-description">
|
|
153
|
+
<p><a class="source-toggle" href="#"
|
|
154
|
+
onclick="toggleCode('M000410-source');return false;">[Source]</a></p>
|
|
155
|
+
<div class="method-source-code" id="M000410-source">
|
|
156
|
+
<pre>
|
|
157
|
+
<span class="ruby-comment cmt"># File lib/carat/html-helpers.rb, line 31</span>
|
|
158
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-constant">FCGI_include!</span>
|
|
159
|
+
<span class="ruby-identifier">require</span> <span class="ruby-value str">'fcgi'</span>
|
|
160
|
+
<span class="ruby-constant">FCGI</span>.<span class="ruby-identifier">class_eval</span> { <span class="ruby-identifier">include</span> <span class="ruby-constant">XHTML</span> }
|
|
161
|
+
<span class="ruby-keyword kw">end</span>
|
|
162
|
+
</pre>
|
|
163
|
+
</div>
|
|
164
|
+
</div>
|
|
165
|
+
</div>
|
|
166
|
+
|
|
167
|
+
<h3 class="section-bar">Public Instance methods</h3>
|
|
168
|
+
|
|
169
|
+
<div id="method-M000413" class="method-detail">
|
|
170
|
+
<a name="M000413"></a>
|
|
171
|
+
|
|
172
|
+
<div class="method-heading">
|
|
173
|
+
<a href="#M000413" class="method-signature">
|
|
174
|
+
<span class="method-name">esc</span><span class="method-args">(str)</span>
|
|
175
|
+
</a>
|
|
176
|
+
</div>
|
|
177
|
+
|
|
178
|
+
<div class="method-description">
|
|
179
|
+
<p>
|
|
180
|
+
Return an html "safe" version of the string, where every &,
|
|
181
|
+
< and > are replaced with appropriate entities.
|
|
182
|
+
</p>
|
|
183
|
+
<p><a class="source-toggle" href="#"
|
|
184
|
+
onclick="toggleCode('M000413-source');return false;">[Source]</a></p>
|
|
185
|
+
<div class="method-source-code" id="M000413-source">
|
|
186
|
+
<pre>
|
|
187
|
+
<span class="ruby-comment cmt"># File lib/carat/html-helpers.rb, line 57</span>
|
|
188
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">esc</span>(<span class="ruby-identifier">str</span>)
|
|
189
|
+
<span class="ruby-identifier">str</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/&/</span>,<span class="ruby-value str">'&amp;'</span>).<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/</</span>,<span class="ruby-value str">'&lt;'</span>).<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/>/</span>,<span class="ruby-value str">'&gt;'</span>)
|
|
190
|
+
<span class="ruby-keyword kw">end</span>
|
|
191
|
+
</pre>
|
|
192
|
+
</div>
|
|
193
|
+
</div>
|
|
194
|
+
</div>
|
|
195
|
+
|
|
196
|
+
<div id="method-M000414" class="method-detail">
|
|
197
|
+
<a name="M000414"></a>
|
|
198
|
+
|
|
199
|
+
<div class="method-heading">
|
|
200
|
+
<a href="#M000414" class="method-signature">
|
|
201
|
+
<span class="method-name">escformat</span><span class="method-args">(str)</span>
|
|
202
|
+
</a>
|
|
203
|
+
</div>
|
|
204
|
+
|
|
205
|
+
<div class="method-description">
|
|
206
|
+
<p>
|
|
207
|
+
Calls <a href="HTML.html#M000413">esc</a>, and then further replaces
|
|
208
|
+
carriage returns and quote characters with entities.
|
|
209
|
+
</p>
|
|
210
|
+
<p><a class="source-toggle" href="#"
|
|
211
|
+
onclick="toggleCode('M000414-source');return false;">[Source]</a></p>
|
|
212
|
+
<div class="method-source-code" id="M000414-source">
|
|
213
|
+
<pre>
|
|
214
|
+
<span class="ruby-comment cmt"># File lib/carat/html-helpers.rb, line 62</span>
|
|
215
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">escformat</span>(<span class="ruby-identifier">str</span>)
|
|
216
|
+
<span class="ruby-identifier">xmlsafe</span>(<span class="ruby-identifier">str</span>).<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/[\r\n]+/</span>,<span class="ruby-value str">'&#13;&#10;'</span>).<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">%r|"|</span>,<span class="ruby-value str">'&quot;'</span>).<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">%r|'|</span>,<span class="ruby-value str">'&#39;'</span>)
|
|
217
|
+
<span class="ruby-keyword kw">end</span>
|
|
218
|
+
</pre>
|
|
219
|
+
</div>
|
|
220
|
+
</div>
|
|
221
|
+
</div>
|
|
222
|
+
|
|
223
|
+
<div id="method-M000412" class="method-detail">
|
|
224
|
+
<a name="M000412"></a>
|
|
225
|
+
|
|
226
|
+
<div class="method-heading">
|
|
227
|
+
<a href="#M000412" class="method-signature">
|
|
228
|
+
<span class="method-name">marshal_from_html</span><span class="method-args">(name)</span>
|
|
229
|
+
</a>
|
|
230
|
+
</div>
|
|
231
|
+
|
|
232
|
+
<div class="method-description">
|
|
233
|
+
<p>
|
|
234
|
+
Create an hidden input field throught which an object can can be
|
|
235
|
+
marshalled. This makes it very easy to pass from data betwenn requests.
|
|
236
|
+
</p>
|
|
237
|
+
<p><a class="source-toggle" href="#"
|
|
238
|
+
onclick="toggleCode('M000412-source');return false;">[Source]</a></p>
|
|
239
|
+
<div class="method-source-code" id="M000412-source">
|
|
240
|
+
<pre>
|
|
241
|
+
<span class="ruby-comment cmt"># File lib/carat/html-helpers.rb, line 49</span>
|
|
242
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">marshal_from_html</span>(<span class="ruby-identifier">name</span>)
|
|
243
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-constant">Marshal</span>.<span class="ruby-identifier">load</span>(<span class="ruby-constant">CGI</span>.<span class="ruby-identifier">unescape</span>(<span class="ruby-keyword kw">self</span>[<span class="ruby-node">"__#{name}__"</span>][<span class="ruby-value">0</span>])) <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">params</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-node">"__#{name}__"</span>)
|
|
244
|
+
<span class="ruby-keyword kw">end</span>
|
|
245
|
+
</pre>
|
|
246
|
+
</div>
|
|
247
|
+
</div>
|
|
248
|
+
</div>
|
|
249
|
+
|
|
250
|
+
<div id="method-M000411" class="method-detail">
|
|
251
|
+
<a name="M000411"></a>
|
|
252
|
+
|
|
253
|
+
<div class="method-heading">
|
|
254
|
+
<a href="#M000411" class="method-signature">
|
|
255
|
+
<span class="method-name">marshal_to_html</span><span class="method-args">(name, iobj)</span>
|
|
256
|
+
</a>
|
|
257
|
+
</div>
|
|
258
|
+
|
|
259
|
+
<div class="method-description">
|
|
260
|
+
<p>
|
|
261
|
+
Create an hidden input field through which an object can can be marshalled.
|
|
262
|
+
This makes it very easy to pass from data betwenn requests.
|
|
263
|
+
</p>
|
|
264
|
+
<p><a class="source-toggle" href="#"
|
|
265
|
+
onclick="toggleCode('M000411-source');return false;">[Source]</a></p>
|
|
266
|
+
<div class="method-source-code" id="M000411-source">
|
|
267
|
+
<pre>
|
|
268
|
+
<span class="ruby-comment cmt"># File lib/carat/html-helpers.rb, line 42</span>
|
|
269
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">marshal_to_html</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">iobj</span>)
|
|
270
|
+
<span class="ruby-identifier">data</span> = <span class="ruby-constant">CGI</span>.<span class="ruby-identifier">escape</span>(<span class="ruby-constant">Marshal</span>.<span class="ruby-identifier">dump</span>(<span class="ruby-identifier">iobj</span>))
|
|
271
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-node">%Q{<input type="hidden" name="__#{name}__" value="#{data}"/>\n}</span>
|
|
272
|
+
<span class="ruby-keyword kw">end</span>
|
|
273
|
+
</pre>
|
|
274
|
+
</div>
|
|
275
|
+
</div>
|
|
276
|
+
</div>
|
|
277
|
+
|
|
278
|
+
<div id="method-M000415" class="method-detail">
|
|
279
|
+
<a name="M000415"></a>
|
|
280
|
+
|
|
281
|
+
<div class="method-heading">
|
|
282
|
+
<a href="#M000415" class="method-signature">
|
|
283
|
+
<span class="method-name">render_object</span><span class="method-args">(o, collection, edit)</span>
|
|
284
|
+
</a>
|
|
285
|
+
</div>
|
|
286
|
+
|
|
287
|
+
<div class="method-description">
|
|
288
|
+
<p>
|
|
289
|
+
Renders an object with annotations: <a
|
|
290
|
+
href="http://tinyurl.com/6xjnj">tinyurl.com/6xjnj</a> Creates a table
|
|
291
|
+
rendering <tt>o</tt>’s attributes.
|
|
292
|
+
</p>
|
|
293
|
+
<p><a class="source-toggle" href="#"
|
|
294
|
+
onclick="toggleCode('M000415-source');return false;">[Source]</a></p>
|
|
295
|
+
<div class="method-source-code" id="M000415-source">
|
|
296
|
+
<pre>
|
|
297
|
+
<span class="ruby-comment cmt"># File lib/carat/html-helpers.rb, line 68</span>
|
|
298
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">render_object</span>(<span class="ruby-identifier">o</span>, <span class="ruby-identifier">collection</span>, <span class="ruby-identifier">edit</span>)
|
|
299
|
+
<span class="ruby-identifier">r</span> = <span class="ruby-value str">"<table>\n"</span>
|
|
300
|
+
<span class="ruby-identifier">o</span>.<span class="ruby-identifier">instance_variables</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">attr_name</span><span class="ruby-operator">|</span>
|
|
301
|
+
<span class="ruby-identifier">attr_value</span> = <span class="ruby-identifier">o</span>.<span class="ruby-identifier">instance_variable_get</span>(<span class="ruby-identifier">attr_name</span>)
|
|
302
|
+
<span class="ruby-identifier">attr_anns</span> = <span class="ruby-identifier">o</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">attr_name</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>])
|
|
303
|
+
<span class="ruby-identifier">r</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">" <tr>\n"</span>
|
|
304
|
+
<span class="ruby-identifier">r</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">" <td>"</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">attr_anns</span>[<span class="ruby-identifier">:description</span>] <span class="ruby-operator"><<</span> <span class="ruby-value str">"</td>\n"</span>
|
|
305
|
+
<span class="ruby-identifier">r</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">" <td>"</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">text_or_input</span>(<span class="ruby-identifier">edit</span>, <span class="ruby-identifier">:name</span> =<span class="ruby-operator">></span> <span class="ruby-node">"#{collection}[#{o.class.name}][#{attr_name}]"</span>, <span class="ruby-identifier">:value</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">attr_value</span>) <span class="ruby-operator"><<</span> <span class="ruby-value str">"</td>\n"</span>
|
|
306
|
+
<span class="ruby-identifier">r</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">" </tr>\n"</span>
|
|
307
|
+
<span class="ruby-keyword kw">end</span>
|
|
308
|
+
<span class="ruby-identifier">r</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">"</table>"</span>
|
|
309
|
+
<span class="ruby-identifier">r</span>
|
|
310
|
+
<span class="ruby-keyword kw">end</span>
|
|
311
|
+
</pre>
|
|
312
|
+
</div>
|
|
313
|
+
</div>
|
|
314
|
+
</div>
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
</div>
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
</div>
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
<div id="validator-badges">
|
|
324
|
+
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
|
|
325
|
+
</div>
|
|
326
|
+
|
|
327
|
+
</body>
|
|
328
|
+
</html>
|
|
@@ -0,0 +1,683 @@
|
|
|
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: Heap</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">Heap</td>
|
|
54
|
+
</tr>
|
|
55
|
+
<tr class="top-aligned-row">
|
|
56
|
+
<td><strong>In:</strong></td>
|
|
57
|
+
<td>
|
|
58
|
+
<a href="../files/lib/carat/heap_rb.html">
|
|
59
|
+
lib/carat/heap.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
|
+
<h1><a href="Heap.html">Heap</a></h1>
|
|
85
|
+
<p>
|
|
86
|
+
A Simple <a href="Heap.html">Heap</a> structure and Sort
|
|
87
|
+
</p>
|
|
88
|
+
<h2>Extending <a href="Heap.html">Heap</a></h2>
|
|
89
|
+
<p>
|
|
90
|
+
To extend the heap, implement a cmp(i,j) method which compares array
|
|
91
|
+
elements i and j and returns true iff i is larger than j, where larger or
|
|
92
|
+
is the required heap sorting. See <a href="Heap/Min.html">Heap::Min</a> and
|
|
93
|
+
<a href="Heap/Max.html">Heap::Max</a> for examples.
|
|
94
|
+
</p>
|
|
95
|
+
<h2>Note</h2>
|
|
96
|
+
<p>
|
|
97
|
+
The <tt>parent</tt>,<tt>left</tt> and <tt>right</tt> methods do not check
|
|
98
|
+
the supplied parameter, but their result is <em>only</em> valid if the
|
|
99
|
+
supplied with an integer >=0 for <tt>left</tt> and <tt>right</tt> and
|
|
100
|
+
>0 for <tt>parent</tt>.
|
|
101
|
+
</p>
|
|
102
|
+
<h2>Reference</h2>
|
|
103
|
+
<pre>
|
|
104
|
+
<quote>
|
|
105
|
+
Cormen1990: Chapter 7 (Heapsort) of 'An introduction to algorithms', by
|
|
106
|
+
Cormen, T.H; Leiserson, C.E.; Rivest, R.L; MIT Press, Cambridge, 1990
|
|
107
|
+
ISBN 0-262-53091-0
|
|
108
|
+
</quote>
|
|
109
|
+
</pre>
|
|
110
|
+
<h2>Author</h2>
|
|
111
|
+
<ul>
|
|
112
|
+
<li>Renald Buter (buter at cwts nl)
|
|
113
|
+
|
|
114
|
+
</li>
|
|
115
|
+
</ul>
|
|
116
|
+
<h2>Thanks</h2>
|
|
117
|
+
<p>
|
|
118
|
+
Special thanks to Nenad Ocelic for many suggestions.
|
|
119
|
+
</p>
|
|
120
|
+
<h2>Legal</h2>
|
|
121
|
+
<p>
|
|
122
|
+
Copyright © 2002,2004 Renald Buter (Ruby <a
|
|
123
|
+
href="Version.html">Version</a>) [See Cormen1990 for original]
|
|
124
|
+
</p>
|
|
125
|
+
<p>
|
|
126
|
+
Ruby License…
|
|
127
|
+
</p>
|
|
128
|
+
<h2>History</h2>
|
|
129
|
+
<pre>
|
|
130
|
+
$Id: heap.rb,v 1.0 2004/11/30 transami Exp $
|
|
131
|
+
</pre>
|
|
132
|
+
|
|
133
|
+
</div>
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
</div>
|
|
137
|
+
|
|
138
|
+
<div id="method-list">
|
|
139
|
+
<h3 class="section-bar">Methods</h3>
|
|
140
|
+
|
|
141
|
+
<div class="name-list">
|
|
142
|
+
<a href="#M000036">cmp_idx</a>
|
|
143
|
+
<a href="#M000040">heapify</a>
|
|
144
|
+
<a href="#M000026">inherited</a>
|
|
145
|
+
<a href="#M000041">internal_size</a>
|
|
146
|
+
<a href="#M000038">left</a>
|
|
147
|
+
<a href="#M000027">new</a>
|
|
148
|
+
<a href="#M000037">parent</a>
|
|
149
|
+
<a href="#M000033">pop</a>
|
|
150
|
+
<a href="#M000034">push</a>
|
|
151
|
+
<a href="#M000035">push_all</a>
|
|
152
|
+
<a href="#M000039">right</a>
|
|
153
|
+
<a href="#M000028">size</a>
|
|
154
|
+
<a href="#M000030">sort</a>
|
|
155
|
+
<a href="#M000031">sort_internal</a>
|
|
156
|
+
<a href="#M000042">swap</a>
|
|
157
|
+
<a href="#M000029">to_s</a>
|
|
158
|
+
<a href="#M000032">top</a>
|
|
159
|
+
</div>
|
|
160
|
+
</div>
|
|
161
|
+
|
|
162
|
+
</div>
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
<!-- if includes -->
|
|
166
|
+
|
|
167
|
+
<div id="section">
|
|
168
|
+
|
|
169
|
+
<div id="class-list">
|
|
170
|
+
<h3 class="section-bar">Classes and Modules</h3>
|
|
171
|
+
|
|
172
|
+
Class <a href="Heap/EmptyHeapException.html" class="link">Heap::EmptyHeapException</a><br />
|
|
173
|
+
Class <a href="Heap/Max.html" class="link">Heap::Max</a><br />
|
|
174
|
+
Class <a href="Heap/Min.html" class="link">Heap::Min</a><br />
|
|
175
|
+
|
|
176
|
+
</div>
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
<!-- if method_list -->
|
|
185
|
+
<div id="methods">
|
|
186
|
+
<h3 class="section-bar">Public Class methods</h3>
|
|
187
|
+
|
|
188
|
+
<div id="method-M000026" class="method-detail">
|
|
189
|
+
<a name="M000026"></a>
|
|
190
|
+
|
|
191
|
+
<div class="method-heading">
|
|
192
|
+
<a href="#M000026" class="method-signature">
|
|
193
|
+
<span class="method-name">inherited</span><span class="method-args">(sub)</span>
|
|
194
|
+
</a>
|
|
195
|
+
</div>
|
|
196
|
+
|
|
197
|
+
<div class="method-description">
|
|
198
|
+
<p>
|
|
199
|
+
We are an abstract class
|
|
200
|
+
</p>
|
|
201
|
+
<p><a class="source-toggle" href="#"
|
|
202
|
+
onclick="toggleCode('M000026-source');return false;">[Source]</a></p>
|
|
203
|
+
<div class="method-source-code" id="M000026-source">
|
|
204
|
+
<pre>
|
|
205
|
+
<span class="ruby-comment cmt"># File lib/carat/heap.rb, line 54</span>
|
|
206
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">inherited</span>(<span class="ruby-identifier">sub</span>) <span class="ruby-identifier">sub</span>.<span class="ruby-identifier">class_eval</span>(<span class="ruby-value str">"public_class_method :new"</span>) <span class="ruby-keyword kw">end</span>
|
|
207
|
+
</pre>
|
|
208
|
+
</div>
|
|
209
|
+
</div>
|
|
210
|
+
</div>
|
|
211
|
+
|
|
212
|
+
<div id="method-M000027" class="method-detail">
|
|
213
|
+
<a name="M000027"></a>
|
|
214
|
+
|
|
215
|
+
<div class="method-heading">
|
|
216
|
+
<a href="#M000027" class="method-signature">
|
|
217
|
+
<span class="method-name">new</span><span class="method-args">(array)</span>
|
|
218
|
+
</a>
|
|
219
|
+
</div>
|
|
220
|
+
|
|
221
|
+
<div class="method-description">
|
|
222
|
+
<p>
|
|
223
|
+
Initialise the heap. If supplied an array, build the heap with the values
|
|
224
|
+
of the array. The array can be unsorted. Note: this method can only be
|
|
225
|
+
called by superclasses
|
|
226
|
+
</p>
|
|
227
|
+
<p><a class="source-toggle" href="#"
|
|
228
|
+
onclick="toggleCode('M000027-source');return false;">[Source]</a></p>
|
|
229
|
+
<div class="method-source-code" id="M000027-source">
|
|
230
|
+
<pre>
|
|
231
|
+
<span class="ruby-comment cmt"># File lib/carat/heap.rb, line 77</span>
|
|
232
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">array</span>)
|
|
233
|
+
<span class="ruby-ivar">@array</span>, <span class="ruby-ivar">@heap_size</span> = <span class="ruby-identifier">array</span>, <span class="ruby-identifier">array</span>.<span class="ruby-identifier">length</span>
|
|
234
|
+
(<span class="ruby-ivar">@heap_size</span><span class="ruby-operator">/</span><span class="ruby-value">2</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>).<span class="ruby-identifier">downto</span>(<span class="ruby-value">0</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span> <span class="ruby-identifier">heapify</span>(<span class="ruby-identifier">i</span>) }
|
|
235
|
+
<span class="ruby-keyword kw">end</span>
|
|
236
|
+
</pre>
|
|
237
|
+
</div>
|
|
238
|
+
</div>
|
|
239
|
+
</div>
|
|
240
|
+
|
|
241
|
+
<h3 class="section-bar">Public Instance methods</h3>
|
|
242
|
+
|
|
243
|
+
<div id="method-M000033" class="method-detail">
|
|
244
|
+
<a name="M000033"></a>
|
|
245
|
+
|
|
246
|
+
<div class="method-heading">
|
|
247
|
+
<a href="#M000033" class="method-signature">
|
|
248
|
+
<span class="method-name">pop</span><span class="method-args">()</span>
|
|
249
|
+
</a>
|
|
250
|
+
</div>
|
|
251
|
+
|
|
252
|
+
<div class="method-description">
|
|
253
|
+
<p>
|
|
254
|
+
Extract the first element from the heap. Will raise <a
|
|
255
|
+
href="Heap/EmptyHeapException.html">EmptyHeapException</a> if there are no
|
|
256
|
+
(more) elements on the heap.
|
|
257
|
+
</p>
|
|
258
|
+
<p><a class="source-toggle" href="#"
|
|
259
|
+
onclick="toggleCode('M000033-source');return false;">[Source]</a></p>
|
|
260
|
+
<div class="method-source-code" id="M000033-source">
|
|
261
|
+
<pre>
|
|
262
|
+
<span class="ruby-comment cmt"># File lib/carat/heap.rb, line 125</span>
|
|
263
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">pop</span>
|
|
264
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">EmptyHeapException</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@heap_size</span> <span class="ruby-operator"><</span> <span class="ruby-value">1</span>
|
|
265
|
+
<span class="ruby-ivar">@heap_size</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>
|
|
266
|
+
<span class="ruby-identifier">top</span>, <span class="ruby-ivar">@array</span>[<span class="ruby-value">0</span>] = <span class="ruby-ivar">@array</span>[<span class="ruby-value">0</span>], <span class="ruby-ivar">@array</span>[<span class="ruby-ivar">@heap_size</span>]
|
|
267
|
+
<span class="ruby-identifier">heapify</span>(<span class="ruby-value">0</span>)
|
|
268
|
+
<span class="ruby-identifier">top</span>
|
|
269
|
+
<span class="ruby-keyword kw">end</span>
|
|
270
|
+
</pre>
|
|
271
|
+
</div>
|
|
272
|
+
</div>
|
|
273
|
+
</div>
|
|
274
|
+
|
|
275
|
+
<div id="method-M000034" class="method-detail">
|
|
276
|
+
<a name="M000034"></a>
|
|
277
|
+
|
|
278
|
+
<div class="method-heading">
|
|
279
|
+
<a href="#M000034" class="method-signature">
|
|
280
|
+
<span class="method-name">push</span><span class="method-args">(elm)</span>
|
|
281
|
+
</a>
|
|
282
|
+
</div>
|
|
283
|
+
|
|
284
|
+
<div class="method-description">
|
|
285
|
+
<p>
|
|
286
|
+
Push an element on the heap.
|
|
287
|
+
</p>
|
|
288
|
+
<p><a class="source-toggle" href="#"
|
|
289
|
+
onclick="toggleCode('M000034-source');return false;">[Source]</a></p>
|
|
290
|
+
<div class="method-source-code" id="M000034-source">
|
|
291
|
+
<pre>
|
|
292
|
+
<span class="ruby-comment cmt"># File lib/carat/heap.rb, line 134</span>
|
|
293
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">push</span>(<span class="ruby-identifier">elm</span>)
|
|
294
|
+
<span class="ruby-identifier">i</span> = <span class="ruby-ivar">@heap_size</span>
|
|
295
|
+
<span class="ruby-ivar">@heap_size</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
296
|
+
<span class="ruby-keyword kw">while</span> <span class="ruby-identifier">i</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">cmp</span>(<span class="ruby-identifier">elm</span>, <span class="ruby-ivar">@array</span>[(<span class="ruby-identifier">j</span> = <span class="ruby-identifier">parent</span>(<span class="ruby-identifier">i</span>))])
|
|
297
|
+
<span class="ruby-ivar">@array</span>[<span class="ruby-identifier">i</span>] = <span class="ruby-ivar">@array</span>[(<span class="ruby-identifier">i</span> = <span class="ruby-identifier">j</span>)]
|
|
298
|
+
<span class="ruby-keyword kw">end</span>
|
|
299
|
+
<span class="ruby-ivar">@array</span>[<span class="ruby-identifier">i</span>] = <span class="ruby-identifier">elm</span>
|
|
300
|
+
<span class="ruby-keyword kw">end</span>
|
|
301
|
+
</pre>
|
|
302
|
+
</div>
|
|
303
|
+
</div>
|
|
304
|
+
</div>
|
|
305
|
+
|
|
306
|
+
<div id="method-M000035" class="method-detail">
|
|
307
|
+
<a name="M000035"></a>
|
|
308
|
+
|
|
309
|
+
<div class="method-heading">
|
|
310
|
+
<a href="#M000035" class="method-signature">
|
|
311
|
+
<span class="method-name">push_all</span><span class="method-args">(elms)</span>
|
|
312
|
+
</a>
|
|
313
|
+
</div>
|
|
314
|
+
|
|
315
|
+
<div class="method-description">
|
|
316
|
+
<p>
|
|
317
|
+
Push a list of elements on the heap.
|
|
318
|
+
</p>
|
|
319
|
+
<p><a class="source-toggle" href="#"
|
|
320
|
+
onclick="toggleCode('M000035-source');return false;">[Source]</a></p>
|
|
321
|
+
<div class="method-source-code" id="M000035-source">
|
|
322
|
+
<pre>
|
|
323
|
+
<span class="ruby-comment cmt"># File lib/carat/heap.rb, line 144</span>
|
|
324
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">push_all</span>(<span class="ruby-identifier">elms</span>)
|
|
325
|
+
<span class="ruby-identifier">elms</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">e</span><span class="ruby-operator">|</span> <span class="ruby-identifier">push</span>(<span class="ruby-identifier">e</span>)}
|
|
326
|
+
<span class="ruby-keyword kw">end</span>
|
|
327
|
+
</pre>
|
|
328
|
+
</div>
|
|
329
|
+
</div>
|
|
330
|
+
</div>
|
|
331
|
+
|
|
332
|
+
<div id="method-M000028" class="method-detail">
|
|
333
|
+
<a name="M000028"></a>
|
|
334
|
+
|
|
335
|
+
<div class="method-heading">
|
|
336
|
+
<a href="#M000028" class="method-signature">
|
|
337
|
+
<span class="method-name">size</span><span class="method-args">()</span>
|
|
338
|
+
</a>
|
|
339
|
+
</div>
|
|
340
|
+
|
|
341
|
+
<div class="method-description">
|
|
342
|
+
<p>
|
|
343
|
+
Get the heap size
|
|
344
|
+
</p>
|
|
345
|
+
<p><a class="source-toggle" href="#"
|
|
346
|
+
onclick="toggleCode('M000028-source');return false;">[Source]</a></p>
|
|
347
|
+
<div class="method-source-code" id="M000028-source">
|
|
348
|
+
<pre>
|
|
349
|
+
<span class="ruby-comment cmt"># File lib/carat/heap.rb, line 83</span>
|
|
350
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">size</span>
|
|
351
|
+
<span class="ruby-ivar">@heap_size</span>
|
|
352
|
+
<span class="ruby-keyword kw">end</span>
|
|
353
|
+
</pre>
|
|
354
|
+
</div>
|
|
355
|
+
</div>
|
|
356
|
+
</div>
|
|
357
|
+
|
|
358
|
+
<div id="method-M000030" class="method-detail">
|
|
359
|
+
<a name="M000030"></a>
|
|
360
|
+
|
|
361
|
+
<div class="method-heading">
|
|
362
|
+
<a href="#M000030" class="method-signature">
|
|
363
|
+
<span class="method-name">sort</span><span class="method-args">()</span>
|
|
364
|
+
</a>
|
|
365
|
+
</div>
|
|
366
|
+
|
|
367
|
+
<div class="method-description">
|
|
368
|
+
<p>
|
|
369
|
+
<a href="Heap.html">Heap</a>-sort a clone of the internal array. This will
|
|
370
|
+
not touch the internal array. Returns the array sorted <b>reversely</b> on
|
|
371
|
+
the heap condition!
|
|
372
|
+
</p>
|
|
373
|
+
<p><a class="source-toggle" href="#"
|
|
374
|
+
onclick="toggleCode('M000030-source');return false;">[Source]</a></p>
|
|
375
|
+
<div class="method-source-code" id="M000030-source">
|
|
376
|
+
<pre>
|
|
377
|
+
<span class="ruby-comment cmt"># File lib/carat/heap.rb, line 95</span>
|
|
378
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sort</span>
|
|
379
|
+
<span class="ruby-identifier">old_ary</span> = <span class="ruby-ivar">@array</span>.<span class="ruby-identifier">dup</span>
|
|
380
|
+
<span class="ruby-identifier">old_heap</span> = <span class="ruby-ivar">@heap_size</span>
|
|
381
|
+
<span class="ruby-identifier">new_ary</span> = <span class="ruby-identifier">sort_internal</span>
|
|
382
|
+
<span class="ruby-ivar">@array</span> = <span class="ruby-identifier">old_ary</span>
|
|
383
|
+
<span class="ruby-ivar">@heap_size</span> = <span class="ruby-identifier">old_heap</span>
|
|
384
|
+
<span class="ruby-identifier">new_ary</span>
|
|
385
|
+
<span class="ruby-keyword kw">end</span>
|
|
386
|
+
</pre>
|
|
387
|
+
</div>
|
|
388
|
+
</div>
|
|
389
|
+
</div>
|
|
390
|
+
|
|
391
|
+
<div id="method-M000031" class="method-detail">
|
|
392
|
+
<a name="M000031"></a>
|
|
393
|
+
|
|
394
|
+
<div class="method-heading">
|
|
395
|
+
<a href="#M000031" class="method-signature">
|
|
396
|
+
<span class="method-name">sort_internal</span><span class="method-args">()</span>
|
|
397
|
+
</a>
|
|
398
|
+
</div>
|
|
399
|
+
|
|
400
|
+
<div class="method-description">
|
|
401
|
+
<p>
|
|
402
|
+
<a href="Heap.html">Heap</a>-sort the internal array. This reduces heap
|
|
403
|
+
size to 1, since sorting the internal array destroys the heap property. Use
|
|
404
|
+
this only if the heap is not used after this call and you want save speed
|
|
405
|
+
and memory; otherwise use <a href="Heap.html#M000030">Heap#sort</a>. See
|
|
406
|
+
+<a href="Heap.html#M000030">Heap#sort</a>+.
|
|
407
|
+
</p>
|
|
408
|
+
<p><a class="source-toggle" href="#"
|
|
409
|
+
onclick="toggleCode('M000031-source');return false;">[Source]</a></p>
|
|
410
|
+
<div class="method-source-code" id="M000031-source">
|
|
411
|
+
<pre>
|
|
412
|
+
<span class="ruby-comment cmt"># File lib/carat/heap.rb, line 108</span>
|
|
413
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sort_internal</span>
|
|
414
|
+
(<span class="ruby-ivar">@array</span>.<span class="ruby-identifier">length</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>).<span class="ruby-identifier">downto</span>(<span class="ruby-value">1</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
|
|
415
|
+
<span class="ruby-identifier">swap</span>(<span class="ruby-value">0</span>,<span class="ruby-identifier">i</span>)
|
|
416
|
+
<span class="ruby-ivar">@heap_size</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>
|
|
417
|
+
<span class="ruby-identifier">heapify</span>(<span class="ruby-value">0</span>)
|
|
418
|
+
<span class="ruby-keyword kw">end</span>
|
|
419
|
+
<span class="ruby-ivar">@array</span>
|
|
420
|
+
<span class="ruby-keyword kw">end</span>
|
|
421
|
+
</pre>
|
|
422
|
+
</div>
|
|
423
|
+
</div>
|
|
424
|
+
</div>
|
|
425
|
+
|
|
426
|
+
<div id="method-M000029" class="method-detail">
|
|
427
|
+
<a name="M000029"></a>
|
|
428
|
+
|
|
429
|
+
<div class="method-heading">
|
|
430
|
+
<a href="#M000029" class="method-signature">
|
|
431
|
+
<span class="method-name">to_s</span><span class="method-args">()</span>
|
|
432
|
+
</a>
|
|
433
|
+
</div>
|
|
434
|
+
|
|
435
|
+
<div class="method-description">
|
|
436
|
+
<p>
|
|
437
|
+
Pretty print
|
|
438
|
+
</p>
|
|
439
|
+
<p><a class="source-toggle" href="#"
|
|
440
|
+
onclick="toggleCode('M000029-source');return false;">[Source]</a></p>
|
|
441
|
+
<div class="method-source-code" id="M000029-source">
|
|
442
|
+
<pre>
|
|
443
|
+
<span class="ruby-comment cmt"># File lib/carat/heap.rb, line 88</span>
|
|
444
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
|
|
445
|
+
<span class="ruby-node">"<#{self.class}: size=#@heap_size, top=#{self.top}>"</span>
|
|
446
|
+
<span class="ruby-keyword kw">end</span>
|
|
447
|
+
</pre>
|
|
448
|
+
</div>
|
|
449
|
+
</div>
|
|
450
|
+
</div>
|
|
451
|
+
|
|
452
|
+
<div id="method-M000032" class="method-detail">
|
|
453
|
+
<a name="M000032"></a>
|
|
454
|
+
|
|
455
|
+
<div class="method-heading">
|
|
456
|
+
<a href="#M000032" class="method-signature">
|
|
457
|
+
<span class="method-name">top</span><span class="method-args">()</span>
|
|
458
|
+
</a>
|
|
459
|
+
</div>
|
|
460
|
+
|
|
461
|
+
<div class="method-description">
|
|
462
|
+
<p>
|
|
463
|
+
Get the first (maximum) element on the heap
|
|
464
|
+
</p>
|
|
465
|
+
<p><a class="source-toggle" href="#"
|
|
466
|
+
onclick="toggleCode('M000032-source');return false;">[Source]</a></p>
|
|
467
|
+
<div class="method-source-code" id="M000032-source">
|
|
468
|
+
<pre>
|
|
469
|
+
<span class="ruby-comment cmt"># File lib/carat/heap.rb, line 118</span>
|
|
470
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">top</span>
|
|
471
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">EmptyHeapException</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@heap_size</span> <span class="ruby-operator"><</span> <span class="ruby-value">1</span>
|
|
472
|
+
<span class="ruby-ivar">@array</span>[<span class="ruby-value">0</span>]
|
|
473
|
+
<span class="ruby-keyword kw">end</span>
|
|
474
|
+
</pre>
|
|
475
|
+
</div>
|
|
476
|
+
</div>
|
|
477
|
+
</div>
|
|
478
|
+
|
|
479
|
+
<h3 class="section-bar">Protected Instance methods</h3>
|
|
480
|
+
|
|
481
|
+
<div id="method-M000036" class="method-detail">
|
|
482
|
+
<a name="M000036"></a>
|
|
483
|
+
|
|
484
|
+
<div class="method-heading">
|
|
485
|
+
<a href="#M000036" class="method-signature">
|
|
486
|
+
<span class="method-name">cmp_idx</span><span class="method-args">(i,j)</span>
|
|
487
|
+
</a>
|
|
488
|
+
</div>
|
|
489
|
+
|
|
490
|
+
<div class="method-description">
|
|
491
|
+
<p>
|
|
492
|
+
Compare elements at the supplied indices
|
|
493
|
+
</p>
|
|
494
|
+
<p><a class="source-toggle" href="#"
|
|
495
|
+
onclick="toggleCode('M000036-source');return false;">[Source]</a></p>
|
|
496
|
+
<div class="method-source-code" id="M000036-source">
|
|
497
|
+
<pre>
|
|
498
|
+
<span class="ruby-comment cmt"># File lib/carat/heap.rb, line 151</span>
|
|
499
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">cmp_idx</span>(<span class="ruby-identifier">i</span>,<span class="ruby-identifier">j</span>)
|
|
500
|
+
<span class="ruby-identifier">cmp</span>(<span class="ruby-ivar">@array</span>[<span class="ruby-identifier">i</span>], <span class="ruby-ivar">@array</span>[<span class="ruby-identifier">j</span>])
|
|
501
|
+
<span class="ruby-keyword kw">end</span>
|
|
502
|
+
</pre>
|
|
503
|
+
</div>
|
|
504
|
+
</div>
|
|
505
|
+
</div>
|
|
506
|
+
|
|
507
|
+
<div id="method-M000040" class="method-detail">
|
|
508
|
+
<a name="M000040"></a>
|
|
509
|
+
|
|
510
|
+
<div class="method-heading">
|
|
511
|
+
<a href="#M000040" class="method-signature">
|
|
512
|
+
<span class="method-name">heapify</span><span class="method-args">(i)</span>
|
|
513
|
+
</a>
|
|
514
|
+
</div>
|
|
515
|
+
|
|
516
|
+
<div class="method-description">
|
|
517
|
+
<p>
|
|
518
|
+
Keeps an heap sorted with the smallest (largest) element on top
|
|
519
|
+
</p>
|
|
520
|
+
<p><a class="source-toggle" href="#"
|
|
521
|
+
onclick="toggleCode('M000040-source');return false;">[Source]</a></p>
|
|
522
|
+
<div class="method-source-code" id="M000040-source">
|
|
523
|
+
<pre>
|
|
524
|
+
<span class="ruby-comment cmt"># File lib/carat/heap.rb, line 171</span>
|
|
525
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">heapify</span>(<span class="ruby-identifier">i</span>)
|
|
526
|
+
<span class="ruby-identifier">l</span> = <span class="ruby-identifier">left</span> <span class="ruby-identifier">i</span>
|
|
527
|
+
<span class="ruby-identifier">top</span> = <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">l</span> <span class="ruby-operator"><</span> <span class="ruby-ivar">@heap_size</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">cmp_idx</span>(<span class="ruby-identifier">l</span>,<span class="ruby-identifier">i</span>) <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">l</span> <span class="ruby-keyword kw">else</span> <span class="ruby-identifier">i</span> <span class="ruby-keyword kw">end</span>
|
|
528
|
+
<span class="ruby-identifier">r</span> = <span class="ruby-identifier">right</span> <span class="ruby-identifier">i</span>
|
|
529
|
+
<span class="ruby-identifier">top</span> = <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">r</span> <span class="ruby-operator"><</span> <span class="ruby-ivar">@heap_size</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">cmp_idx</span>(<span class="ruby-identifier">r</span>,<span class="ruby-identifier">top</span>) <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">r</span> <span class="ruby-keyword kw">else</span> <span class="ruby-identifier">top</span> <span class="ruby-keyword kw">end</span>
|
|
530
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">top</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">i</span>
|
|
531
|
+
<span class="ruby-identifier">swap</span>(<span class="ruby-identifier">i</span>, <span class="ruby-identifier">top</span>)
|
|
532
|
+
<span class="ruby-identifier">heapify</span>(<span class="ruby-identifier">top</span>)
|
|
533
|
+
<span class="ruby-keyword kw">end</span>
|
|
534
|
+
<span class="ruby-keyword kw">end</span>
|
|
535
|
+
</pre>
|
|
536
|
+
</div>
|
|
537
|
+
</div>
|
|
538
|
+
</div>
|
|
539
|
+
|
|
540
|
+
<div id="method-M000041" class="method-detail">
|
|
541
|
+
<a name="M000041"></a>
|
|
542
|
+
|
|
543
|
+
<div class="method-heading">
|
|
544
|
+
<a href="#M000041" class="method-signature">
|
|
545
|
+
<span class="method-name">internal_size</span><span class="method-args">()</span>
|
|
546
|
+
</a>
|
|
547
|
+
</div>
|
|
548
|
+
|
|
549
|
+
<div class="method-description">
|
|
550
|
+
<p>
|
|
551
|
+
Get the size of the internal array. This may be different from the heap
|
|
552
|
+
size, e.g. after <tt>sort</tt> has been called.
|
|
553
|
+
</p>
|
|
554
|
+
<p><a class="source-toggle" href="#"
|
|
555
|
+
onclick="toggleCode('M000041-source');return false;">[Source]</a></p>
|
|
556
|
+
<div class="method-source-code" id="M000041-source">
|
|
557
|
+
<pre>
|
|
558
|
+
<span class="ruby-comment cmt"># File lib/carat/heap.rb, line 184</span>
|
|
559
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">internal_size</span>
|
|
560
|
+
<span class="ruby-ivar">@array</span>.<span class="ruby-identifier">size</span>
|
|
561
|
+
<span class="ruby-keyword kw">end</span>
|
|
562
|
+
</pre>
|
|
563
|
+
</div>
|
|
564
|
+
</div>
|
|
565
|
+
</div>
|
|
566
|
+
|
|
567
|
+
<div id="method-M000038" class="method-detail">
|
|
568
|
+
<a name="M000038"></a>
|
|
569
|
+
|
|
570
|
+
<div class="method-heading">
|
|
571
|
+
<a href="#M000038" class="method-signature">
|
|
572
|
+
<span class="method-name">left</span><span class="method-args">(i)</span>
|
|
573
|
+
</a>
|
|
574
|
+
</div>
|
|
575
|
+
|
|
576
|
+
<div class="method-description">
|
|
577
|
+
<p>
|
|
578
|
+
Get the node left of node i >= 0
|
|
579
|
+
</p>
|
|
580
|
+
<p><a class="source-toggle" href="#"
|
|
581
|
+
onclick="toggleCode('M000038-source');return false;">[Source]</a></p>
|
|
582
|
+
<div class="method-source-code" id="M000038-source">
|
|
583
|
+
<pre>
|
|
584
|
+
<span class="ruby-comment cmt"># File lib/carat/heap.rb, line 161</span>
|
|
585
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">left</span>(<span class="ruby-identifier">i</span>)
|
|
586
|
+
(<span class="ruby-identifier">i</span><span class="ruby-operator"><<</span><span class="ruby-value">1</span>) <span class="ruby-operator">+</span> <span class="ruby-value">1</span> <span class="ruby-comment cmt"># 2i+1</span>
|
|
587
|
+
<span class="ruby-keyword kw">end</span>
|
|
588
|
+
</pre>
|
|
589
|
+
</div>
|
|
590
|
+
</div>
|
|
591
|
+
</div>
|
|
592
|
+
|
|
593
|
+
<div id="method-M000037" class="method-detail">
|
|
594
|
+
<a name="M000037"></a>
|
|
595
|
+
|
|
596
|
+
<div class="method-heading">
|
|
597
|
+
<a href="#M000037" class="method-signature">
|
|
598
|
+
<span class="method-name">parent</span><span class="method-args">(i)</span>
|
|
599
|
+
</a>
|
|
600
|
+
</div>
|
|
601
|
+
|
|
602
|
+
<div class="method-description">
|
|
603
|
+
<p>
|
|
604
|
+
Get the parent of the node i > 0.
|
|
605
|
+
</p>
|
|
606
|
+
<p><a class="source-toggle" href="#"
|
|
607
|
+
onclick="toggleCode('M000037-source');return false;">[Source]</a></p>
|
|
608
|
+
<div class="method-source-code" id="M000037-source">
|
|
609
|
+
<pre>
|
|
610
|
+
<span class="ruby-comment cmt"># File lib/carat/heap.rb, line 156</span>
|
|
611
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parent</span>(<span class="ruby-identifier">i</span>)
|
|
612
|
+
(<span class="ruby-identifier">i</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>) <span class="ruby-operator">>></span> <span class="ruby-value">1</span> <span class="ruby-comment cmt"># (i-1)/2, only valid iff i > 0 !!</span>
|
|
613
|
+
<span class="ruby-keyword kw">end</span>
|
|
614
|
+
</pre>
|
|
615
|
+
</div>
|
|
616
|
+
</div>
|
|
617
|
+
</div>
|
|
618
|
+
|
|
619
|
+
<div id="method-M000039" class="method-detail">
|
|
620
|
+
<a name="M000039"></a>
|
|
621
|
+
|
|
622
|
+
<div class="method-heading">
|
|
623
|
+
<a href="#M000039" class="method-signature">
|
|
624
|
+
<span class="method-name">right</span><span class="method-args">(i)</span>
|
|
625
|
+
</a>
|
|
626
|
+
</div>
|
|
627
|
+
|
|
628
|
+
<div class="method-description">
|
|
629
|
+
<p>
|
|
630
|
+
Get the node right of node i >= 0
|
|
631
|
+
</p>
|
|
632
|
+
<p><a class="source-toggle" href="#"
|
|
633
|
+
onclick="toggleCode('M000039-source');return false;">[Source]</a></p>
|
|
634
|
+
<div class="method-source-code" id="M000039-source">
|
|
635
|
+
<pre>
|
|
636
|
+
<span class="ruby-comment cmt"># File lib/carat/heap.rb, line 166</span>
|
|
637
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">right</span>(<span class="ruby-identifier">i</span>)
|
|
638
|
+
(<span class="ruby-identifier">i</span><span class="ruby-operator"><<</span><span class="ruby-value">1</span>) <span class="ruby-operator">+</span> <span class="ruby-value">2</span> <span class="ruby-comment cmt"># 2i+2</span>
|
|
639
|
+
<span class="ruby-keyword kw">end</span>
|
|
640
|
+
</pre>
|
|
641
|
+
</div>
|
|
642
|
+
</div>
|
|
643
|
+
</div>
|
|
644
|
+
|
|
645
|
+
<div id="method-M000042" class="method-detail">
|
|
646
|
+
<a name="M000042"></a>
|
|
647
|
+
|
|
648
|
+
<div class="method-heading">
|
|
649
|
+
<a href="#M000042" class="method-signature">
|
|
650
|
+
<span class="method-name">swap</span><span class="method-args">(i,j)</span>
|
|
651
|
+
</a>
|
|
652
|
+
</div>
|
|
653
|
+
|
|
654
|
+
<div class="method-description">
|
|
655
|
+
<p>
|
|
656
|
+
Swap elements in the array
|
|
657
|
+
</p>
|
|
658
|
+
<p><a class="source-toggle" href="#"
|
|
659
|
+
onclick="toggleCode('M000042-source');return false;">[Source]</a></p>
|
|
660
|
+
<div class="method-source-code" id="M000042-source">
|
|
661
|
+
<pre>
|
|
662
|
+
<span class="ruby-comment cmt"># File lib/carat/heap.rb, line 189</span>
|
|
663
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">swap</span>(<span class="ruby-identifier">i</span>,<span class="ruby-identifier">j</span>)
|
|
664
|
+
<span class="ruby-ivar">@array</span>[<span class="ruby-identifier">i</span>], <span class="ruby-ivar">@array</span>[<span class="ruby-identifier">j</span>] = <span class="ruby-ivar">@array</span>[<span class="ruby-identifier">j</span>], <span class="ruby-ivar">@array</span>[<span class="ruby-identifier">i</span>]
|
|
665
|
+
<span class="ruby-keyword kw">end</span>
|
|
666
|
+
</pre>
|
|
667
|
+
</div>
|
|
668
|
+
</div>
|
|
669
|
+
</div>
|
|
670
|
+
|
|
671
|
+
|
|
672
|
+
</div>
|
|
673
|
+
|
|
674
|
+
|
|
675
|
+
</div>
|
|
676
|
+
|
|
677
|
+
|
|
678
|
+
<div id="validator-badges">
|
|
679
|
+
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
|
|
680
|
+
</div>
|
|
681
|
+
|
|
682
|
+
</body>
|
|
683
|
+
</html>
|