Skip to content

Commit 7a0ea1d

Browse files
committed
feat: add support for complex and boolean typed arrays
--- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: passed - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: passed - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: na - task: lint_typescript_tests status: na - task: lint_license_headers status: passed --- --- type: pre_push_report description: Results of running various checks prior to pushing changes. report: - task: run_javascript_examples status: na - task: run_c_examples status: na - task: run_cpp_examples status: na - task: run_javascript_readme_examples status: na - task: run_c_benchmarks status: na - task: run_cpp_benchmarks status: na - task: run_fortran_benchmarks status: na - task: run_javascript_benchmarks status: na - task: run_julia_benchmarks status: na - task: run_python_benchmarks status: na - task: run_r_benchmarks status: na - task: run_javascript_tests status: passed ---
1 parent d0e60c2 commit 7a0ea1d

File tree

2 files changed

+49
-15
lines changed
  • lib/node_modules/@stdlib/_tools/doctest/create-annotation-value

2 files changed

+49
-15
lines changed

lib/node_modules/@stdlib/_tools/doctest/create-annotation-value/lib/main.js

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,27 +20,33 @@
2020

2121
// MODULES //
2222

23+
// Note: keep in alphabetical order
24+
var isArray = require( '@stdlib/assert/is-array' );
25+
var isBoolean = require( '@stdlib/assert/is-boolean' );
26+
var isBooleanArray = require( '@stdlib/assert/is-booleanarray' );
2327
var isBoxedPrimitive = require( '@stdlib/assert/is-boxed-primitive' );
24-
var isTypedArray = require( '@stdlib/assert/is-typed-array' );
28+
var isComplexTypedArray = require( '@stdlib/assert/is-complex-typed-array' );
29+
var isError = require( '@stdlib/assert/is-error' );
2530
var isInfinite = require( '@stdlib/assert/is-infinite' );
26-
var isPrimitive = require( '@stdlib/assert/is-primitive' );
27-
var isBoolean = require( '@stdlib/assert/is-boolean' );
2831
var isInteger = require( '@stdlib/assert/is-integer' );
32+
var isnan = require( '@stdlib/assert/is-nan' );
33+
var isNull = require( '@stdlib/assert/is-null' );
2934
var isNumber = require( '@stdlib/assert/is-number' );
30-
var isString = require( '@stdlib/assert/is-string' );
31-
var isArray = require( '@stdlib/assert/is-array' );
32-
var isError = require( '@stdlib/assert/is-error' );
3335
var isObject = require( '@stdlib/assert/is-object' );
36+
var isPrimitive = require( '@stdlib/assert/is-primitive' );
3437
var isRegExp = require( '@stdlib/assert/is-regexp' );
38+
var isString = require( '@stdlib/assert/is-string' );
39+
var isTypedArray = require( '@stdlib/assert/is-typed-array' );
3540
var isUndefined = require( '@stdlib/assert/is-undefined' );
36-
var isNull = require( '@stdlib/assert/is-null' );
37-
var isnan = require( '@stdlib/assert/is-nan' );
41+
3842
var capitalize = require( '@stdlib/string/capitalize' );
3943
var roundn = require( '@stdlib/math/base/special/roundn' );
4044
var floor = require( '@stdlib/math/base/special/floor' );
4145
var constructorName = require( '@stdlib/utils/constructor-name' );
4246
var objectKeys = require( '@stdlib/utils/keys' );
4347
var typeOf = require( '@stdlib/utils/type-of' );
48+
var reinterpretComplex = require( '@stdlib/strided/base/reinterpret-complex' );
49+
var copyArray = require( '@stdlib/array/base/copy' );
4450
var validate = require( './validate.js' );
4551

4652

