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,337 @@
|
|
|
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: CountingSemaphore</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">CountingSemaphore</td>
|
|
54
|
+
</tr>
|
|
55
|
+
<tr class="top-aligned-row">
|
|
56
|
+
<td><strong>In:</strong></td>
|
|
57
|
+
<td>
|
|
58
|
+
<a href="../files/lib/carat/semaphore_rb.html">
|
|
59
|
+
lib/carat/semaphore.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>Semaphore (<a href="CountingSemaphore.html">CountingSemaphore</a>)</h1>
|
|
85
|
+
<p>
|
|
86
|
+
Technically a semaphore is simply an integer variable which has an
|
|
87
|
+
execution queue associated with it.
|
|
88
|
+
</p>
|
|
89
|
+
<h2>Usage</h2>
|
|
90
|
+
<pre>
|
|
91
|
+
s = Semaphore.new
|
|
92
|
+
|
|
93
|
+
# to do
|
|
94
|
+
</pre>
|
|
95
|
+
<h2>History</h2>
|
|
96
|
+
<pre>
|
|
97
|
+
$Id: semaphore.rb,v 1.2 2003/03/15 20:10:10 fukumoto Exp $
|
|
98
|
+
</pre>
|
|
99
|
+
|
|
100
|
+
</div>
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
</div>
|
|
104
|
+
|
|
105
|
+
<div id="method-list">
|
|
106
|
+
<h3 class="section-bar">Methods</h3>
|
|
107
|
+
|
|
108
|
+
<div class="name-list">
|
|
109
|
+
<a href="#M000384">down</a>
|
|
110
|
+
<a href="#M000388">exclusive</a>
|
|
111
|
+
<a href="#M000381">new</a>
|
|
112
|
+
<a href="#M000386">p</a>
|
|
113
|
+
<a href="#M000383">signal</a>
|
|
114
|
+
<a href="#M000389">synchronize</a>
|
|
115
|
+
<a href="#M000385">up</a>
|
|
116
|
+
<a href="#M000387">v</a>
|
|
117
|
+
<a href="#M000382">wait</a>
|
|
118
|
+
</div>
|
|
119
|
+
</div>
|
|
120
|
+
|
|
121
|
+
</div>
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
<!-- if includes -->
|
|
125
|
+
|
|
126
|
+
<div id="section">
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
<!-- if method_list -->
|
|
136
|
+
<div id="methods">
|
|
137
|
+
<h3 class="section-bar">Public Class methods</h3>
|
|
138
|
+
|
|
139
|
+
<div id="method-M000381" class="method-detail">
|
|
140
|
+
<a name="M000381"></a>
|
|
141
|
+
|
|
142
|
+
<div class="method-heading">
|
|
143
|
+
<a href="#M000381" class="method-signature">
|
|
144
|
+
<span class="method-name">new</span><span class="method-args">(initvalue = 0)</span>
|
|
145
|
+
</a>
|
|
146
|
+
</div>
|
|
147
|
+
|
|
148
|
+
<div class="method-description">
|
|
149
|
+
<p><a class="source-toggle" href="#"
|
|
150
|
+
onclick="toggleCode('M000381-source');return false;">[Source]</a></p>
|
|
151
|
+
<div class="method-source-code" id="M000381-source">
|
|
152
|
+
<pre>
|
|
153
|
+
<span class="ruby-comment cmt"># File lib/carat/semaphore.rb, line 22</span>
|
|
154
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">initvalue</span> = <span class="ruby-value">0</span>)
|
|
155
|
+
<span class="ruby-ivar">@counter</span> = <span class="ruby-identifier">initvalue</span>
|
|
156
|
+
<span class="ruby-ivar">@waiting_list</span> = []
|
|
157
|
+
<span class="ruby-keyword kw">end</span>
|
|
158
|
+
</pre>
|
|
159
|
+
</div>
|
|
160
|
+
</div>
|
|
161
|
+
</div>
|
|
162
|
+
|
|
163
|
+
<h3 class="section-bar">Public Instance methods</h3>
|
|
164
|
+
|
|
165
|
+
<div id="method-M000384" class="method-detail">
|
|
166
|
+
<a name="M000384"></a>
|
|
167
|
+
|
|
168
|
+
<div class="method-heading">
|
|
169
|
+
<span class="method-name">down</span><span class="method-args">()</span>
|
|
170
|
+
</div>
|
|
171
|
+
|
|
172
|
+
<div class="method-description">
|
|
173
|
+
<p>
|
|
174
|
+
Alias for <a href="CountingSemaphore.html#M000382">wait</a>
|
|
175
|
+
</p>
|
|
176
|
+
</div>
|
|
177
|
+
</div>
|
|
178
|
+
|
|
179
|
+
<div id="method-M000388" class="method-detail">
|
|
180
|
+
<a name="M000388"></a>
|
|
181
|
+
|
|
182
|
+
<div class="method-heading">
|
|
183
|
+
<a href="#M000388" class="method-signature">
|
|
184
|
+
<span class="method-name">exclusive</span><span class="method-args">() {|| ...}</span>
|
|
185
|
+
</a>
|
|
186
|
+
</div>
|
|
187
|
+
|
|
188
|
+
<div class="method-description">
|
|
189
|
+
<p><a class="source-toggle" href="#"
|
|
190
|
+
onclick="toggleCode('M000388-source');return false;">[Source]</a></p>
|
|
191
|
+
<div class="method-source-code" id="M000388-source">
|
|
192
|
+
<pre>
|
|
193
|
+
<span class="ruby-comment cmt"># File lib/carat/semaphore.rb, line 58</span>
|
|
194
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">exclusive</span>
|
|
195
|
+
<span class="ruby-identifier">wait</span>
|
|
196
|
+
<span class="ruby-keyword kw">yield</span>
|
|
197
|
+
<span class="ruby-keyword kw">ensure</span>
|
|
198
|
+
<span class="ruby-identifier">signal</span>
|
|
199
|
+
<span class="ruby-keyword kw">end</span>
|
|
200
|
+
</pre>
|
|
201
|
+
</div>
|
|
202
|
+
</div>
|
|
203
|
+
</div>
|
|
204
|
+
|
|
205
|
+
<div id="method-M000386" class="method-detail">
|
|
206
|
+
<a name="M000386"></a>
|
|
207
|
+
|
|
208
|
+
<div class="method-heading">
|
|
209
|
+
<span class="method-name">p</span><span class="method-args">()</span>
|
|
210
|
+
</div>
|
|
211
|
+
|
|
212
|
+
<div class="method-description">
|
|
213
|
+
<p>
|
|
214
|
+
Alias for <a href="CountingSemaphore.html#M000382">wait</a>
|
|
215
|
+
</p>
|
|
216
|
+
</div>
|
|
217
|
+
</div>
|
|
218
|
+
|
|
219
|
+
<div id="method-M000383" class="method-detail">
|
|
220
|
+
<a name="M000383"></a>
|
|
221
|
+
|
|
222
|
+
<div class="method-heading">
|
|
223
|
+
<a href="#M000383" class="method-signature">
|
|
224
|
+
<span class="method-name">signal</span><span class="method-args">()</span>
|
|
225
|
+
</a>
|
|
226
|
+
</div>
|
|
227
|
+
|
|
228
|
+
<div class="method-description">
|
|
229
|
+
<p><a class="source-toggle" href="#"
|
|
230
|
+
onclick="toggleCode('M000383-source');return false;">[Source]</a></p>
|
|
231
|
+
<div class="method-source-code" id="M000383-source">
|
|
232
|
+
<pre>
|
|
233
|
+
<span class="ruby-comment cmt"># File lib/carat/semaphore.rb, line 38</span>
|
|
234
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">signal</span>
|
|
235
|
+
<span class="ruby-constant">Thread</span>.<span class="ruby-identifier">critical</span> = <span class="ruby-keyword kw">true</span>
|
|
236
|
+
<span class="ruby-keyword kw">begin</span>
|
|
237
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-ivar">@counter</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>) <span class="ruby-operator"><=</span> <span class="ruby-value">0</span>
|
|
238
|
+
<span class="ruby-identifier">t</span> = <span class="ruby-ivar">@waiting_list</span>.<span class="ruby-identifier">shift</span>
|
|
239
|
+
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">wakeup</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">t</span>
|
|
240
|
+
<span class="ruby-keyword kw">end</span>
|
|
241
|
+
<span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">ThreadError</span>
|
|
242
|
+
<span class="ruby-keyword kw">retry</span>
|
|
243
|
+
<span class="ruby-keyword kw">end</span>
|
|
244
|
+
<span class="ruby-keyword kw">self</span>
|
|
245
|
+
<span class="ruby-keyword kw">ensure</span>
|
|
246
|
+
<span class="ruby-constant">Thread</span>.<span class="ruby-identifier">critical</span> = <span class="ruby-keyword kw">false</span>
|
|
247
|
+
<span class="ruby-keyword kw">end</span>
|
|
248
|
+
</pre>
|
|
249
|
+
</div>
|
|
250
|
+
</div>
|
|
251
|
+
</div>
|
|
252
|
+
|
|
253
|
+
<div id="method-M000389" class="method-detail">
|
|
254
|
+
<a name="M000389"></a>
|
|
255
|
+
|
|
256
|
+
<div class="method-heading">
|
|
257
|
+
<span class="method-name">synchronize</span><span class="method-args">()</span>
|
|
258
|
+
</div>
|
|
259
|
+
|
|
260
|
+
<div class="method-description">
|
|
261
|
+
<p>
|
|
262
|
+
Alias for <a href="CountingSemaphore.html#M000388">exclusive</a>
|
|
263
|
+
</p>
|
|
264
|
+
</div>
|
|
265
|
+
</div>
|
|
266
|
+
|
|
267
|
+
<div id="method-M000385" class="method-detail">
|
|
268
|
+
<a name="M000385"></a>
|
|
269
|
+
|
|
270
|
+
<div class="method-heading">
|
|
271
|
+
<span class="method-name">up</span><span class="method-args">()</span>
|
|
272
|
+
</div>
|
|
273
|
+
|
|
274
|
+
<div class="method-description">
|
|
275
|
+
<p>
|
|
276
|
+
Alias for <a href="CountingSemaphore.html#M000383">signal</a>
|
|
277
|
+
</p>
|
|
278
|
+
</div>
|
|
279
|
+
</div>
|
|
280
|
+
|
|
281
|
+
<div id="method-M000387" class="method-detail">
|
|
282
|
+
<a name="M000387"></a>
|
|
283
|
+
|
|
284
|
+
<div class="method-heading">
|
|
285
|
+
<span class="method-name">v</span><span class="method-args">()</span>
|
|
286
|
+
</div>
|
|
287
|
+
|
|
288
|
+
<div class="method-description">
|
|
289
|
+
<p>
|
|
290
|
+
Alias for <a href="CountingSemaphore.html#M000383">signal</a>
|
|
291
|
+
</p>
|
|
292
|
+
</div>
|
|
293
|
+
</div>
|
|
294
|
+
|
|
295
|
+
<div id="method-M000382" class="method-detail">
|
|
296
|
+
<a name="M000382"></a>
|
|
297
|
+
|
|
298
|
+
<div class="method-heading">
|
|
299
|
+
<a href="#M000382" class="method-signature">
|
|
300
|
+
<span class="method-name">wait</span><span class="method-args">()</span>
|
|
301
|
+
</a>
|
|
302
|
+
</div>
|
|
303
|
+
|
|
304
|
+
<div class="method-description">
|
|
305
|
+
<p><a class="source-toggle" href="#"
|
|
306
|
+
onclick="toggleCode('M000382-source');return false;">[Source]</a></p>
|
|
307
|
+
<div class="method-source-code" id="M000382-source">
|
|
308
|
+
<pre>
|
|
309
|
+
<span class="ruby-comment cmt"># File lib/carat/semaphore.rb, line 27</span>
|
|
310
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">wait</span>
|
|
311
|
+
<span class="ruby-constant">Thread</span>.<span class="ruby-identifier">critical</span> = <span class="ruby-keyword kw">true</span>
|
|
312
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-ivar">@counter</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>) <span class="ruby-operator"><</span> <span class="ruby-value">0</span>
|
|
313
|
+
<span class="ruby-ivar">@waiting_list</span>.<span class="ruby-identifier">push</span>(<span class="ruby-constant">Thread</span>.<span class="ruby-identifier">current</span>)
|
|
314
|
+
<span class="ruby-constant">Thread</span>.<span class="ruby-identifier">stop</span>
|
|
315
|
+
<span class="ruby-keyword kw">end</span>
|
|
316
|
+
<span class="ruby-keyword kw">self</span>
|
|
317
|
+
<span class="ruby-keyword kw">ensure</span>
|
|
318
|
+
<span class="ruby-constant">Thread</span>.<span class="ruby-identifier">critical</span> = <span class="ruby-keyword kw">false</span>
|
|
319
|
+
<span class="ruby-keyword kw">end</span>
|
|
320
|
+
</pre>
|
|
321
|
+
</div>
|
|
322
|
+
</div>
|
|
323
|
+
</div>
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
</div>
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
</div>
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
<div id="validator-badges">
|
|
333
|
+
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
|
|
334
|
+
</div>
|
|
335
|
+
|
|
336
|
+
</body>
|
|
337
|
+
</html>
|
|
@@ -0,0 +1,561 @@
|
|
|
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: CrossCase</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">CrossCase</td>
|
|
54
|
+
</tr>
|
|
55
|
+
<tr class="top-aligned-row">
|
|
56
|
+
<td><strong>In:</strong></td>
|
|
57
|
+
<td>
|
|
58
|
+
<a href="../files/lib/carat/crosscase_rb.html">
|
|
59
|
+
lib/carat/crosscase.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
|
+
<div id="description">
|
|
76
|
+
<p>
|
|
77
|
+
A mixin which causes aliases for methods with either under_barred or
|
|
78
|
+
camelCased naming conventions to be created in the opposing convention.
|
|
79
|
+
E.g., in a class which mixes in <a href="CrossCase.html">CrossCase</a>,
|
|
80
|
+
defining a method which is called <tt>foo_bar</tt> will also create an
|
|
81
|
+
alias for that method called <tt>fooBar</tt>.
|
|
82
|
+
</p>
|
|
83
|
+
|
|
84
|
+
</div>
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
</div>
|
|
88
|
+
|
|
89
|
+
<div id="method-list">
|
|
90
|
+
<h3 class="section-bar">Methods</h3>
|
|
91
|
+
|
|
92
|
+
<div class="name-list">
|
|
93
|
+
<a href="#M000627">extend_object</a>
|
|
94
|
+
<a href="#M000635">findTargetMethods</a>
|
|
95
|
+
<a href="#M000626">included</a>
|
|
96
|
+
<a href="#M000634">installAlias</a>
|
|
97
|
+
<a href="#M000632">installClassAlias</a>
|
|
98
|
+
<a href="#M000628">installMethodHooks</a>
|
|
99
|
+
<a href="#M000630">method_added</a>
|
|
100
|
+
<a href="#M000629">singleton_method_added</a>
|
|
101
|
+
<a href="#M000636">transform</a>
|
|
102
|
+
<a href="#M000631">transformClassMethods</a>
|
|
103
|
+
<a href="#M000633">transformInstanceMethods</a>
|
|
104
|
+
</div>
|
|
105
|
+
</div>
|
|
106
|
+
|
|
107
|
+
</div>
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
<!-- if includes -->
|
|
111
|
+
|
|
112
|
+
<div id="section">
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
<div id="constants-list">
|
|
116
|
+
<h3 class="section-bar">Constants</h3>
|
|
117
|
+
|
|
118
|
+
<div class="name-list">
|
|
119
|
+
<table summary="Constants">
|
|
120
|
+
<tr class="top-aligned-row context-row">
|
|
121
|
+
<td class="context-item-name">Version</td>
|
|
122
|
+
<td>=</td>
|
|
123
|
+
<td class="context-item-value">/([\d\.]+)/.match( %q{$Revision: 1.2 $} )[1]</td>
|
|
124
|
+
<td width="3em"> </td>
|
|
125
|
+
<td class="context-item-desc">
|
|
126
|
+
Versioning constants
|
|
127
|
+
|
|
128
|
+
</td>
|
|
129
|
+
</tr>
|
|
130
|
+
<tr class="top-aligned-row context-row">
|
|
131
|
+
<td class="context-item-name">Rcsid</td>
|
|
132
|
+
<td>=</td>
|
|
133
|
+
<td class="context-item-value">%q$Id: crosscase.rb,v 1.2 2003/07/25 17:00:24 deveiant Exp $</td>
|
|
134
|
+
</tr>
|
|
135
|
+
</table>
|
|
136
|
+
</div>
|
|
137
|
+
</div>
|
|
138
|
+
|
|
139
|
+
<div id="aliases-list">
|
|
140
|
+
<h3 class="section-bar">External Aliases</h3>
|
|
141
|
+
|
|
142
|
+
<div class="name-list">
|
|
143
|
+
<table summary="aliases">
|
|
144
|
+
<tr class="top-aligned-row context-row">
|
|
145
|
+
<td class="context-item-name">singleton_method_added</td>
|
|
146
|
+
<td>-></td>
|
|
147
|
+
<td class="context-item-value">__cc_sma</td>
|
|
148
|
+
</tr>
|
|
149
|
+
<tr class="top-aligned-row context-row">
|
|
150
|
+
<td class="context-item-name">method_added</td>
|
|
151
|
+
<td>-></td>
|
|
152
|
+
<td class="context-item-value">__cc_ma</td>
|
|
153
|
+
</tr>
|
|
154
|
+
</table>
|
|
155
|
+
</div>
|
|
156
|
+
</div>
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
<!-- if method_list -->
|
|
163
|
+
<div id="methods">
|
|
164
|
+
<h3 class="section-bar">Public Class methods</h3>
|
|
165
|
+
|
|
166
|
+
<div id="method-M000627" class="method-detail">
|
|
167
|
+
<a name="M000627"></a>
|
|
168
|
+
|
|
169
|
+
<div class="method-heading">
|
|
170
|
+
<a href="#M000627" class="method-signature">
|
|
171
|
+
<span class="method-name">extend_object</span><span class="method-args">( mod )</span>
|
|
172
|
+
</a>
|
|
173
|
+
</div>
|
|
174
|
+
|
|
175
|
+
<div class="method-description">
|
|
176
|
+
<p>
|
|
177
|
+
<a href="Object.html">Object</a>-extension callback — installs
|
|
178
|
+
aliases for any currently-extant class or instance methods, and installs
|
|
179
|
+
callbacks that will create aliases for any subsequently-defined methods.
|
|
180
|
+
Raises an error if any object except a <a href="Class.html">Class</a> or <a
|
|
181
|
+
href="Module.html">Module</a> is extended.
|
|
182
|
+
</p>
|
|
183
|
+
<p><a class="source-toggle" href="#"
|
|
184
|
+
onclick="toggleCode('M000627-source');return false;">[Source]</a></p>
|
|
185
|
+
<div class="method-source-code" id="M000627-source">
|
|
186
|
+
<pre>
|
|
187
|
+
<span class="ruby-comment cmt"># File lib/carat/crosscase.rb, line 113</span>
|
|
188
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span><span class="ruby-operator">::</span><span class="ruby-identifier">extend_object</span>( <span class="ruby-identifier">mod</span> )
|
|
189
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-value str">"Expected a Module or a Class, got a "</span> <span class="ruby-operator">+</span>
|
|
190
|
+
<span class="ruby-identifier">mod</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">name</span> <span class="ruby-keyword kw">unless</span>
|
|
191
|
+
<span class="ruby-identifier">mod</span>.<span class="ruby-identifier">is_a?</span>( <span class="ruby-constant">Module</span> )
|
|
192
|
+
|
|
193
|
+
<span class="ruby-keyword kw">self</span><span class="ruby-operator">::</span><span class="ruby-identifier">transformClassMethods</span>( <span class="ruby-identifier">mod</span> )
|
|
194
|
+
<span class="ruby-keyword kw">self</span><span class="ruby-operator">::</span><span class="ruby-identifier">transformInstanceMethods</span>( <span class="ruby-identifier">mod</span> )
|
|
195
|
+
<span class="ruby-keyword kw">self</span><span class="ruby-operator">::</span><span class="ruby-identifier">installMethodHooks</span>( <span class="ruby-identifier">mod</span> )
|
|
196
|
+
<span class="ruby-keyword kw">end</span>
|
|
197
|
+
</pre>
|
|
198
|
+
</div>
|
|
199
|
+
</div>
|
|
200
|
+
</div>
|
|
201
|
+
|
|
202
|
+
<div id="method-M000635" class="method-detail">
|
|
203
|
+
<a name="M000635"></a>
|
|
204
|
+
|
|
205
|
+
<div class="method-heading">
|
|
206
|
+
<a href="#M000635" class="method-signature">
|
|
207
|
+
<span class="method-name">findTargetMethods</span><span class="method-args">( *methodList ) {|meth, transformedName| ...}</span>
|
|
208
|
+
</a>
|
|
209
|
+
</div>
|
|
210
|
+
|
|
211
|
+
<div class="method-description">
|
|
212
|
+
<p>
|
|
213
|
+
Find methods in the given <tt>methodList</tt> which are candidates for
|
|
214
|
+
aliasing.
|
|
215
|
+
</p>
|
|
216
|
+
<p><a class="source-toggle" href="#"
|
|
217
|
+
onclick="toggleCode('M000635-source');return false;">[Source]</a></p>
|
|
218
|
+
<div class="method-source-code" id="M000635-source">
|
|
219
|
+
<pre>
|
|
220
|
+
<span class="ruby-comment cmt"># File lib/carat/crosscase.rb, line 202</span>
|
|
221
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span><span class="ruby-operator">::</span><span class="ruby-identifier">findTargetMethods</span>( <span class="ruby-operator">*</span><span class="ruby-identifier">methodList</span> )
|
|
222
|
+
<span class="ruby-identifier">methodList</span>.<span class="ruby-identifier">flatten</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">meth</span><span class="ruby-operator">|</span>
|
|
223
|
+
<span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-regexp re">/(singleton_)?method_added/</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">meth</span>
|
|
224
|
+
<span class="ruby-identifier">transformedName</span> = <span class="ruby-identifier">transform</span>( <span class="ruby-identifier">meth</span> ) <span class="ruby-keyword kw">or</span> <span class="ruby-keyword kw">next</span>
|
|
225
|
+
<span class="ruby-keyword kw">yield</span>( <span class="ruby-identifier">meth</span>, <span class="ruby-identifier">transformedName</span> )
|
|
226
|
+
}
|
|
227
|
+
<span class="ruby-keyword kw">end</span>
|
|
228
|
+
</pre>
|
|
229
|
+
</div>
|
|
230
|
+
</div>
|
|
231
|
+
</div>
|
|
232
|
+
|
|
233
|
+
<div id="method-M000626" class="method-detail">
|
|
234
|
+
<a name="M000626"></a>
|
|
235
|
+
|
|
236
|
+
<div class="method-heading">
|
|
237
|
+
<a href="#M000626" class="method-signature">
|
|
238
|
+
<span class="method-name">included</span><span class="method-args">( mod )</span>
|
|
239
|
+
</a>
|
|
240
|
+
</div>
|
|
241
|
+
|
|
242
|
+
<div class="method-description">
|
|
243
|
+
<p>
|
|
244
|
+
The inclusion callback — uses the Ouroboros trick to extend including
|
|
245
|
+
classes.
|
|
246
|
+
</p>
|
|
247
|
+
<p><a class="source-toggle" href="#"
|
|
248
|
+
onclick="toggleCode('M000626-source');return false;">[Source]</a></p>
|
|
249
|
+
<div class="method-source-code" id="M000626-source">
|
|
250
|
+
<pre>
|
|
251
|
+
<span class="ruby-comment cmt"># File lib/carat/crosscase.rb, line 104</span>
|
|
252
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span><span class="ruby-operator">::</span><span class="ruby-identifier">included</span>( <span class="ruby-identifier">mod</span> )
|
|
253
|
+
<span class="ruby-identifier">mod</span>.<span class="ruby-identifier">extend</span>( <span class="ruby-keyword kw">self</span> )
|
|
254
|
+
<span class="ruby-keyword kw">end</span>
|
|
255
|
+
</pre>
|
|
256
|
+
</div>
|
|
257
|
+
</div>
|
|
258
|
+
</div>
|
|
259
|
+
|
|
260
|
+
<div id="method-M000634" class="method-detail">
|
|
261
|
+
<a name="M000634"></a>
|
|
262
|
+
|
|
263
|
+
<div class="method-heading">
|
|
264
|
+
<a href="#M000634" class="method-signature">
|
|
265
|
+
<span class="method-name">installAlias</span><span class="method-args">( mod, meth, aliasName )</span>
|
|
266
|
+
</a>
|
|
267
|
+
</div>
|
|
268
|
+
|
|
269
|
+
<div class="method-description">
|
|
270
|
+
<p>
|
|
271
|
+
Install an alias <tt>aliasName</tt> for the given instance method
|
|
272
|
+
<tt>meth</tt> of the <a href="Class.html">Class</a> or <a
|
|
273
|
+
href="Module.html">Module</a> <tt>mod</tt>.
|
|
274
|
+
</p>
|
|
275
|
+
<p><a class="source-toggle" href="#"
|
|
276
|
+
onclick="toggleCode('M000634-source');return false;">[Source]</a></p>
|
|
277
|
+
<div class="method-source-code" id="M000634-source">
|
|
278
|
+
<pre>
|
|
279
|
+
<span class="ruby-comment cmt"># File lib/carat/crosscase.rb, line 193</span>
|
|
280
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span><span class="ruby-operator">::</span><span class="ruby-identifier">installAlias</span>( <span class="ruby-identifier">mod</span>, <span class="ruby-identifier">meth</span>, <span class="ruby-identifier">aliasName</span> )
|
|
281
|
+
<span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">mod</span>.<span class="ruby-identifier">instance_methods</span>(<span class="ruby-keyword kw">true</span>).<span class="ruby-identifier">include?</span>( <span class="ruby-identifier">aliasName</span> )
|
|
282
|
+
<span class="ruby-identifier">mod</span>.<span class="ruby-identifier">module_eval</span> <span class="ruby-node">%{alias_method :#{aliasName}, :#{meth}}</span>
|
|
283
|
+
<span class="ruby-keyword kw">end</span>
|
|
284
|
+
<span class="ruby-keyword kw">end</span>
|
|
285
|
+
</pre>
|
|
286
|
+
</div>
|
|
287
|
+
</div>
|
|
288
|
+
</div>
|
|
289
|
+
|
|
290
|
+
<div id="method-M000632" class="method-detail">
|
|
291
|
+
<a name="M000632"></a>
|
|
292
|
+
|
|
293
|
+
<div class="method-heading">
|
|
294
|
+
<a href="#M000632" class="method-signature">
|
|
295
|
+
<span class="method-name">installClassAlias</span><span class="method-args">( mod, meth, aliasName )</span>
|
|
296
|
+
</a>
|
|
297
|
+
</div>
|
|
298
|
+
|
|
299
|
+
<div class="method-description">
|
|
300
|
+
<p>
|
|
301
|
+
Install an alias <tt>aliasName</tt> for the given class method
|
|
302
|
+
<tt>meth</tt> of the <a href="Class.html">Class</a> or <a
|
|
303
|
+
href="Module.html">Module</a> <tt>mod</tt>.
|
|
304
|
+
</p>
|
|
305
|
+
<p><a class="source-toggle" href="#"
|
|
306
|
+
onclick="toggleCode('M000632-source');return false;">[Source]</a></p>
|
|
307
|
+
<div class="method-source-code" id="M000632-source">
|
|
308
|
+
<pre>
|
|
309
|
+
<span class="ruby-comment cmt"># File lib/carat/crosscase.rb, line 172</span>
|
|
310
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span><span class="ruby-operator">::</span><span class="ruby-identifier">installClassAlias</span>( <span class="ruby-identifier">mod</span>, <span class="ruby-identifier">meth</span>, <span class="ruby-identifier">aliasName</span> )
|
|
311
|
+
<span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">mod</span>.<span class="ruby-identifier">respond_to?</span>( <span class="ruby-identifier">aliasName</span> )
|
|
312
|
+
<span class="ruby-identifier">code</span> = <span class="ruby-node">%{
|
|
313
|
+
class << self; alias_method( :#{aliasName}, :#{meth} ); end
|
|
314
|
+
}</span>
|
|
315
|
+
<span class="ruby-identifier">mod</span>.<span class="ruby-identifier">module_eval</span>( <span class="ruby-identifier">code</span>, <span class="ruby-keyword kw">__FILE__</span>, <span class="ruby-keyword kw">__LINE__</span> )
|
|
316
|
+
<span class="ruby-keyword kw">end</span>
|
|
317
|
+
<span class="ruby-keyword kw">end</span>
|
|
318
|
+
</pre>
|
|
319
|
+
</div>
|
|
320
|
+
</div>
|
|
321
|
+
</div>
|
|
322
|
+
|
|
323
|
+
<div id="method-M000628" class="method-detail">
|
|
324
|
+
<a name="M000628"></a>
|
|
325
|
+
|
|
326
|
+
<div class="method-heading">
|
|
327
|
+
<a href="#M000628" class="method-signature">
|
|
328
|
+
<span class="method-name">installMethodHooks</span><span class="method-args">( mod )</span>
|
|
329
|
+
</a>
|
|
330
|
+
</div>
|
|
331
|
+
|
|
332
|
+
<div class="method-description">
|
|
333
|
+
<p>
|
|
334
|
+
Install <tt><a href="CrossCase.html#M000630">method_added</a></tt> and
|
|
335
|
+
<tt><a href="CrossCase.html#M000629">singleton_method_added</a></tt> hooks
|
|
336
|
+
into the given <a href="Module.html">Module</a> <tt>mod</tt> which
|
|
337
|
+
auto-generate aliases for new methods.
|
|
338
|
+
</p>
|
|
339
|
+
<p><a class="source-toggle" href="#"
|
|
340
|
+
onclick="toggleCode('M000628-source');return false;">[Source]</a></p>
|
|
341
|
+
<div class="method-source-code" id="M000628-source">
|
|
342
|
+
<pre>
|
|
343
|
+
<span class="ruby-comment cmt"># File lib/carat/crosscase.rb, line 126</span>
|
|
344
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span><span class="ruby-operator">::</span><span class="ruby-identifier">installMethodHooks</span>( <span class="ruby-identifier">mod</span> )
|
|
345
|
+
<span class="ruby-identifier">mod</span>.<span class="ruby-identifier">module_eval</span> {
|
|
346
|
+
<span class="ruby-keyword kw">class</span> <span class="ruby-operator"><<</span> <span class="ruby-keyword kw">self</span>
|
|
347
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">respond_to?</span>( <span class="ruby-identifier">:singleton_method_added</span> )
|
|
348
|
+
<span class="ruby-keyword kw">alias</span> <span class="ruby-identifier">:__cc_sma</span> <span class="ruby-identifier">:singleton_method_added</span>
|
|
349
|
+
<span class="ruby-keyword kw">end</span>
|
|
350
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">singleton_method_added</span>( <span class="ruby-identifier">id</span> )
|
|
351
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">aliasName</span> = <span class="ruby-constant">CrossCase</span><span class="ruby-operator">::</span><span class="ruby-identifier">transform</span>( <span class="ruby-identifier">id</span> )
|
|
352
|
+
<span class="ruby-constant">CrossCase</span><span class="ruby-operator">::</span><span class="ruby-identifier">installClassAlias</span>( <span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">aliasName</span> )
|
|
353
|
+
<span class="ruby-keyword kw">end</span>
|
|
354
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">respond_to?</span>( <span class="ruby-identifier">:__cc_sma</span> )
|
|
355
|
+
<span class="ruby-identifier">__cc_sma</span>( <span class="ruby-identifier">id</span> )
|
|
356
|
+
<span class="ruby-keyword kw">else</span>
|
|
357
|
+
<span class="ruby-keyword kw">super</span>
|
|
358
|
+
<span class="ruby-keyword kw">end</span>
|
|
359
|
+
<span class="ruby-keyword kw">end</span>
|
|
360
|
+
|
|
361
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">respond_to?</span>( <span class="ruby-identifier">:method_added</span> )
|
|
362
|
+
<span class="ruby-keyword kw">alias</span> <span class="ruby-identifier">:__cc_ma</span> <span class="ruby-identifier">:method_added</span>
|
|
363
|
+
<span class="ruby-keyword kw">end</span>
|
|
364
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">method_added</span>( <span class="ruby-identifier">id</span> )
|
|
365
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">aliasName</span> = <span class="ruby-constant">CrossCase</span><span class="ruby-operator">::</span><span class="ruby-identifier">transform</span>( <span class="ruby-identifier">id</span> )
|
|
366
|
+
<span class="ruby-constant">CrossCase</span><span class="ruby-operator">::</span><span class="ruby-identifier">installAlias</span>( <span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">aliasName</span> )
|
|
367
|
+
<span class="ruby-keyword kw">end</span>
|
|
368
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">respond_to?</span>( <span class="ruby-identifier">:__cc_ma</span> )
|
|
369
|
+
<span class="ruby-identifier">__cc_ma</span>( <span class="ruby-identifier">id</span> )
|
|
370
|
+
<span class="ruby-keyword kw">else</span>
|
|
371
|
+
<span class="ruby-keyword kw">super</span>
|
|
372
|
+
<span class="ruby-keyword kw">end</span>
|
|
373
|
+
<span class="ruby-keyword kw">end</span>
|
|
374
|
+
<span class="ruby-keyword kw">end</span>
|
|
375
|
+
}
|
|
376
|
+
<span class="ruby-keyword kw">end</span>
|
|
377
|
+
</pre>
|
|
378
|
+
</div>
|
|
379
|
+
</div>
|
|
380
|
+
</div>
|
|
381
|
+
|
|
382
|
+
<div id="method-M000630" class="method-detail">
|
|
383
|
+
<a name="M000630"></a>
|
|
384
|
+
|
|
385
|
+
<div class="method-heading">
|
|
386
|
+
<a href="#M000630" class="method-signature">
|
|
387
|
+
<span class="method-name">method_added</span><span class="method-args">( id )</span>
|
|
388
|
+
</a>
|
|
389
|
+
</div>
|
|
390
|
+
|
|
391
|
+
<div class="method-description">
|
|
392
|
+
<p><a class="source-toggle" href="#"
|
|
393
|
+
onclick="toggleCode('M000630-source');return false;">[Source]</a></p>
|
|
394
|
+
<div class="method-source-code" id="M000630-source">
|
|
395
|
+
<pre>
|
|
396
|
+
<span class="ruby-comment cmt"># File lib/carat/crosscase.rb, line 146</span>
|
|
397
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">method_added</span>( <span class="ruby-identifier">id</span> )
|
|
398
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">aliasName</span> = <span class="ruby-constant">CrossCase</span><span class="ruby-operator">::</span><span class="ruby-identifier">transform</span>( <span class="ruby-identifier">id</span> )
|
|
399
|
+
<span class="ruby-constant">CrossCase</span><span class="ruby-operator">::</span><span class="ruby-identifier">installAlias</span>( <span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">aliasName</span> )
|
|
400
|
+
<span class="ruby-keyword kw">end</span>
|
|
401
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">respond_to?</span>( <span class="ruby-identifier">:__cc_ma</span> )
|
|
402
|
+
<span class="ruby-identifier">__cc_ma</span>( <span class="ruby-identifier">id</span> )
|
|
403
|
+
<span class="ruby-keyword kw">else</span>
|
|
404
|
+
<span class="ruby-keyword kw">super</span>
|
|
405
|
+
<span class="ruby-keyword kw">end</span>
|
|
406
|
+
<span class="ruby-keyword kw">end</span>
|
|
407
|
+
</pre>
|
|
408
|
+
</div>
|
|
409
|
+
</div>
|
|
410
|
+
</div>
|
|
411
|
+
|
|
412
|
+
<div id="method-M000629" class="method-detail">
|
|
413
|
+
<a name="M000629"></a>
|
|
414
|
+
|
|
415
|
+
<div class="method-heading">
|
|
416
|
+
<a href="#M000629" class="method-signature">
|
|
417
|
+
<span class="method-name">singleton_method_added</span><span class="method-args">( id )</span>
|
|
418
|
+
</a>
|
|
419
|
+
</div>
|
|
420
|
+
|
|
421
|
+
<div class="method-description">
|
|
422
|
+
<p><a class="source-toggle" href="#"
|
|
423
|
+
onclick="toggleCode('M000629-source');return false;">[Source]</a></p>
|
|
424
|
+
<div class="method-source-code" id="M000629-source">
|
|
425
|
+
<pre>
|
|
426
|
+
<span class="ruby-comment cmt"># File lib/carat/crosscase.rb, line 132</span>
|
|
427
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">singleton_method_added</span>( <span class="ruby-identifier">id</span> )
|
|
428
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">aliasName</span> = <span class="ruby-constant">CrossCase</span><span class="ruby-operator">::</span><span class="ruby-identifier">transform</span>( <span class="ruby-identifier">id</span> )
|
|
429
|
+
<span class="ruby-constant">CrossCase</span><span class="ruby-operator">::</span><span class="ruby-identifier">installClassAlias</span>( <span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">aliasName</span> )
|
|
430
|
+
<span class="ruby-keyword kw">end</span>
|
|
431
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">respond_to?</span>( <span class="ruby-identifier">:__cc_sma</span> )
|
|
432
|
+
<span class="ruby-identifier">__cc_sma</span>( <span class="ruby-identifier">id</span> )
|
|
433
|
+
<span class="ruby-keyword kw">else</span>
|
|
434
|
+
<span class="ruby-keyword kw">super</span>
|
|
435
|
+
<span class="ruby-keyword kw">end</span>
|
|
436
|
+
<span class="ruby-keyword kw">end</span>
|
|
437
|
+
</pre>
|
|
438
|
+
</div>
|
|
439
|
+
</div>
|
|
440
|
+
</div>
|
|
441
|
+
|
|
442
|
+
<div id="method-M000636" class="method-detail">
|
|
443
|
+
<a name="M000636"></a>
|
|
444
|
+
|
|
445
|
+
<div class="method-heading">
|
|
446
|
+
<a href="#M000636" class="method-signature">
|
|
447
|
+
<span class="method-name">transform</span><span class="method-args">( mid )</span>
|
|
448
|
+
</a>
|
|
449
|
+
</div>
|
|
450
|
+
|
|
451
|
+
<div class="method-description">
|
|
452
|
+
<p>
|
|
453
|
+
Return an alternate name for the given method id <tt>mid</tt>. If the
|
|
454
|
+
method id is an under_barred method, returns a camelCased version, and
|
|
455
|
+
vice-versa. If no alternate is called for, returns <tt>nil</tt>.
|
|
456
|
+
</p>
|
|
457
|
+
<p><a class="source-toggle" href="#"
|
|
458
|
+
onclick="toggleCode('M000636-source');return false;">[Source]</a></p>
|
|
459
|
+
<div class="method-source-code" id="M000636-source">
|
|
460
|
+
<pre>
|
|
461
|
+
<span class="ruby-comment cmt"># File lib/carat/crosscase.rb, line 214</span>
|
|
462
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span><span class="ruby-operator">::</span><span class="ruby-identifier">transform</span>( <span class="ruby-identifier">mid</span> )
|
|
463
|
+
<span class="ruby-identifier">methodName</span> = <span class="ruby-identifier">mid</span>.<span class="ruby-identifier">to_s</span>
|
|
464
|
+
<span class="ruby-identifier">transformedName</span> = <span class="ruby-value str">''</span>
|
|
465
|
+
|
|
466
|
+
<span class="ruby-comment cmt"># camelCased methods</span>
|
|
467
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-regexp re">/[A-Z]/</span>.<span class="ruby-identifier">match</span>( <span class="ruby-identifier">methodName</span> ) <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span><span class="ruby-regexp re">/_/</span>.<span class="ruby-identifier">match</span>( <span class="ruby-identifier">methodName</span> )
|
|
468
|
+
<span class="ruby-identifier">transformedName</span> = <span class="ruby-identifier">methodName</span>.<span class="ruby-identifier">gsub</span>( <span class="ruby-regexp re">/([a-z0-9])([A-Z])/</span> ) {<span class="ruby-operator">|</span><span class="ruby-identifier">match</span><span class="ruby-operator">|</span>
|
|
469
|
+
<span class="ruby-identifier">$1</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'_'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">$2</span>
|
|
470
|
+
}.<span class="ruby-identifier">downcase</span>
|
|
471
|
+
|
|
472
|
+
<span class="ruby-comment cmt"># underbarred_methods</span>
|
|
473
|
+
<span class="ruby-keyword kw">elsif</span> <span class="ruby-operator">!</span><span class="ruby-regexp re">/A-Z/</span>.<span class="ruby-identifier">match</span>( <span class="ruby-identifier">methodName</span> ) <span class="ruby-operator">&&</span> <span class="ruby-regexp re">/[a-z0-9]_[a-z]/</span>.<span class="ruby-identifier">match</span>( <span class="ruby-identifier">methodName</span> )
|
|
474
|
+
<span class="ruby-identifier">transformedName</span> = <span class="ruby-identifier">methodName</span>.<span class="ruby-identifier">gsub</span>( <span class="ruby-regexp re">/([a-z0-9])_([a-z])/</span> ) {<span class="ruby-operator">|</span><span class="ruby-identifier">match</span><span class="ruby-operator">|</span>
|
|
475
|
+
<span class="ruby-identifier">$1</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">$2</span>.<span class="ruby-identifier">upcase</span>
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
<span class="ruby-keyword kw">else</span>
|
|
479
|
+
<span class="ruby-identifier">transformedName</span> = <span class="ruby-keyword kw">nil</span>
|
|
480
|
+
<span class="ruby-keyword kw">end</span>
|
|
481
|
+
|
|
482
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">transformedName</span>
|
|
483
|
+
<span class="ruby-keyword kw">end</span>
|
|
484
|
+
</pre>
|
|
485
|
+
</div>
|
|
486
|
+
</div>
|
|
487
|
+
</div>
|
|
488
|
+
|
|
489
|
+
<div id="method-M000631" class="method-detail">
|
|
490
|
+
<a name="M000631"></a>
|
|
491
|
+
|
|
492
|
+
<div class="method-heading">
|
|
493
|
+
<a href="#M000631" class="method-signature">
|
|
494
|
+
<span class="method-name">transformClassMethods</span><span class="method-args">( mod )</span>
|
|
495
|
+
</a>
|
|
496
|
+
</div>
|
|
497
|
+
|
|
498
|
+
<div class="method-description">
|
|
499
|
+
<p>
|
|
500
|
+
Search for and install aliases for either underbarred or camelCased class
|
|
501
|
+
methods for <tt>mod</tt> (a <a href="Class.html">Class</a> or <a
|
|
502
|
+
href="Module.html">Module</a>).
|
|
503
|
+
</p>
|
|
504
|
+
<p><a class="source-toggle" href="#"
|
|
505
|
+
onclick="toggleCode('M000631-source');return false;">[Source]</a></p>
|
|
506
|
+
<div class="method-source-code" id="M000631-source">
|
|
507
|
+
<pre>
|
|
508
|
+
<span class="ruby-comment cmt"># File lib/carat/crosscase.rb, line 163</span>
|
|
509
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span><span class="ruby-operator">::</span><span class="ruby-identifier">transformClassMethods</span>( <span class="ruby-identifier">mod</span> )
|
|
510
|
+
<span class="ruby-keyword kw">self</span><span class="ruby-operator">::</span><span class="ruby-identifier">findTargetMethods</span>( <span class="ruby-identifier">mod</span>.<span class="ruby-identifier">singleton_methods</span>(<span class="ruby-keyword kw">false</span>) ) {<span class="ruby-operator">|</span><span class="ruby-identifier">meth</span>, <span class="ruby-identifier">aliasName</span><span class="ruby-operator">|</span>
|
|
511
|
+
<span class="ruby-keyword kw">self</span><span class="ruby-operator">::</span><span class="ruby-identifier">installClassAlias</span>( <span class="ruby-identifier">mod</span>, <span class="ruby-identifier">meth</span>, <span class="ruby-identifier">aliasName</span> )
|
|
512
|
+
}
|
|
513
|
+
<span class="ruby-keyword kw">end</span>
|
|
514
|
+
</pre>
|
|
515
|
+
</div>
|
|
516
|
+
</div>
|
|
517
|
+
</div>
|
|
518
|
+
|
|
519
|
+
<div id="method-M000633" class="method-detail">
|
|
520
|
+
<a name="M000633"></a>
|
|
521
|
+
|
|
522
|
+
<div class="method-heading">
|
|
523
|
+
<a href="#M000633" class="method-signature">
|
|
524
|
+
<span class="method-name">transformInstanceMethods</span><span class="method-args">( mod )</span>
|
|
525
|
+
</a>
|
|
526
|
+
</div>
|
|
527
|
+
|
|
528
|
+
<div class="method-description">
|
|
529
|
+
<p>
|
|
530
|
+
Search for and install aliases for either underbarred or camelCased
|
|
531
|
+
instance methods for <tt>mod</tt> (a <a href="Class.html">Class</a> or <a
|
|
532
|
+
href="Module.html">Module</a>).
|
|
533
|
+
</p>
|
|
534
|
+
<p><a class="source-toggle" href="#"
|
|
535
|
+
onclick="toggleCode('M000633-source');return false;">[Source]</a></p>
|
|
536
|
+
<div class="method-source-code" id="M000633-source">
|
|
537
|
+
<pre>
|
|
538
|
+
<span class="ruby-comment cmt"># File lib/carat/crosscase.rb, line 184</span>
|
|
539
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span><span class="ruby-operator">::</span><span class="ruby-identifier">transformInstanceMethods</span>( <span class="ruby-identifier">mod</span> )
|
|
540
|
+
<span class="ruby-keyword kw">self</span><span class="ruby-operator">::</span><span class="ruby-identifier">findTargetMethods</span>( <span class="ruby-identifier">mod</span>.<span class="ruby-identifier">instance_methods</span>(<span class="ruby-keyword kw">false</span>) ) {<span class="ruby-operator">|</span><span class="ruby-identifier">meth</span>, <span class="ruby-identifier">aliasName</span><span class="ruby-operator">|</span>
|
|
541
|
+
<span class="ruby-keyword kw">self</span><span class="ruby-operator">::</span><span class="ruby-identifier">installAlias</span>( <span class="ruby-identifier">mod</span>, <span class="ruby-identifier">meth</span>, <span class="ruby-identifier">aliasName</span> )
|
|
542
|
+
}
|
|
543
|
+
<span class="ruby-keyword kw">end</span>
|
|
544
|
+
</pre>
|
|
545
|
+
</div>
|
|
546
|
+
</div>
|
|
547
|
+
</div>
|
|
548
|
+
|
|
549
|
+
|
|
550
|
+
</div>
|
|
551
|
+
|
|
552
|
+
|
|
553
|
+
</div>
|
|
554
|
+
|
|
555
|
+
|
|
556
|
+
<div id="validator-badges">
|
|
557
|
+
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
|
|
558
|
+
</div>
|
|
559
|
+
|
|
560
|
+
</body>
|
|
561
|
+
</html>
|