From 4122aab6250e376367aaf84da7ae073b490079c1 Mon Sep 17 00:00:00 2001 From: stdlib-bot <82920195+stdlib-bot@users.noreply.github.com> Date: Fri, 8 Mar 2024 02:15:42 +0000 Subject: [PATCH] Update artifacts --- iter/do-while-each/coverage.ndjson | 1 + iter/do-while-each/index.html | 131 +++++++ iter/do-while-each/index.js.html | 271 ++++++++++++++ iter/do-while-each/main.js.html | 583 +++++++++++++++++++++++++++++ 4 files changed, 986 insertions(+) create mode 100644 iter/do-while-each/coverage.ndjson create mode 100644 iter/do-while-each/index.html create mode 100644 iter/do-while-each/index.js.html create mode 100644 iter/do-while-each/main.js.html diff --git a/iter/do-while-each/coverage.ndjson b/iter/do-while-each/coverage.ndjson new file mode 100644 index 000000000..082ff8f5f --- /dev/null +++ b/iter/do-while-each/coverage.ndjson @@ -0,0 +1 @@ +[225,228,98.6842,21,22,95.4545,4,4,100,225,228,98.6842,"3fabd410f3fdf4e2fc4302cef5db992049949927","2024-03-07 21:13:57 -0500"] diff --git a/iter/do-while-each/index.html b/iter/do-while-each/index.html new file mode 100644 index 000000000..c54d4b0c1 --- /dev/null +++ b/iter/do-while-each/index.html @@ -0,0 +1,131 @@ + + + + +
++ Press n or j to go to the next uncovered block, b, p or k for the previous block. +
+ ++ Press n or j to go to the next uncovered block, b, p or k for the previous block. +
+ +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 | 1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x + | /** +* @license Apache-2.0 +* +* Copyright (c) 2023 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Create an iterator which, while a test condition is true, invokes a function for each iterated value before returning the iterated value. +* +* @module @stdlib/iter/do-while-each +* +* @example +* var array2iterator = require( '@stdlib/array/to-iterator' ); +* var iterDoWhileEach = require( '@stdlib/iter/do-while-each' ); +* +* function predicate( v ) { +* return v < 3; +* } +* +* function assert( v ) { +* if ( v !== v ) { +* throw new Error( 'should not be NaN' ); +* } +* } +* +* var it = iterDoWhileEach( array2iterator( [ 1, 2, 3, 4 ] ), predicate, assert ); +* // returns {} +* +* var r = it.next().value; +* // returns 1 +* +* r = it.next().value; +* // returns 2 +* +* r = it.next().value; +* // returns undefined +* +* // ... +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; + |
+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +
+ +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 | 4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +36x +36x +36x +36x +36x +10x +10x +36x +9x +9x +36x +9x +9x +8x +8x +8x +8x +8x +8x +8x +8x +36x +5x +5x +8x +8x +8x +8x +8x +8x +8x +8x +8x +210x +210x +210x +3x +3x +3x +3x +207x +210x + + + +207x +207x +210x +2x +2x +2x +2x +2x +205x +205x +205x +205x +210x +8x +8x +8x +8x +8x +8x +8x +8x +8x +2x +2x +1x +1x +1x +1x +1x +1x +1x +1x +2x +8x +8x +8x +8x +8x +8x +8x +8x +1x +1x +36x +4x +4x +4x +4x +4x + | /** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var isFunction = require( '@stdlib/assert/is-function' ); +var isIteratorLike = require( '@stdlib/assert/is-iterator-like' ); +var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var format = require( '@stdlib/string/format' ); + + +// MAIN // + +/** +* Returns an iterator which invokes a function for each iterated value before returning the iterated value until either a predicate function returns `false` or the iterator has iterated over all values. +* The condition is evaluated **after** executing the provided function; thus, `fcn` **always** executes at least once. +* +* @param {Iterator} iterator - input iterator +* @param {Function} predicate - function which indicates whether to continue iterating +* @param {Function} fcn - function to invoke +* @param {*} [thisArg] - execution context +* @throws {TypeError} first argument must be an iterator protocol-compliant object +* @throws {TypeError} second argument must be a function +* @throws {TypeError} third argument must be a function +* @returns {Iterator} iterator +* +* @example +* var array2iterator = require( '@stdlib/array/to-iterator' ); +* var iterDoWhileEach = require( '@stdlib/iter/do-while-each' ); +* +* function predicate( v ) { +* return v < 3; +* } +* +* function assert( v ) { +* if ( v !== v ) { +* throw new Error( 'should not be NaN' ); +* } +* } +* +* var it = iterDoWhileEach( array2iterator( [ 1, 2, 3, 4 ] ), predicate, assert ); +* // returns {} +* +* var r = it.next().value; +* // returns 1 +* +* r = it.next().value; +* // returns 2 +* +* r = it.next().value; +* // undefined +* +* // ... +*/ +function iterDoWhileEach( iterator, predicate, fcn, thisArg ) { + var iter; + var FLG; + var i; + if ( !isIteratorLike( iterator ) ) { + throw new TypeError( format( 'invalid argument. First argument must be an iterator protocol-compliant object. Value: `%s`.', iterator ) ); + } + if ( !isFunction( predicate ) ) { + throw new TypeError( format( 'invalid argument. Second argument must be a function. Value: `%s`.', predicate ) ); + } + if ( !isFunction( fcn ) ) { + throw new TypeError( format( 'invalid argument. Third argument must be a function. Value: `%s`.', fcn ) ); + } + i = -1; + + // Create an iterator protocol-compliant object: + iter = {}; + setReadOnly( iter, 'next', next ); + setReadOnly( iter, 'return', end ); + + // If an environment supports `Symbol.iterator`, make the iterator iterable: + if ( iteratorSymbol && isFunction( iterator[ iteratorSymbol ] ) ) { + setReadOnly( iter, iteratorSymbol, factory ); + } + return iter; + + /** + * Returns an iterator protocol-compliant object containing the next iterated value. + * + * @private + * @returns {Object} iterator protocol-compliant object + */ + function next() { + var v; + i += 1; + if ( FLG ) { + return { + 'done': true + }; + } + v = iterator.next(); + if ( v.done ) { + FLG = true; + return v; + } + v = v.value; + fcn.call( thisArg, v, i ); + if ( predicate( v, i ) === false ) { + FLG = true; + return { + 'done': true + }; + } + return { + 'value': v, + 'done': false + }; + } + + /** + * Finishes an iterator. + * + * @private + * @param {*} [value] - value to return + * @returns {Object} iterator protocol-compliant object + */ + function end( value ) { + FLG = true; + if ( arguments.length ) { + return { + 'value': value, + 'done': true + }; + } + return { + 'done': true + }; + } + + /** + * Returns a new iterator. + * + * @private + * @returns {Iterator} iterator + */ + function factory() { + return iterDoWhileEach( iterator[ iteratorSymbol ](), predicate, fcn, thisArg ); // eslint-disable-line max-len + } +} + + +// EXPORTS // + +module.exports = iterDoWhileEach; + |