@@ -171,35 +171,120 @@ class Utils {
171171 }
172172 }
173173
174+ __checker ( arr_val ) {
175+ let dtypes = [ ] ;
176+ let lim ;
177+ let int_tracker = [ ] ;
178+ let float_tracker = [ ] ;
179+ let string_tracker = [ ] ;
180+ let bool_tracker = [ ] ;
181+
182+ if ( arr_val . length == 0 ) {
183+ dtypes . push ( "string" ) ;
184+ }
185+
186+ if ( arr_val . length < config . get_dtype_test_lim ) {
187+ lim = arr_val . length - 1 ;
188+ } else {
189+ lim = config . get_dtype_test_lim - 1 ;
190+ }
191+
192+ arr_val . forEach ( ( ele , indx ) => {
193+ let count = indx ;
194+
195+ if ( typeof ele == "boolean" ) {
196+ float_tracker . push ( false ) ;
197+ int_tracker . push ( false ) ;
198+ string_tracker . push ( false ) ;
199+ bool_tracker . push ( true ) ;
200+ } else if ( isNaN ( ele ) && typeof ele != "string" ) {
201+ float_tracker . push ( true ) ;
202+ int_tracker . push ( false ) ;
203+ string_tracker . push ( false ) ;
204+ bool_tracker . push ( false ) ;
205+ } else if ( ! isNaN ( Number ( ele ) ) ) {
206+ if ( ele . toString ( ) . includes ( "." ) ) {
207+ float_tracker . push ( true ) ;
208+ int_tracker . push ( false ) ;
209+ string_tracker . push ( false ) ;
210+ bool_tracker . push ( false ) ;
211+ } else {
212+ float_tracker . push ( false ) ;
213+ int_tracker . push ( true ) ;
214+ string_tracker . push ( false ) ;
215+ bool_tracker . push ( false ) ;
216+ }
217+ } else {
218+ float_tracker . push ( false ) ;
219+ int_tracker . push ( false ) ;
220+ string_tracker . push ( true ) ;
221+ bool_tracker . push ( false ) ;
222+ }
223+
224+ if ( count == lim ) {
225+ const even = element => element == true ;
226+
227+ if ( string_tracker . some ( even ) ) {
228+ dtypes = "string" ;
229+ } else if ( float_tracker . some ( even ) ) {
230+ dtypes = "float32" ;
231+ } else if ( int_tracker . some ( even ) ) {
232+ dtypes = "int32" ;
233+ } else if ( bool_tracker . some ( even ) ) {
234+ dtypes = "boolean" ;
235+ } else {
236+ dtypes = "undefined" ;
237+ }
238+ }
239+ } ) ;
240+ return dtypes ;
241+ }
242+
174243 __get_t ( arr_val ) {
244+ const self = this ;
245+
175246 if ( this . __is_1D_array ( arr_val ) ) {
176- const dtypes = [ ] ;
247+ return [ this . __checker ( arr_val ) ] ;
248+ } else {
249+ const dtypes = arr_val . map ( arr => {
250+ return self . __checker ( arr ) ;
251+ } ) ;
252+ return dtypes ;
253+ }
254+ }
255+
256+ __get_tt ( arr_val ) {
257+ if ( this . __is_1D_array ( arr_val ) ) {
258+ let dtypes = [ ] ;
177259 let int_tracker = [ ] ;
178260 let float_tracker = [ ] ;
179261 let string_tracker = [ ] ;
180262 let bool_tracker = [ ] ;
181263 let lim ;
182- let arr = [ ] ;
183- arr_val . map ( val => {
184- if ( ! ( isNaN ( val ) && typeof val != "string" ) ) {
185- arr . push ( val ) ;
186- }
187- } ) ;
188264
189- if ( arr . length < config . get_dtype_test_lim ) {
190- lim = arr . length - 1 ;
265+ if ( arr_val . length == 0 ) {
266+ dtypes . push ( "string" ) ;
267+ }
268+
269+ if ( arr_val . length < config . get_dtype_test_lim ) {
270+ lim = arr_val . length - 1 ;
191271 } else {
192272 lim = config . get_dtype_test_lim - 1 ;
193273 }
194274
195- arr . forEach ( ( ele , indx ) => {
275+ arr_val . forEach ( ( ele , indx ) => {
196276 let count = indx ;
197277
198278 if ( typeof ele == "boolean" ) {
199279 float_tracker . push ( false ) ;
200280 int_tracker . push ( false ) ;
201281 string_tracker . push ( false ) ;
202282 bool_tracker . push ( true ) ;
283+ } else if ( isNaN ( ele ) && typeof ele != "string" ) {
284+ float_tracker . push ( true ) ;
285+ int_tracker . push ( false ) ;
286+ string_tracker . push ( false ) ;
287+ bool_tracker . push ( false ) ;
203288 } else if ( ! isNaN ( Number ( ele ) ) ) {
204289 if ( ele . toString ( ) . includes ( "." ) ) {
205290 float_tracker . push ( true ) ;
@@ -237,28 +322,24 @@ class Utils {
237322 } ) ;
238323 return dtypes ;
239324 } else {
240- const dtypes = [ ] ;
325+ let dtypes = [ ] ;
241326 let lim ;
242-
243- if ( arr_val [ 0 ] . length < config . get_dtype_test_lim ) {
244- lim = arr_val [ 0 ] . length - 1 ;
245- } else {
246- lim = config . get_dtype_test_lim - 1 ;
247- }
248-
249- arr_val . forEach ( ele => {
327+ arr_val . forEach ( arr => {
250328 let int_tracker = [ ] ;
251329 let float_tracker = [ ] ;
252330 let string_tracker = [ ] ;
253331 let bool_tracker = [ ] ;
254- let arr = [ ] ;
255- ele . map ( val => {
256- if ( ! ( isNaN ( val ) && typeof val != "string" ) ) {
257- arr . push ( val ) ;
258- } else {
259- arr . push ( "NaN" ) ;
260- }
261- } ) ;
332+
333+ if ( arr . length == 0 ) {
334+ dtypes . push ( "string" ) ;
335+ }
336+
337+ if ( arr . length < config . get_dtype_test_lim ) {
338+ lim = arr . length - 1 ;
339+ } else {
340+ lim = config . get_dtype_test_lim - 1 ;
341+ }
342+
262343 arr . forEach ( ( ele , indx ) => {
263344 let count = indx ;
264345
@@ -279,6 +360,11 @@ class Utils {
279360 string_tracker . push ( false ) ;
280361 bool_tracker . push ( false ) ;
281362 }
363+ } else if ( isNaN ( ele ) && typeof ele != "string" ) {
364+ float_tracker . push ( true ) ;
365+ int_tracker . push ( false ) ;
366+ string_tracker . push ( false ) ;
367+ bool_tracker . push ( false ) ;
282368 } else {
283369 float_tracker . push ( false ) ;
284370 int_tracker . push ( false ) ;
0 commit comments