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,515 @@
|
|
|
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: Parser</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">Parser</td>
|
|
54
|
+
</tr>
|
|
55
|
+
<tr class="top-aligned-row">
|
|
56
|
+
<td><strong>In:</strong></td>
|
|
57
|
+
<td>
|
|
58
|
+
<a href="../files/lib/carat/parser_rb.html">
|
|
59
|
+
lib/carat/parser.rb
|
|
60
|
+
</a>
|
|
61
|
+
<br />
|
|
62
|
+
<a href="../files/lib/carat/parser-old_rb.html">
|
|
63
|
+
lib/carat/parser-old.rb
|
|
64
|
+
</a>
|
|
65
|
+
<br />
|
|
66
|
+
</td>
|
|
67
|
+
</tr>
|
|
68
|
+
|
|
69
|
+
<tr class="top-aligned-row">
|
|
70
|
+
<td><strong>Parent:</strong></td>
|
|
71
|
+
<td>
|
|
72
|
+
<a href="Object.html">
|
|
73
|
+
Object
|
|
74
|
+
</a>
|
|
75
|
+
</td>
|
|
76
|
+
</tr>
|
|
77
|
+
</table>
|
|
78
|
+
</div>
|
|
79
|
+
<!-- banner header -->
|
|
80
|
+
|
|
81
|
+
<div id="bodyContent">
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
<div id="contextContent">
|
|
86
|
+
|
|
87
|
+
<div id="description">
|
|
88
|
+
<p>
|
|
89
|
+
<a href="Parser.html">Parser</a>
|
|
90
|
+
</p>
|
|
91
|
+
|
|
92
|
+
</div>
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
</div>
|
|
96
|
+
|
|
97
|
+
<div id="method-list">
|
|
98
|
+
<h3 class="section-bar">Methods</h3>
|
|
99
|
+
|
|
100
|
+
<div class="name-list">
|
|
101
|
+
<a href="#M000100">new</a>
|
|
102
|
+
<a href="#M000103">new</a>
|
|
103
|
+
<a href="#M000104">parse</a>
|
|
104
|
+
<a href="#M000101">parse</a>
|
|
105
|
+
<a href="#M000102">reparse</a>
|
|
106
|
+
<a href="#M000105">reparse</a>
|
|
107
|
+
</div>
|
|
108
|
+
</div>
|
|
109
|
+
|
|
110
|
+
</div>
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
<!-- if includes -->
|
|
114
|
+
|
|
115
|
+
<div id="section">
|
|
116
|
+
|
|
117
|
+
<div id="class-list">
|
|
118
|
+
<h3 class="section-bar">Classes and Modules</h3>
|
|
119
|
+
|
|
120
|
+
Class <a href="Parser/Main.html" class="link">Parser::Main</a><br />
|
|
121
|
+
Class <a href="Parser/Marker.html" class="link">Parser::Marker</a><br />
|
|
122
|
+
Class <a href="Parser/Registry.html" class="link">Parser::Registry</a><br />
|
|
123
|
+
Class <a href="Parser/Token.html" class="link">Parser::Token</a><br />
|
|
124
|
+
Class <a href="Parser/UnitToken.html" class="link">Parser::UnitToken</a><br />
|
|
125
|
+
|
|
126
|
+
</div>
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
<!-- if method_list -->
|
|
135
|
+
<div id="methods">
|
|
136
|
+
<h3 class="section-bar">Public Class methods</h3>
|
|
137
|
+
|
|
138
|
+
<div id="method-M000100" class="method-detail">
|
|
139
|
+
<a name="M000100"></a>
|
|
140
|
+
|
|
141
|
+
<div class="method-heading">
|
|
142
|
+
<a href="#M000100" class="method-signature">
|
|
143
|
+
<span class="method-name">new</span><span class="method-args">( *markers )</span>
|
|
144
|
+
</a>
|
|
145
|
+
</div>
|
|
146
|
+
|
|
147
|
+
<div class="method-description">
|
|
148
|
+
<p><a class="source-toggle" href="#"
|
|
149
|
+
onclick="toggleCode('M000100-source');return false;">[Source]</a></p>
|
|
150
|
+
<div class="method-source-code" id="M000100-source">
|
|
151
|
+
<pre>
|
|
152
|
+
<span class="ruby-comment cmt"># File lib/carat/parser.rb, line 106</span>
|
|
153
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>( <span class="ruby-operator">*</span><span class="ruby-identifier">markers</span> )
|
|
154
|
+
<span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">markers</span>.<span class="ruby-identifier">first</span>.<span class="ruby-identifier">kind_of?</span>( <span class="ruby-constant">Parser</span><span class="ruby-operator">::</span><span class="ruby-constant">Token</span> )
|
|
155
|
+
<span class="ruby-identifier">rp</span> = <span class="ruby-identifier">markers</span>.<span class="ruby-identifier">shift</span>
|
|
156
|
+
<span class="ruby-keyword kw">else</span>
|
|
157
|
+
<span class="ruby-identifier">rp</span> = <span class="ruby-keyword kw">nil</span> <span class="ruby-comment cmt">#self</span>
|
|
158
|
+
<span class="ruby-keyword kw">end</span>
|
|
159
|
+
<span class="ruby-identifier">markers</span> = <span class="ruby-identifier">markers</span>.<span class="ruby-identifier">collect</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">m</span><span class="ruby-operator">|</span> <span class="ruby-identifier">c</span> = <span class="ruby-identifier">m</span>.<span class="ruby-identifier">dup</span> ; <span class="ruby-identifier">c</span>.<span class="ruby-identifier">parser</span> = <span class="ruby-identifier">rp</span> ; <span class="ruby-identifier">c</span> }
|
|
160
|
+
<span class="ruby-ivar">@registry</span> = <span class="ruby-constant">Registry</span>.<span class="ruby-identifier">new</span>( <span class="ruby-operator">*</span><span class="ruby-identifier">markers</span> )
|
|
161
|
+
<span class="ruby-keyword kw">end</span>
|
|
162
|
+
</pre>
|
|
163
|
+
</div>
|
|
164
|
+
</div>
|
|
165
|
+
</div>
|
|
166
|
+
|
|
167
|
+
<div id="method-M000103" class="method-detail">
|
|
168
|
+
<a name="M000103"></a>
|
|
169
|
+
|
|
170
|
+
<div class="method-heading">
|
|
171
|
+
<a href="#M000103" class="method-signature">
|
|
172
|
+
<span class="method-name">new</span><span class="method-args">( *markers )</span>
|
|
173
|
+
</a>
|
|
174
|
+
</div>
|
|
175
|
+
|
|
176
|
+
<div class="method-description">
|
|
177
|
+
<p><a class="source-toggle" href="#"
|
|
178
|
+
onclick="toggleCode('M000103-source');return false;">[Source]</a></p>
|
|
179
|
+
<div class="method-source-code" id="M000103-source">
|
|
180
|
+
<pre>
|
|
181
|
+
<span class="ruby-comment cmt"># File lib/carat/parser-old.rb, line 101</span>
|
|
182
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>( <span class="ruby-operator">*</span><span class="ruby-identifier">markers</span> )
|
|
183
|
+
<span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">markers</span>.<span class="ruby-identifier">first</span>.<span class="ruby-identifier">kind_of?</span>( <span class="ruby-constant">Parser</span><span class="ruby-operator">::</span><span class="ruby-constant">Token</span> )
|
|
184
|
+
<span class="ruby-identifier">rp</span> = <span class="ruby-identifier">markers</span>.<span class="ruby-identifier">shift</span>
|
|
185
|
+
<span class="ruby-keyword kw">else</span>
|
|
186
|
+
<span class="ruby-identifier">rp</span> = <span class="ruby-keyword kw">self</span>
|
|
187
|
+
<span class="ruby-keyword kw">end</span>
|
|
188
|
+
<span class="ruby-identifier">markers</span> = <span class="ruby-identifier">markers</span>.<span class="ruby-identifier">collect</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">m</span><span class="ruby-operator">|</span> <span class="ruby-identifier">c</span> = <span class="ruby-identifier">m</span>.<span class="ruby-identifier">dup</span> ; <span class="ruby-identifier">c</span>.<span class="ruby-identifier">parser</span> = <span class="ruby-identifier">rp</span> ; <span class="ruby-identifier">c</span> }
|
|
189
|
+
<span class="ruby-ivar">@registry</span> = <span class="ruby-constant">Registry</span>.<span class="ruby-identifier">new</span>( <span class="ruby-operator">*</span><span class="ruby-identifier">markers</span> )
|
|
190
|
+
<span class="ruby-keyword kw">end</span>
|
|
191
|
+
</pre>
|
|
192
|
+
</div>
|
|
193
|
+
</div>
|
|
194
|
+
</div>
|
|
195
|
+
|
|
196
|
+
<h3 class="section-bar">Public Instance methods</h3>
|
|
197
|
+
|
|
198
|
+
<div id="method-M000104" class="method-detail">
|
|
199
|
+
<a name="M000104"></a>
|
|
200
|
+
|
|
201
|
+
<div class="method-heading">
|
|
202
|
+
<a href="#M000104" class="method-signature">
|
|
203
|
+
<span class="method-name">parse</span><span class="method-args">( text )</span>
|
|
204
|
+
</a>
|
|
205
|
+
</div>
|
|
206
|
+
|
|
207
|
+
<div class="method-description">
|
|
208
|
+
<p><a class="source-toggle" href="#"
|
|
209
|
+
onclick="toggleCode('M000104-source');return false;">[Source]</a></p>
|
|
210
|
+
<div class="method-source-code" id="M000104-source">
|
|
211
|
+
<pre>
|
|
212
|
+
<span class="ruby-comment cmt"># File lib/carat/parser-old.rb, line 111</span>
|
|
213
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse</span>( <span class="ruby-identifier">text</span> )
|
|
214
|
+
<span class="ruby-identifier">stack</span> = <span class="ruby-identifier">reparse</span>( <span class="ruby-identifier">text</span> )
|
|
215
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">stack</span>
|
|
216
|
+
<span class="ruby-keyword kw">end</span>
|
|
217
|
+
</pre>
|
|
218
|
+
</div>
|
|
219
|
+
</div>
|
|
220
|
+
</div>
|
|
221
|
+
|
|
222
|
+
<div id="method-M000101" class="method-detail">
|
|
223
|
+
<a name="M000101"></a>
|
|
224
|
+
|
|
225
|
+
<div class="method-heading">
|
|
226
|
+
<a href="#M000101" class="method-signature">
|
|
227
|
+
<span class="method-name">parse</span><span class="method-args">( text )</span>
|
|
228
|
+
</a>
|
|
229
|
+
</div>
|
|
230
|
+
|
|
231
|
+
<div class="method-description">
|
|
232
|
+
<p><a class="source-toggle" href="#"
|
|
233
|
+
onclick="toggleCode('M000101-source');return false;">[Source]</a></p>
|
|
234
|
+
<div class="method-source-code" id="M000101-source">
|
|
235
|
+
<pre>
|
|
236
|
+
<span class="ruby-comment cmt"># File lib/carat/parser.rb, line 116</span>
|
|
237
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse</span>( <span class="ruby-identifier">text</span> )
|
|
238
|
+
<span class="ruby-identifier">stack</span> = <span class="ruby-identifier">reparse</span>( <span class="ruby-identifier">text</span> )
|
|
239
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">stack</span>
|
|
240
|
+
<span class="ruby-keyword kw">end</span>
|
|
241
|
+
</pre>
|
|
242
|
+
</div>
|
|
243
|
+
</div>
|
|
244
|
+
</div>
|
|
245
|
+
|
|
246
|
+
<h3 class="section-bar">Private Instance methods</h3>
|
|
247
|
+
|
|
248
|
+
<div id="method-M000102" class="method-detail">
|
|
249
|
+
<a name="M000102"></a>
|
|
250
|
+
|
|
251
|
+
<div class="method-heading">
|
|
252
|
+
<a href="#M000102" class="method-signature">
|
|
253
|
+
<span class="method-name">reparse</span><span class="method-args">( text )</span>
|
|
254
|
+
</a>
|
|
255
|
+
</div>
|
|
256
|
+
|
|
257
|
+
<div class="method-description">
|
|
258
|
+
<p><a class="source-toggle" href="#"
|
|
259
|
+
onclick="toggleCode('M000102-source');return false;">[Source]</a></p>
|
|
260
|
+
<div class="method-source-code" id="M000102-source">
|
|
261
|
+
<pre>
|
|
262
|
+
<span class="ruby-comment cmt"># File lib/carat/parser.rb, line 150</span>
|
|
263
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reparse</span>( <span class="ruby-identifier">text</span> )
|
|
264
|
+
<span class="ruby-identifier">stack</span> = <span class="ruby-constant">Main</span>.<span class="ruby-identifier">new</span>
|
|
265
|
+
<span class="ruby-comment cmt">#stack = []</span>
|
|
266
|
+
<span class="ruby-comment cmt">#token_stack = []</span>
|
|
267
|
+
<span class="ruby-identifier">current</span> = <span class="ruby-identifier">stack</span>
|
|
268
|
+
|
|
269
|
+
<span class="ruby-identifier">offset</span> = <span class="ruby-value">0</span>
|
|
270
|
+
<span class="ruby-comment cmt">#tokenize = 0</span>
|
|
271
|
+
<span class="ruby-identifier">finished</span> = <span class="ruby-keyword kw">false</span>
|
|
272
|
+
|
|
273
|
+
<span class="ruby-keyword kw">until</span> <span class="ruby-identifier">finished</span>
|
|
274
|
+
<span class="ruby-identifier">mode</span> = <span class="ruby-keyword kw">nil</span>
|
|
275
|
+
<span class="ruby-identifier">match</span> = <span class="ruby-keyword kw">nil</span>
|
|
276
|
+
<span class="ruby-identifier">token</span> = <span class="ruby-keyword kw">nil</span>
|
|
277
|
+
<span class="ruby-identifier">index</span> = <span class="ruby-identifier">text</span>.<span class="ruby-identifier">length</span>
|
|
278
|
+
|
|
279
|
+
<span class="ruby-comment cmt">#unless token_stack.empty?</span>
|
|
280
|
+
<span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">stack</span>.<span class="ruby-identifier">empty?</span>
|
|
281
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-value str">"not a marker on end of stack?"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">Marker</span> <span class="ruby-operator">===</span> <span class="ruby-identifier">stack</span>.<span class="ruby-identifier">last</span>
|
|
282
|
+
<span class="ruby-identifier">m</span> = <span class="ruby-identifier">stack</span>.<span class="ruby-identifier">last</span> <span class="ruby-comment cmt"># get last marker</span>
|
|
283
|
+
<span class="ruby-comment cmt">#t = token_stack.last</span>
|
|
284
|
+
<span class="ruby-identifier">t</span> = <span class="ruby-identifier">m</span>.<span class="ruby-identifier">token</span> <span class="ruby-comment cmt"># marker's token</span>
|
|
285
|
+
<span class="ruby-identifier">i</span> = <span class="ruby-identifier">text</span>.<span class="ruby-identifier">index</span>( <span class="ruby-identifier">t</span>.<span class="ruby-identifier">stop</span>( <span class="ruby-identifier">m</span>.<span class="ruby-identifier">match</span> ), <span class="ruby-identifier">offset</span> )
|
|
286
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">i</span> <span class="ruby-comment cmt">#and i < index</span>
|
|
287
|
+
<span class="ruby-identifier">mode</span> = <span class="ruby-identifier">:END</span>
|
|
288
|
+
<span class="ruby-identifier">token</span> = <span class="ruby-identifier">t</span>
|
|
289
|
+
<span class="ruby-identifier">match</span> = <span class="ruby-identifier">$~</span>
|
|
290
|
+
<span class="ruby-identifier">index</span> = <span class="ruby-identifier">i</span>
|
|
291
|
+
<span class="ruby-keyword kw">end</span>
|
|
292
|
+
<span class="ruby-keyword kw">end</span>
|
|
293
|
+
|
|
294
|
+
<span class="ruby-ivar">@registry</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span>
|
|
295
|
+
<span class="ruby-identifier">i</span> = <span class="ruby-identifier">text</span>.<span class="ruby-identifier">index</span>( <span class="ruby-identifier">t</span>.<span class="ruby-identifier">start</span>( <span class="ruby-identifier">current</span>.<span class="ruby-identifier">match</span> ), <span class="ruby-identifier">offset</span> )
|
|
296
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">i</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">i</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">index</span> <span class="ruby-comment cmt"># what comes first?</span>
|
|
297
|
+
<span class="ruby-identifier">m</span> = <span class="ruby-identifier">$~</span> <span class="ruby-comment cmt"># store match</span>
|
|
298
|
+
<span class="ruby-comment cmt"># if t.unit?</span>
|
|
299
|
+
<span class="ruby-comment cmt"># mode = :UNIT</span>
|
|
300
|
+
<span class="ruby-comment cmt"># token = t</span>
|
|
301
|
+
<span class="ruby-comment cmt"># match = m</span>
|
|
302
|
+
<span class="ruby-comment cmt"># index = i</span>
|
|
303
|
+
<span class="ruby-comment cmt"># elsif text.index( t.stop( m ), m.end(0) ) # ensure a matching end token</span>
|
|
304
|
+
<span class="ruby-comment cmt"># mode = :START</span>
|
|
305
|
+
<span class="ruby-comment cmt"># token = t</span>
|
|
306
|
+
<span class="ruby-comment cmt"># match = m</span>
|
|
307
|
+
<span class="ruby-comment cmt"># index = i</span>
|
|
308
|
+
<span class="ruby-comment cmt"># end</span>
|
|
309
|
+
<span class="ruby-identifier">mode</span> = <span class="ruby-identifier">t</span>.<span class="ruby-identifier">unit?</span> <span class="ruby-value">? </span><span class="ruby-operator">:</span><span class="ruby-constant">UNIT</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">:START</span>
|
|
310
|
+
<span class="ruby-identifier">token</span> = <span class="ruby-identifier">t</span>
|
|
311
|
+
<span class="ruby-identifier">match</span> = <span class="ruby-identifier">m</span>
|
|
312
|
+
<span class="ruby-identifier">index</span> = <span class="ruby-identifier">i</span>
|
|
313
|
+
|
|
314
|
+
<span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">t</span>.<span class="ruby-identifier">unit?</span> <span class="ruby-comment cmt">#if mode == :START</span>
|
|
315
|
+
<span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">text</span>.<span class="ruby-identifier">index</span>( <span class="ruby-identifier">t</span>.<span class="ruby-identifier">stop</span>( <span class="ruby-identifier">m</span> ), <span class="ruby-identifier">m</span>.<span class="ruby-identifier">end</span>(<span class="ruby-value">0</span>) ) <span class="ruby-comment cmt"># ensure a matching end token</span>
|
|
316
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-node">"no end token matching #{t.stop( m )}"</span>
|
|
317
|
+
<span class="ruby-keyword kw">end</span>
|
|
318
|
+
<span class="ruby-keyword kw">end</span>
|
|
319
|
+
<span class="ruby-keyword kw">end</span>
|
|
320
|
+
<span class="ruby-keyword kw">end</span>
|
|
321
|
+
|
|
322
|
+
<span class="ruby-keyword kw">case</span> <span class="ruby-identifier">mode</span>
|
|
323
|
+
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:START</span>
|
|
324
|
+
<span class="ruby-identifier">buffer_text</span> = <span class="ruby-identifier">text</span>[<span class="ruby-identifier">offset</span><span class="ruby-operator">...</span><span class="ruby-identifier">index</span>]
|
|
325
|
+
<span class="ruby-identifier">current</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">buffer_text</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">buffer_text</span>.<span class="ruby-identifier">empty?</span>
|
|
326
|
+
|
|
327
|
+
<span class="ruby-identifier">mock</span> = <span class="ruby-constant">Marker</span>.<span class="ruby-identifier">new</span>
|
|
328
|
+
<span class="ruby-identifier">mock</span>.<span class="ruby-identifier">token</span> = <span class="ruby-identifier">token</span>
|
|
329
|
+
<span class="ruby-identifier">mock</span>.<span class="ruby-identifier">match</span> = <span class="ruby-identifier">match</span>
|
|
330
|
+
<span class="ruby-identifier">mock</span>.<span class="ruby-identifier">parent</span> = <span class="ruby-identifier">current</span>
|
|
331
|
+
|
|
332
|
+
<span class="ruby-identifier">current</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">mock</span>
|
|
333
|
+
<span class="ruby-identifier">current</span> = <span class="ruby-identifier">mock</span>
|
|
334
|
+
<span class="ruby-identifier">stack</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">mock</span>
|
|
335
|
+
|
|
336
|
+
<span class="ruby-identifier">offset</span> = <span class="ruby-identifier">match</span>.<span class="ruby-identifier">end</span>(<span class="ruby-value">0</span>) <span class="ruby-comment cmt"># increment the offset</span>
|
|
337
|
+
|
|
338
|
+
<span class="ruby-comment cmt">#tokenize += 1 if token.raw? # increment tokenizer raw token count</span>
|
|
339
|
+
|
|
340
|
+
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:END</span>
|
|
341
|
+
<span class="ruby-identifier">buffer_text</span> = <span class="ruby-identifier">text</span>[<span class="ruby-identifier">offset</span><span class="ruby-operator">...</span><span class="ruby-identifier">index</span>].<span class="ruby-identifier">chomp</span>(<span class="ruby-value str">"\n"</span>)
|
|
342
|
+
<span class="ruby-identifier">current</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">buffer_text</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">buffer_text</span>.<span class="ruby-identifier">empty?</span>
|
|
343
|
+
|
|
344
|
+
<span class="ruby-identifier">mock</span> = <span class="ruby-identifier">stack</span>.<span class="ruby-identifier">pop</span> <span class="ruby-comment cmt"># pop off the marker</span>
|
|
345
|
+
|
|
346
|
+
<span class="ruby-identifier">mock</span>.<span class="ruby-identifier">outer_range</span> = <span class="ruby-identifier">mock</span>.<span class="ruby-identifier">match</span>.<span class="ruby-identifier">begin</span>(<span class="ruby-value">0</span>)<span class="ruby-operator">...</span><span class="ruby-identifier">match</span>.<span class="ruby-identifier">end</span>(<span class="ruby-value">0</span>)
|
|
347
|
+
<span class="ruby-identifier">mock</span>.<span class="ruby-identifier">inner_range</span> = <span class="ruby-identifier">mock</span>.<span class="ruby-identifier">match</span>.<span class="ruby-identifier">end</span>(<span class="ruby-value">0</span>)<span class="ruby-operator">...</span><span class="ruby-identifier">match</span>.<span class="ruby-identifier">begin</span>(<span class="ruby-value">0</span>)
|
|
348
|
+
|
|
349
|
+
<span class="ruby-identifier">current</span> = <span class="ruby-identifier">mock</span>.<span class="ruby-identifier">parent</span>
|
|
350
|
+
|
|
351
|
+
<span class="ruby-identifier">offset</span> = <span class="ruby-identifier">match</span>.<span class="ruby-identifier">end</span>(<span class="ruby-value">0</span>) <span class="ruby-comment cmt"># increment the offset</span>
|
|
352
|
+
|
|
353
|
+
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:UNIT</span>
|
|
354
|
+
<span class="ruby-identifier">buffer_text</span> = <span class="ruby-identifier">text</span>[<span class="ruby-identifier">offset</span><span class="ruby-operator">...</span><span class="ruby-identifier">index</span>] <span class="ruby-comment cmt">#.chomp("\n")</span>
|
|
355
|
+
<span class="ruby-identifier">current</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">buffer_text</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">buffer_text</span>.<span class="ruby-identifier">empty?</span>
|
|
356
|
+
|
|
357
|
+
<span class="ruby-identifier">mock</span> = <span class="ruby-constant">Marker</span>.<span class="ruby-identifier">new</span>
|
|
358
|
+
<span class="ruby-identifier">mock</span>.<span class="ruby-identifier">token</span> = <span class="ruby-identifier">token</span>
|
|
359
|
+
<span class="ruby-identifier">mock</span>.<span class="ruby-identifier">match</span> = <span class="ruby-identifier">match</span>
|
|
360
|
+
<span class="ruby-identifier">mock</span>.<span class="ruby-identifier">parent</span> = <span class="ruby-identifier">current</span>
|
|
361
|
+
|
|
362
|
+
<span class="ruby-identifier">mock</span>.<span class="ruby-identifier">outer_range</span> = <span class="ruby-identifier">match</span>.<span class="ruby-identifier">begin</span>(<span class="ruby-value">0</span>)<span class="ruby-operator">...</span><span class="ruby-identifier">match</span>.<span class="ruby-identifier">end</span>(<span class="ruby-value">0</span>)
|
|
363
|
+
|
|
364
|
+
<span class="ruby-identifier">current</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">mock</span>
|
|
365
|
+
|
|
366
|
+
<span class="ruby-identifier">offset</span> = <span class="ruby-identifier">match</span>.<span class="ruby-identifier">end</span>(<span class="ruby-value">0</span>) <span class="ruby-comment cmt"># increment the offset </span>
|
|
367
|
+
|
|
368
|
+
<span class="ruby-keyword kw">else</span>
|
|
369
|
+
<span class="ruby-identifier">buffer_text</span> = <span class="ruby-identifier">text</span>[<span class="ruby-identifier">offset</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>].<span class="ruby-identifier">chomp</span>(<span class="ruby-value str">"\n"</span>)
|
|
370
|
+
<span class="ruby-identifier">current</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">buffer_text</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">buffer_text</span>.<span class="ruby-identifier">empty?</span>
|
|
371
|
+
|
|
372
|
+
<span class="ruby-identifier">finished</span> = <span class="ruby-keyword kw">true</span> <span class="ruby-comment cmt"># finished</span>
|
|
373
|
+
|
|
374
|
+
<span class="ruby-keyword kw">end</span> <span class="ruby-comment cmt">#case</span>
|
|
375
|
+
<span class="ruby-keyword kw">end</span> <span class="ruby-comment cmt">#until</span>
|
|
376
|
+
|
|
377
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">stack</span>
|
|
378
|
+
<span class="ruby-keyword kw">end</span>
|
|
379
|
+
</pre>
|
|
380
|
+
</div>
|
|
381
|
+
</div>
|
|
382
|
+
</div>
|
|
383
|
+
|
|
384
|
+
<div id="method-M000105" class="method-detail">
|
|
385
|
+
<a name="M000105"></a>
|
|
386
|
+
|
|
387
|
+
<div class="method-heading">
|
|
388
|
+
<a href="#M000105" class="method-signature">
|
|
389
|
+
<span class="method-name">reparse</span><span class="method-args">( text )</span>
|
|
390
|
+
</a>
|
|
391
|
+
</div>
|
|
392
|
+
|
|
393
|
+
<div class="method-description">
|
|
394
|
+
<p><a class="source-toggle" href="#"
|
|
395
|
+
onclick="toggleCode('M000105-source');return false;">[Source]</a></p>
|
|
396
|
+
<div class="method-source-code" id="M000105-source">
|
|
397
|
+
<pre>
|
|
398
|
+
<span class="ruby-comment cmt"># File lib/carat/parser-old.rb, line 122</span>
|
|
399
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reparse</span>( <span class="ruby-identifier">text</span> )
|
|
400
|
+
<span class="ruby-identifier">stack</span> = <span class="ruby-constant">Main</span>.<span class="ruby-identifier">new</span>
|
|
401
|
+
<span class="ruby-identifier">token_stack</span> = []
|
|
402
|
+
<span class="ruby-identifier">current</span> = <span class="ruby-identifier">stack</span>
|
|
403
|
+
|
|
404
|
+
<span class="ruby-identifier">offset</span> = <span class="ruby-value">0</span>
|
|
405
|
+
<span class="ruby-identifier">tokenize</span> = <span class="ruby-value">0</span>
|
|
406
|
+
<span class="ruby-identifier">finished</span> = <span class="ruby-keyword kw">false</span>
|
|
407
|
+
|
|
408
|
+
<span class="ruby-keyword kw">until</span> <span class="ruby-identifier">finished</span>
|
|
409
|
+
<span class="ruby-identifier">tag</span> = <span class="ruby-keyword kw">nil</span>
|
|
410
|
+
<span class="ruby-identifier">mode</span> = <span class="ruby-keyword kw">nil</span>
|
|
411
|
+
<span class="ruby-identifier">match</span> = <span class="ruby-keyword kw">nil</span>
|
|
412
|
+
<span class="ruby-identifier">token</span> = <span class="ruby-keyword kw">nil</span>
|
|
413
|
+
<span class="ruby-identifier">index</span> = <span class="ruby-identifier">text</span>.<span class="ruby-identifier">length</span>
|
|
414
|
+
|
|
415
|
+
<span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">token_stack</span>.<span class="ruby-identifier">empty?</span>
|
|
416
|
+
<span class="ruby-identifier">t</span> = <span class="ruby-identifier">token_stack</span>.<span class="ruby-identifier">last</span>
|
|
417
|
+
<span class="ruby-identifier">m</span> = <span class="ruby-identifier">stack</span>.<span class="ruby-identifier">last</span>
|
|
418
|
+
<span class="ruby-identifier">i</span> = <span class="ruby-identifier">text</span>.<span class="ruby-identifier">index</span>( <span class="ruby-identifier">t</span>.<span class="ruby-identifier">stop</span>( <span class="ruby-identifier">m</span>.<span class="ruby-identifier">match</span> ), <span class="ruby-identifier">offset</span> )
|
|
419
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">i</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">i</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">index</span>
|
|
420
|
+
<span class="ruby-identifier">mode</span> = <span class="ruby-identifier">:END</span>
|
|
421
|
+
<span class="ruby-identifier">token</span> = <span class="ruby-identifier">t</span>
|
|
422
|
+
<span class="ruby-identifier">match</span> = <span class="ruby-identifier">$~</span>
|
|
423
|
+
<span class="ruby-identifier">index</span> = <span class="ruby-identifier">i</span>
|
|
424
|
+
<span class="ruby-keyword kw">end</span>
|
|
425
|
+
<span class="ruby-keyword kw">end</span>
|
|
426
|
+
|
|
427
|
+
<span class="ruby-ivar">@registry</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span>
|
|
428
|
+
<span class="ruby-identifier">i</span> = <span class="ruby-identifier">text</span>.<span class="ruby-identifier">index</span>( <span class="ruby-identifier">t</span>.<span class="ruby-identifier">start</span>( <span class="ruby-identifier">current</span>.<span class="ruby-identifier">match</span> ), <span class="ruby-identifier">offset</span> )
|
|
429
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">i</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">i</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">index</span> <span class="ruby-comment cmt"># what comes first?</span>
|
|
430
|
+
<span class="ruby-identifier">m</span> = <span class="ruby-identifier">$~</span> <span class="ruby-comment cmt"># store match</span>
|
|
431
|
+
<span class="ruby-comment cmt"># if t.unit?</span>
|
|
432
|
+
<span class="ruby-comment cmt"># mode = :UNIT</span>
|
|
433
|
+
<span class="ruby-comment cmt"># token = t</span>
|
|
434
|
+
<span class="ruby-comment cmt"># match = m</span>
|
|
435
|
+
<span class="ruby-comment cmt"># index = i</span>
|
|
436
|
+
<span class="ruby-comment cmt"># elsif text.index( t.stop( m ), m.end(0) ) # ensure a matching end tag</span>
|
|
437
|
+
<span class="ruby-comment cmt"># mode = :START</span>
|
|
438
|
+
<span class="ruby-comment cmt"># token = t</span>
|
|
439
|
+
<span class="ruby-comment cmt"># match = m</span>
|
|
440
|
+
<span class="ruby-comment cmt"># index = i</span>
|
|
441
|
+
<span class="ruby-comment cmt"># end</span>
|
|
442
|
+
<span class="ruby-identifier">mode</span> = <span class="ruby-identifier">t</span>.<span class="ruby-identifier">unit?</span> <span class="ruby-value">? </span><span class="ruby-operator">:</span><span class="ruby-constant">UNIT</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">:START</span>
|
|
443
|
+
<span class="ruby-identifier">token</span> = <span class="ruby-identifier">t</span>
|
|
444
|
+
<span class="ruby-identifier">match</span> = <span class="ruby-identifier">m</span>
|
|
445
|
+
<span class="ruby-identifier">index</span> = <span class="ruby-identifier">i</span>
|
|
446
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">mode</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:START</span>
|
|
447
|
+
<span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">text</span>.<span class="ruby-identifier">index</span>( <span class="ruby-identifier">t</span>.<span class="ruby-identifier">stop</span>( <span class="ruby-identifier">m</span> ), <span class="ruby-identifier">m</span>.<span class="ruby-identifier">end</span>(<span class="ruby-value">0</span>) ) <span class="ruby-comment cmt"># ensure a matching end tag</span>
|
|
448
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-node">"no end tag for #{t}"</span>
|
|
449
|
+
<span class="ruby-keyword kw">end</span>
|
|
450
|
+
<span class="ruby-keyword kw">end</span>
|
|
451
|
+
<span class="ruby-keyword kw">end</span>
|
|
452
|
+
<span class="ruby-keyword kw">end</span>
|
|
453
|
+
|
|
454
|
+
<span class="ruby-keyword kw">case</span> <span class="ruby-identifier">mode</span>
|
|
455
|
+
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:START</span>
|
|
456
|
+
<span class="ruby-identifier">buffer_text</span> = <span class="ruby-identifier">text</span>[<span class="ruby-identifier">offset</span><span class="ruby-operator">...</span><span class="ruby-identifier">index</span>]
|
|
457
|
+
<span class="ruby-identifier">current</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">buffer_text</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">buffer_text</span>.<span class="ruby-identifier">empty?</span>
|
|
458
|
+
<span class="ruby-identifier">new_marker</span> = <span class="ruby-constant">Marker</span>.<span class="ruby-identifier">new</span>( <span class="ruby-identifier">token</span>.<span class="ruby-identifier">key</span>, <span class="ruby-identifier">match</span>, <span class="ruby-identifier">current</span> ) <span class="ruby-comment cmt">#token.new( match, current )</span>
|
|
459
|
+
<span class="ruby-comment cmt">#p "START", match[0], new_marker if $DEBUG</span>
|
|
460
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">tokenize</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
461
|
+
<span class="ruby-identifier">current</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">new_marker</span>
|
|
462
|
+
<span class="ruby-identifier">current</span> = <span class="ruby-identifier">new_marker</span>
|
|
463
|
+
<span class="ruby-keyword kw">else</span>
|
|
464
|
+
<span class="ruby-identifier">current</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">match</span>[<span class="ruby-value">0</span>]
|
|
465
|
+
<span class="ruby-keyword kw">end</span>
|
|
466
|
+
<span class="ruby-identifier">token_stack</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">token</span>
|
|
467
|
+
<span class="ruby-identifier">stack</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">new_marker</span>
|
|
468
|
+
<span class="ruby-identifier">tokenize</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">token</span>.<span class="ruby-identifier">raw?</span> <span class="ruby-comment cmt"># increment tokenizer raw tag count</span>
|
|
469
|
+
<span class="ruby-identifier">offset</span> = <span class="ruby-identifier">match</span>.<span class="ruby-identifier">end</span>(<span class="ruby-value">0</span>) <span class="ruby-comment cmt"># increment the offset</span>
|
|
470
|
+
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:END</span>
|
|
471
|
+
<span class="ruby-identifier">buffer_text</span> = <span class="ruby-identifier">text</span>[<span class="ruby-identifier">offset</span><span class="ruby-operator">...</span><span class="ruby-identifier">index</span>].<span class="ruby-identifier">chomp</span>(<span class="ruby-value str">"\n"</span>)
|
|
472
|
+
<span class="ruby-identifier">current</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">buffer_text</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">buffer_text</span>.<span class="ruby-identifier">empty?</span>
|
|
473
|
+
<span class="ruby-identifier">completed_token</span> = <span class="ruby-identifier">token_stack</span>.<span class="ruby-identifier">pop</span> <span class="ruby-comment cmt"># pop off the token</span>
|
|
474
|
+
<span class="ruby-identifier">completed_marker</span> = <span class="ruby-identifier">stack</span>.<span class="ruby-identifier">pop</span> <span class="ruby-comment cmt"># pop off the marker</span>
|
|
475
|
+
<span class="ruby-comment cmt">#p "END", match[0], completed_marker if $DEBUG</span>
|
|
476
|
+
<span class="ruby-identifier">tokenize</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">token</span>.<span class="ruby-identifier">raw?</span> <span class="ruby-comment cmt"># decrement tokenizer raw tag count</span>
|
|
477
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">tokenize</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
478
|
+
<span class="ruby-identifier">current</span> = <span class="ruby-identifier">completed_marker</span>.<span class="ruby-identifier">parent</span>
|
|
479
|
+
<span class="ruby-keyword kw">else</span>
|
|
480
|
+
<span class="ruby-identifier">current</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">match</span>[<span class="ruby-value">0</span>]
|
|
481
|
+
<span class="ruby-keyword kw">end</span>
|
|
482
|
+
<span class="ruby-identifier">offset</span> = <span class="ruby-identifier">match</span>.<span class="ruby-identifier">end</span>(<span class="ruby-value">0</span>) <span class="ruby-comment cmt"># increment the offset</span>
|
|
483
|
+
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:UNIT</span>
|
|
484
|
+
<span class="ruby-identifier">buffer_text</span> = <span class="ruby-identifier">text</span>[<span class="ruby-identifier">offset</span><span class="ruby-operator">...</span><span class="ruby-identifier">index</span>] <span class="ruby-comment cmt">#.chomp("\n")</span>
|
|
485
|
+
<span class="ruby-identifier">current</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">buffer_text</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">buffer_text</span>.<span class="ruby-identifier">empty?</span>
|
|
486
|
+
<span class="ruby-identifier">current</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">Marker</span>.<span class="ruby-identifier">new</span>( <span class="ruby-identifier">token</span>.<span class="ruby-identifier">key</span>, <span class="ruby-identifier">match</span>, <span class="ruby-identifier">current</span> ) <span class="ruby-comment cmt">#token.new( match, current )</span>
|
|
487
|
+
<span class="ruby-comment cmt">#p "UNIT", match[0], current.last if $DEBUG</span>
|
|
488
|
+
<span class="ruby-identifier">offset</span> = <span class="ruby-identifier">match</span>.<span class="ruby-identifier">end</span>(<span class="ruby-value">0</span>) <span class="ruby-comment cmt"># increment the offset </span>
|
|
489
|
+
<span class="ruby-keyword kw">else</span>
|
|
490
|
+
<span class="ruby-identifier">buffer_text</span> = <span class="ruby-identifier">text</span>[<span class="ruby-identifier">offset</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>].<span class="ruby-identifier">chomp</span>(<span class="ruby-value str">"\n"</span>)
|
|
491
|
+
<span class="ruby-identifier">current</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">buffer_text</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">buffer_text</span>.<span class="ruby-identifier">empty?</span>
|
|
492
|
+
<span class="ruby-identifier">finished</span> = <span class="ruby-keyword kw">true</span> <span class="ruby-comment cmt"># finished</span>
|
|
493
|
+
<span class="ruby-keyword kw">end</span> <span class="ruby-comment cmt">#case</span>
|
|
494
|
+
<span class="ruby-keyword kw">end</span> <span class="ruby-comment cmt">#until</span>
|
|
495
|
+
|
|
496
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">stack</span>
|
|
497
|
+
<span class="ruby-keyword kw">end</span>
|
|
498
|
+
</pre>
|
|
499
|
+
</div>
|
|
500
|
+
</div>
|
|
501
|
+
</div>
|
|
502
|
+
|
|
503
|
+
|
|
504
|
+
</div>
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
</div>
|
|
508
|
+
|
|
509
|
+
|
|
510
|
+
<div id="validator-badges">
|
|
511
|
+
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
|
|
512
|
+
</div>
|
|
513
|
+
|
|
514
|
+
</body>
|
|
515
|
+
</html>
|