@@ -131,35 +137,43 @@ function genericAnnotation( actual, opts ) {
131137
var keys;
132138
var out;
133139
var end;
140+
var f;
134141
var i;
135142

136143
if ( isPrimitive( actual ) ) {
137144
return primitiveAnnotation( actual, opts );
138145
}
139-
if ( isTypedArray( actual ) ) {
146+
if ( isTypedArray( actual ) || isComplexTypedArray( actual ) || isBooleanArray( actual ) ) {
140147
out = '<'+actual.constructor.name+'>';
141148
if ( actual.length === 0 ) {
142149
out += '[]';
143150
return out;
144151
}
152+
f = numberAnnotation;
153+
if ( isComplexTypedArray( actual ) ) {
154+
actual = reinterpretComplex( actual, 0 );
155+
} else if ( isBooleanArray( actual ) ) {
156+
actual = copyArray( actual );
157+
f = genericAnnotation;
158+
}
145159
out += '[ ';
146-
out += numberAnnotation( actual[ 0 ], opts );
160+
out += f( actual[ 0 ], opts );
147161
if ( actual.length > opts.numel ) {
148162
end = floor( opts.numel / 2 );
149163
for ( i = 1; i < end; i++ ) {
150164
out += ', ';
151-
out += numberAnnotation( actual[ i ], opts );
165+
out += f( actual[ i ], opts );
152166
}
153167
out += ', ...';
154168
for ( i = actual.length - end; i < actual.length; i++ ) {
155169
out += ', ';
156-
out += numberAnnotation( actual[ i ], opts );
170+
out += f( actual[ i ], opts );
157171
}
158172
}
159173
else {
160174
for ( i = 1; i < actual.length; i++ ) {
161175
out += ', ';
162-
out += numberAnnotation( actual[ i ], opts );
176+
out += f( actual[ i ], opts );
163177
}
164178
}
165179
out += ' ]';

lib/node_modules/@stdlib/_tools/doctest/create-annotation-value/test/test.js

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,14 @@ var Complex64 = require( '@stdlib/complex/float32/ctor' );
3232
var Complex128 = require( '@stdlib/complex/float64/ctor' );
3333
var Complex64Array = require( '@stdlib/array/complex64' );
3434
var Complex128Array = require( '@stdlib/array/complex128' );
35+
var BooleanArray = require( '@stdlib/array/bool' );
3536
var createAnnotationValue = require( './../lib' );
3637

3738

3839
// TESTS //
3940

4041
tape( 'main export is a function', function test( t ) {
42+
t.ok( true, __filename );
4143
t.strictEqual( typeof createAnnotationValue, 'function', 'main export is a function' );
4244
t.end();
4345
});
@@ -203,15 +205,15 @@ tape( 'the function creates a type annotation value for boxed primitives', funct
203205
'type': true
204206
};
205207

206-
val = new Number( 1/3 ); // eslint-disable-line no-new-wrappers
208+
val = new Number( 1/3 );
207209
expected = '<Number>';
208210
t.strictEqual( createAnnotationValue( val, opts ), expected, 'returns expected value' );
209211

210212
val = Object( Symbol( '' ) );
211213
expected = '<Symbol>';
212214
t.strictEqual( createAnnotationValue( val, opts ), expected, 'returns expected value' );
213215

214-
val = new Boolean( false ); // eslint-disable-line no-new-wrappers
216+
val = new Boolean( false );
215217
expected = '<Boolean>';
216218
t.strictEqual( createAnnotationValue( val, opts ), expected, 'returns expected value' );
217219

@@ -307,6 +309,20 @@ tape( 'the function creates a deep instance equality annotation value for typed
307309
expected = '<Float32Array>[ ~0.333, 0.5, 1 ]';
308310
t.strictEqual( createAnnotationValue( val, opts ), expected, 'returns expected value' );
309311

312+
val = new Complex64Array( [ 1, 2, 3, 4, 5, 6, 7, 8 ] );
313+
opts = {
314+
'numel': 6
315+
};
316+
expected = '<Complex64Array>[ 1, 2, 3, ..., 6, 7, 8 ]';
317+
t.strictEqual( createAnnotationValue( val, opts ), expected, 'returns expected value' );
318+
319+
val = new BooleanArray( [ true, false, true, false ] );
320+
opts = {
321+
'numel': 6
322+
};
323+
expected = '<BooleanArray>[ true, false, true, false ]';
324+
t.strictEqual( createAnnotationValue( val, opts ), expected, 'returns expected value' );
325+
310326
t.end();
311327
});
312328

@@ -384,6 +400,10 @@ tape( 'the function creates a type annotation for class instances', function tes
384400
expected = '<Complex128>';
385401
t.strictEqual( createAnnotationValue( actual, opts ), expected, 'returns expected value' );
386402

403+
actual = new BooleanArray( [ true, false, true, false ] );
404+
expected = '<BooleanArray>';
405+
t.strictEqual( createAnnotationValue( actual, opts ), expected, 'returns expected value' );
406+
387407
actual = noop;
388408
expected = '<Function>';
389409
t.strictEqual( createAnnotationValue( actual, opts ), expected, 'returns expected value' );

0 commit comments

Comments
 (0)