@@ -14,15 +14,21 @@ var isNumeric = require('fast-isnumeric');
14
14
var Lib = require ( '../../lib' ) ;
15
15
var BADNUM = require ( '../../constants/numerical' ) . BADNUM ;
16
16
17
+ var isArrayOrTypedArray = Lib . isArrayOrTypedArray ;
18
+ var isDateTime = Lib . isDateTime ;
19
+ var cleanNumber = Lib . cleanNumber ;
20
+ var round = Math . round ;
21
+
17
22
module . exports = function autoType ( array , calendar , opts ) {
18
23
var a = array ;
19
24
20
- if ( Lib . isArrayOrTypedArray ( a ) && ! a . length ) return '-' ;
21
- if ( ! opts . noMultiCategory && multiCategory ( a ) ) return 'multicategory' ;
22
- if ( opts . noMultiCategory && Array . isArray ( a [ 0 ] ) ) {
25
+ var noMultiCategory = opts . noMultiCategory ;
26
+ if ( isArrayOrTypedArray ( a ) && ! a . length ) return '-' ;
27
+ if ( ! noMultiCategory && multiCategory ( a ) ) return 'multicategory' ;
28
+ if ( noMultiCategory && Array . isArray ( a [ 0 ] ) ) { // no need to flat typed arrays here
23
29
var b = [ ] ;
24
30
for ( var i = 0 ; i < a . length ; i ++ ) {
25
- if ( Array . isArray ( a [ i ] ) ) {
31
+ if ( isArrayOrTypedArray ( a [ i ] ) ) {
26
32
for ( var j = 0 ; j < a [ i ] . length ; j ++ ) {
27
33
b . push ( a [ i ] [ j ] ) ;
28
34
}
@@ -71,13 +77,13 @@ function moreDates(a, calendar) {
71
77
var seen = { } ;
72
78
73
79
for ( var f = 0 ; f < len ; f += inc ) {
74
- var i = Math . round ( f ) ;
80
+ var i = round ( f ) ;
75
81
var ai = a [ i ] ;
76
82
var stri = String ( ai ) ;
77
83
if ( seen [ stri ] ) continue ;
78
84
seen [ stri ] = 1 ;
79
85
80
- if ( Lib . isDateTime ( ai , calendar ) ) dats ++ ;
86
+ if ( isDateTime ( ai , calendar ) ) dats ++ ;
81
87
if ( isNumeric ( ai ) ) nums ++ ;
82
88
}
83
89
@@ -100,15 +106,15 @@ function category(a, convertNumeric) {
100
106
var seen = { } ;
101
107
102
108
for ( var f = 0 ; f < len ; f += inc ) {
103
- var i = Math . round ( f ) ;
109
+ var i = round ( f ) ;
104
110
var ai = a [ i ] ;
105
111
var stri = String ( ai ) ;
106
112
if ( seen [ stri ] ) continue ;
107
113
seen [ stri ] = 1 ;
108
114
109
115
var t = typeof ai ;
110
116
if ( t === 'boolean' ) cats ++ ;
111
- else if ( convertNumeric ? Lib . cleanNumber ( ai ) !== BADNUM : t === 'number' ) nums ++ ;
117
+ else if ( convertNumeric ? cleanNumber ( ai ) !== BADNUM : t === 'number' ) nums ++ ;
112
118
else if ( t === 'string' ) cats ++ ;
113
119
}
114
120
@@ -119,5 +125,5 @@ function category(a, convertNumeric) {
119
125
// trace modules that should never auto-type to multicategory
120
126
// should be declared with 'noMultiCategory'
121
127
function multiCategory ( a ) {
122
- return Lib . isArrayOrTypedArray ( a [ 0 ] ) && Lib . isArrayOrTypedArray ( a [ 1 ] ) ;
128
+ return isArrayOrTypedArray ( a [ 0 ] ) && isArrayOrTypedArray ( a [ 1 ] ) ;
123
129
}
0 commit comments