Gabriel Rohden

fix(getUtils): replace unsupported switch types and refactor code style

1 import '../../../get.dart'; 1 import '../../../get.dart';
2 2
  3 +/// Returns whether a dynamic value PROBABLY
  4 +/// has the isEmpty getter/method by checking
  5 +/// standard dart types that contains it.
  6 +///
  7 +/// This is here to for the 'DRY'
  8 +bool _hasIsEmpty(dynamic value) {
  9 + return value is Iterable || value is String || value is Map;
  10 +}
  11 +
  12 +/// Returns whether a dynamic value PROBABLY
  13 +/// has the length getter/method by checking
  14 +/// standard dart types that contains it.
  15 +///
  16 +/// This is here to for the 'DRY'
  17 +bool _hasLength(dynamic value) {
  18 + return value is Iterable || value is String || value is Map;
  19 +}
  20 +
  21 +/// Obtains a length of a dynamic value
  22 +/// by previously validating it's type
  23 +///
  24 +/// Note: if [value] is double/int
  25 +/// it will be taking the .toString
  26 +/// length of the given value.
  27 +///
  28 +/// Note 2: **this may return null!**
  29 +///
  30 +/// Note 3: null [value] returns null.
  31 +int _obtainDynamicLength(dynamic value) {
  32 + if (value == null) {
  33 + // ignore: avoid_returning_null
  34 + return null;
  35 + }
  36 +
  37 + if (_hasLength(value)) {
  38 + return value.length as int;
  39 + }
  40 +
  41 + if (value is int) {
  42 + return value.toString().length;
  43 + }
  44 +
  45 + if (value is double) {
  46 + return value.toString().replaceAll('.', '').length;
  47 + }
  48 +
  49 + // ignore: avoid_returning_null
  50 + return null;
  51 +}
  52 +
3 class GetUtils { 53 class GetUtils {
  54 + GetUtils._();
  55 +
4 /// Checks if data is null. 56 /// Checks if data is null.
5 - static bool isNull(dynamic s) => s == null; 57 + static bool isNull(dynamic value) => value == null;
6 58
7 /// In dart2js (in flutter v1.17) a var by default is undefined. 59 /// In dart2js (in flutter v1.17) a var by default is undefined.
8 /// *Use this only if you are in version <- 1.17*. 60 /// *Use this only if you are in version <- 1.17*.
@@ -13,20 +65,28 @@ class GetUtils { @@ -13,20 +65,28 @@ class GetUtils {
13 static dynamic nil(dynamic s) => s == null ? null : s; 65 static dynamic nil(dynamic s) => s == null ? null : s;
14 66
15 /// Checks if data is null or blank (empty or only contains whitespace). 67 /// Checks if data is null or blank (empty or only contains whitespace).
16 - static bool isNullOrBlank(dynamic s) {  
17 - if (isNull(s)) return true; 68 + static bool isNullOrBlank(dynamic value) {
  69 + if (isNull(value)) {
  70 + return true;
  71 + }
18 72
19 - if (s is String || s is List || s is Map || s is Set || s is Iterable) {  
20 - return s.isEmpty as bool;  
21 - } else {  
22 - return s.toString() == 'null' || s.toString().trim().isEmpty; 73 + /// FIXME: null checking here is.. pointless (? see isNull above)
  74 + if(value is String) {
  75 + return value.toString() == 'null' || value.toString().trim().isEmpty;
23 } 76 }
  77 +
  78 + // Pretty sure that isNullOrBlank should't be validating
  79 + // iterables... but I'm going to keep this for compatibility.
  80 + return _hasIsEmpty(value) ? value.isEmpty as bool : true;
24 } 81 }
25 82
26 /// Checks if string is int or double. 83 /// Checks if string is int or double.
27 - static bool isNum(String s) {  
28 - if (isNull(s)) return false;  
29 - return num.tryParse(s) is num ?? false; 84 + static bool isNum(String value) {
  85 + if (isNull(value)) {
  86 + return false;
  87 + }
  88 +
  89 + return num.tryParse(value) is num;
30 } 90 }
31 91
32 /// Checks if string consist only numeric. 92 /// Checks if string consist only numeric.
@@ -37,9 +97,12 @@ class GetUtils { @@ -37,9 +97,12 @@ class GetUtils {
37 static bool isAlphabetOnly(String s) => hasMatch(s, r'^[a-zA-Z]+$'); 97 static bool isAlphabetOnly(String s) => hasMatch(s, r'^[a-zA-Z]+$');
38 98
39 /// Checks if string is boolean. 99 /// Checks if string is boolean.
40 - static bool isBool(String s) {  
41 - if (isNull(s)) return false;  
42 - return (s == 'true' || s == 'false'); 100 + static bool isBool(String value) {
  101 + if (isNull(value)) {
  102 + return false;
  103 + }
  104 +
  105 + return (value == 'true' || value == 'false');
43 } 106 }
44 107
45 /// Checks if string is an video file. 108 /// Checks if string is an video file.
@@ -80,18 +143,21 @@ class GetUtils { @@ -80,18 +143,21 @@ class GetUtils {
80 /// Checks if string is an powerpoint file. 143 /// Checks if string is an powerpoint file.
81 static bool isPPT(String filePath) { 144 static bool isPPT(String filePath) {
82 final ext = filePath.toLowerCase(); 145 final ext = filePath.toLowerCase();
  146 +
83 return ext.endsWith(".ppt") || ext.endsWith(".pptx"); 147 return ext.endsWith(".ppt") || ext.endsWith(".pptx");
84 } 148 }
85 149
86 /// Checks if string is an word file. 150 /// Checks if string is an word file.
87 static bool isWord(String filePath) { 151 static bool isWord(String filePath) {
88 final ext = filePath.toLowerCase(); 152 final ext = filePath.toLowerCase();
  153 +
89 return ext.endsWith(".doc") || ext.endsWith(".docx"); 154 return ext.endsWith(".doc") || ext.endsWith(".docx");
90 } 155 }
91 156
92 /// Checks if string is an excel file. 157 /// Checks if string is an excel file.
93 static bool isExcel(String filePath) { 158 static bool isExcel(String filePath) {
94 final ext = filePath.toLowerCase(); 159 final ext = filePath.toLowerCase();
  160 +
95 return ext.endsWith(".xls") || ext.endsWith(".xlsx"); 161 return ext.endsWith(".xls") || ext.endsWith(".xlsx");
96 } 162 }
97 163
@@ -177,42 +243,50 @@ class GetUtils { @@ -177,42 +243,50 @@ class GetUtils {
177 hasMatch(s, r'^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$'); 243 hasMatch(s, r'^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$');
178 244
179 /// Checks if string is Palindrom. 245 /// Checks if string is Palindrom.
180 - static bool isPalindrom(String s) {  
181 - final cleanString = s 246 + static bool isPalindrom(String string) {
  247 + final cleanString = string
182 .toLowerCase() 248 .toLowerCase()
183 .replaceAll(RegExp(r"\s+"), '') 249 .replaceAll(RegExp(r"\s+"), '')
184 .replaceAll(RegExp(r"[^0-9a-zA-Z]+"), ""); 250 .replaceAll(RegExp(r"[^0-9a-zA-Z]+"), "");
185 - var isPalindrom = true; 251 +
186 for (var i = 0; i < cleanString.length; i++) { 252 for (var i = 0; i < cleanString.length; i++) {
187 if (cleanString[i] != cleanString[cleanString.length - i - 1]) { 253 if (cleanString[i] != cleanString[cleanString.length - i - 1]) {
188 - isPalindrom = false; 254 + return false;
189 } 255 }
190 } 256 }
191 - return isPalindrom; 257 +
  258 + return true;
192 } 259 }
193 260
194 /// Checks if all data have same value. 261 /// Checks if all data have same value.
195 /// Example: 111111 -> true, wwwww -> true, [1,1,1,1] -> true 262 /// Example: 111111 -> true, wwwww -> true, [1,1,1,1] -> true
196 - static bool isOneAKind(dynamic s) {  
197 - if ((s is String || s is List) && !isNullOrBlank(s)) {  
198 - var first = s[0];  
199 - var isOneAKind = true;  
200 - var len = s.length as num; 263 + static bool isOneAKind(dynamic value) {
  264 + if ((value is String || value is List) && !isNullOrBlank(value)) {
  265 + final first = value[0];
  266 + final len = value.length as num;
  267 +
201 for (var i = 0; i < len; i++) { 268 for (var i = 0; i < len; i++) {
202 - if (s[i] != first) isOneAKind = false; 269 + if (value[i] != first) {
  270 + return false;
  271 + }
203 } 272 }
204 - return isOneAKind; 273 +
  274 + return true;
205 } 275 }
206 276
207 - if (s is int) {  
208 - var value = s.toString();  
209 - var first = value[0];  
210 - var isOneAKind = true;  
211 - for (var i = 0; i < value.length; i++) {  
212 - if (value[i] != first) isOneAKind = false; 277 + if (value is int) {
  278 + final stringValue = value.toString();
  279 + final first = stringValue[0];
  280 +
  281 + for (var i = 0; i < stringValue.length; i++) {
  282 + if (stringValue[i] != first) {
  283 + return false;
  284 + }
213 } 285 }
214 - return isOneAKind; 286 +
  287 + return true;
215 } 288 }
  289 +
216 return false; 290 return false;
217 } 291 }
218 292
@@ -224,124 +298,96 @@ class GetUtils { @@ -224,124 +298,96 @@ class GetUtils {
224 static bool isCurrency(String s) => hasMatch(s, 298 static bool isCurrency(String s) => hasMatch(s,
225 r'^(S?\$|\₩|Rp|\¥|\€|\₹|\₽|fr|R\$|R)?[ ]?[-]?([0-9]{1,3}[,.]([0-9]{3}[,.])*[0-9]{3}|[0-9]+)([,.][0-9]{1,2})?( ?(USD?|AUD|NZD|CAD|CHF|GBP|CNY|EUR|JPY|IDR|MXN|NOK|KRW|TRY|INR|RUB|BRL|ZAR|SGD|MYR))?$'); 299 r'^(S?\$|\₩|Rp|\¥|\€|\₹|\₽|fr|R\$|R)?[ ]?[-]?([0-9]{1,3}[,.]([0-9]{3}[,.])*[0-9]{3}|[0-9]+)([,.][0-9]{1,2})?( ?(USD?|AUD|NZD|CAD|CHF|GBP|CNY|EUR|JPY|IDR|MXN|NOK|KRW|TRY|INR|RUB|BRL|ZAR|SGD|MYR))?$');
226 300
227 - /// Checks if length of data is LOWER than maxLength.  
228 - static bool isLengthLowerThan(dynamic s, int maxLength) {  
229 - if (isNull(s)) return (maxLength <= 0) ? true : false;  
230 - switch (s.runtimeType as Type) {  
231 - case String:  
232 - case List:  
233 - case Map:  
234 - case Set:  
235 - case Iterable:  
236 - return (s.length as num) < maxLength;  
237 - case int:  
238 - return s.toString().length < maxLength;  
239 - case double:  
240 - return s.toString().replaceAll('.', '').length < maxLength;  
241 - default:  
242 - return false; 301 + /// Checks if length of data is GREATER than maxLength.
  302 + static bool isLengthGreaterThan(dynamic value, int maxLength) {
  303 + final length = _obtainDynamicLength(value);
  304 +
  305 + if (length == null) {
  306 + return false;
243 } 307 }
  308 +
  309 + return length > maxLength;
244 } 310 }
245 311
246 - /// Checks if length of data is GREATER than maxLength.  
247 - static bool isLengthGreaterThan(dynamic s, int maxLength) {  
248 - if (isNull(s)) return false;  
249 - switch (s.runtimeType as Type) {  
250 - case String:  
251 - case List:  
252 - case Map:  
253 - case Set:  
254 - case Iterable:  
255 - return (s.length as num) > maxLength;  
256 - case int:  
257 - return s.toString().length > maxLength;  
258 - case double:  
259 - return s.toString().replaceAll('.', '').length > maxLength;  
260 - default:  
261 - return false; 312 + /// Checks if length of data is GREATER OR EQUAL to maxLength.
  313 + static bool isLengthGreaterOrEqual(dynamic value, int maxLength) {
  314 + final length = _obtainDynamicLength(value);
  315 +
  316 + if (length == null) {
  317 + return false;
262 } 318 }
  319 +
  320 + return length >= maxLength;
263 } 321 }
264 322
265 - /// Checks if length of data is GREATER OR EQUAL to maxLength.  
266 - static bool isLengthGreaterOrEqual(dynamic s, int maxLength) {  
267 - if (isNull(s)) return false;  
268 - switch (s.runtimeType as Type) {  
269 - case String:  
270 - case List:  
271 - case Map:  
272 - case Set:  
273 - case Iterable:  
274 - return (s.length as num) >= maxLength;  
275 - break;  
276 - case int:  
277 - return s.toString().length >= maxLength;  
278 - break;  
279 - case double:  
280 - return s.toString().replaceAll('.', '').length >= maxLength;  
281 - break;  
282 - default:  
283 - return false; 323 + /// Checks if length of data is LOWER than maxLength.
  324 + ///
  325 + /// This method is deprecated, use [isLengthLessThan] instead
  326 + @deprecated
  327 + static bool isLengthLowerThan(dynamic value, int maxLength) =>
  328 + isLengthLessThan(value, maxLength);
  329 +
  330 + /// Checks if length of data is LESS than maxLength.
  331 + static bool isLengthLessThan(dynamic value, int maxLength) {
  332 + final length = _obtainDynamicLength(value);
  333 + if (length == null) {
  334 + return false;
284 } 335 }
  336 +
  337 + return length < maxLength;
285 } 338 }
286 339
287 /// Checks if length of data is LOWER OR EQUAL to maxLength. 340 /// Checks if length of data is LOWER OR EQUAL to maxLength.
288 - static bool isLengthLowerOrEqual(dynamic s, int maxLength) {  
289 - if (isNull(s)) return false;  
290 - switch (s.runtimeType as Type) {  
291 - case String:  
292 - case List:  
293 - case Map:  
294 - case Set:  
295 - case Iterable:  
296 - return (s.length as num) <= maxLength;  
297 - case int:  
298 - return s.toString().length <= maxLength;  
299 - case double:  
300 - return s.toString().replaceAll('.', '').length <= maxLength;  
301 - default:  
302 - return false; 341 + ///
  342 + /// This method is deprecated, use [isLengthLessOrEqual] instead
  343 + @deprecated
  344 + static bool isLengthLowerOrEqual(dynamic value, int maxLength) =>
  345 + isLengthLessOrEqual(value, maxLength);
  346 +
  347 + /// Checks if length of data is LESS OR EQUAL to maxLength.
  348 + static bool isLengthLessOrEqual(dynamic value, int maxLength) {
  349 + final length = _obtainDynamicLength(value);
  350 +
  351 + if (length == null) {
  352 + return false;
303 } 353 }
  354 +
  355 + return length <= maxLength;
304 } 356 }
305 357
306 /// Checks if length of data is EQUAL to maxLength. 358 /// Checks if length of data is EQUAL to maxLength.
307 - static bool isLengthEqualTo(dynamic s, int maxLength) {  
308 - if (isNull(s)) return false;  
309 - switch (s.runtimeType as Type) {  
310 - case String:  
311 - case List:  
312 - case Map:  
313 - case Set:  
314 - case Iterable:  
315 - return s.length == maxLength;  
316 - break;  
317 - case int:  
318 - return s.toString().length == maxLength;  
319 - break;  
320 - case double:  
321 - return s.toString().replaceAll('.', '').length == maxLength;  
322 - break;  
323 - default:  
324 - return false; 359 + static bool isLengthEqualTo(dynamic value, int otherLength) {
  360 + final length = _obtainDynamicLength(value);
  361 +
  362 + if (length == null) {
  363 + return false;
325 } 364 }
  365 +
  366 + return length == otherLength;
326 } 367 }
327 368
328 /// Checks if length of data is BETWEEN minLength to maxLength. 369 /// Checks if length of data is BETWEEN minLength to maxLength.
329 - static bool isLengthBetween(dynamic s, int minLength, int maxLength) {  
330 - if (isNull(s)) return false;  
331 - return isLengthGreaterOrEqual(s, minLength) &&  
332 - isLengthLowerOrEqual(s, maxLength); 370 + static bool isLengthBetween(dynamic value, int minLength, int maxLength) {
  371 + if (isNull(value)) {
  372 + return false;
  373 + }
  374 +
  375 + return isLengthGreaterOrEqual(value, minLength) &&
  376 + isLengthLowerOrEqual(value, maxLength);
333 } 377 }
334 378
335 /// Checks if a contains b (Treating or interpreting upper- and lowercase 379 /// Checks if a contains b (Treating or interpreting upper- and lowercase
336 /// letters as being the same). 380 /// letters as being the same).
337 - static bool isCaseInsensitiveContains(String a, String b) =>  
338 - a.toLowerCase().contains(b.toLowerCase()); 381 + static bool isCaseInsensitiveContains(String a, String b) {
  382 + return a.toLowerCase().contains(b.toLowerCase());
  383 + }
339 384
340 /// Checks if a contains b or b contains a (Treating or 385 /// Checks if a contains b or b contains a (Treating or
341 /// interpreting upper- and lowercase letters as being the same). 386 /// interpreting upper- and lowercase letters as being the same).
342 static bool isCaseInsensitiveContainsAny(String a, String b) { 387 static bool isCaseInsensitiveContainsAny(String a, String b) {
343 final lowA = a.toLowerCase(); 388 final lowA = a.toLowerCase();
344 final lowB = b.toLowerCase(); 389 final lowB = b.toLowerCase();
  390 +
345 return lowA.contains(lowB) || lowB.contains(lowA); 391 return lowA.contains(lowB) || lowB.contains(lowA);
346 } 392 }
347 393
@@ -356,19 +402,25 @@ class GetUtils { @@ -356,19 +402,25 @@ class GetUtils {
356 402
357 //Check if num is a cnpj 403 //Check if num is a cnpj
358 static bool isCnpj(String cnpj) { 404 static bool isCnpj(String cnpj) {
359 - if (cnpj == null) return false; 405 + if (cnpj == null) {
  406 + return false;
  407 + }
360 408
361 // Obter somente os números do CNPJ 409 // Obter somente os números do CNPJ
362 - var numbers = cnpj.replaceAll(RegExp(r'[^0-9]'), ''); 410 + final numbers = cnpj.replaceAll(RegExp(r'[^0-9]'), '');
363 411
364 // Testar se o CNPJ possui 14 dígitos 412 // Testar se o CNPJ possui 14 dígitos
365 - if (numbers.length != 14) return false; 413 + if (numbers.length != 14) {
  414 + return false;
  415 + }
366 416
367 // Testar se todos os dígitos do CNPJ são iguais 417 // Testar se todos os dígitos do CNPJ são iguais
368 - if (RegExp(r'^(\d)\1*$').hasMatch(numbers)) return false; 418 + if (RegExp(r'^(\d)\1*$').hasMatch(numbers)) {
  419 + return false;
  420 + }
369 421
370 // Dividir dígitos 422 // Dividir dígitos
371 - var digits = numbers.split('').map(int.parse).toList(); 423 + final digits = numbers.split('').map(int.parse).toList();
372 424
373 // Calcular o primeiro dígito verificador 425 // Calcular o primeiro dígito verificador
374 var calcDv1 = 0; 426 var calcDv1 = 0;
@@ -377,10 +429,12 @@ class GetUtils { @@ -377,10 +429,12 @@ class GetUtils {
377 calcDv1 += digits[j++] * i; 429 calcDv1 += digits[j++] * i;
378 } 430 }
379 calcDv1 %= 11; 431 calcDv1 %= 11;
380 - var dv1 = calcDv1 < 2 ? 0 : 11 - calcDv1; 432 + final dv1 = calcDv1 < 2 ? 0 : 11 - calcDv1;
381 433
382 // Testar o primeiro dígito verificado 434 // Testar o primeiro dígito verificado
383 - if (digits[12] != dv1) return false; 435 + if (digits[12] != dv1) {
  436 + return false;
  437 + }
384 438
385 // Calcular o segundo dígito verificador 439 // Calcular o segundo dígito verificador
386 var calcDv2 = 0; 440 var calcDv2 = 0;
@@ -389,27 +443,35 @@ class GetUtils { @@ -389,27 +443,35 @@ class GetUtils {
389 calcDv2 += digits[j++] * i; 443 calcDv2 += digits[j++] * i;
390 } 444 }
391 calcDv2 %= 11; 445 calcDv2 %= 11;
392 - var dv2 = calcDv2 < 2 ? 0 : 11 - calcDv2; 446 + final dv2 = calcDv2 < 2 ? 0 : 11 - calcDv2;
393 447
394 // Testar o segundo dígito verificador 448 // Testar o segundo dígito verificador
395 - if (digits[13] != dv2) return false; 449 + if (digits[13] != dv2) {
  450 + return false;
  451 + }
396 452
397 return true; 453 return true;
398 } 454 }
399 455
400 /// Checks if the cpf is valid. 456 /// Checks if the cpf is valid.
401 static bool isCpf(String cpf) { 457 static bool isCpf(String cpf) {
402 - if (cpf == null) return false; 458 + if (cpf == null) {
  459 + return false;
  460 + }
403 461
404 // get only the numbers 462 // get only the numbers
405 - var numbers = cpf.replaceAll(RegExp(r'[^0-9]'), ''); 463 + final numbers = cpf.replaceAll(RegExp(r'[^0-9]'), '');
406 // Test if the CPF has 11 digits 464 // Test if the CPF has 11 digits
407 - if (numbers.length != 11) return false; 465 + if (numbers.length != 11) {
  466 + return false;
  467 + }
408 // Test if all CPF digits are the same 468 // Test if all CPF digits are the same
409 - if (RegExp(r'^(\d)\1*$').hasMatch(numbers)) return false; 469 + if (RegExp(r'^(\d)\1*$').hasMatch(numbers)) {
  470 + return false;
  471 + }
410 472
411 // split the digits 473 // split the digits
412 - var digits = numbers.split('').map(int.parse).toList(); 474 + final digits = numbers.split('').map(int.parse).toList();
413 475
414 // Calculate the first verifier digit 476 // Calculate the first verifier digit
415 var calcDv1 = 0; 477 var calcDv1 = 0;
@@ -417,10 +479,13 @@ class GetUtils { @@ -417,10 +479,13 @@ class GetUtils {
417 calcDv1 += digits[10 - i] * i; 479 calcDv1 += digits[10 - i] * i;
418 } 480 }
419 calcDv1 %= 11; 481 calcDv1 %= 11;
420 - var dv1 = calcDv1 < 2 ? 0 : 11 - calcDv1; 482 +
  483 + final dv1 = calcDv1 < 2 ? 0 : 11 - calcDv1;
421 484
422 // Tests the first verifier digit 485 // Tests the first verifier digit
423 - if (digits[9] != dv1) return false; 486 + if (digits[9] != dv1) {
  487 + return false;
  488 + }
424 489
425 // Calculate the second verifier digit 490 // Calculate the second verifier digit
426 var calcDv2 = 0; 491 var calcDv2 = 0;
@@ -429,48 +494,64 @@ class GetUtils { @@ -429,48 +494,64 @@ class GetUtils {
429 } 494 }
430 calcDv2 %= 11; 495 calcDv2 %= 11;
431 496
432 - var dv2 = calcDv2 < 2 ? 0 : 11 - calcDv2; 497 + final dv2 = calcDv2 < 2 ? 0 : 11 - calcDv2;
433 498
434 // Test the second verifier digit 499 // Test the second verifier digit
435 - if (digits[10] != dv2) return false; 500 + if (digits[10] != dv2) {
  501 + return false;
  502 + }
436 503
437 return true; 504 return true;
438 } 505 }
439 506
440 /// Capitalize each word inside string 507 /// Capitalize each word inside string
441 /// Example: your name => Your Name, your name => Your name 508 /// Example: your name => Your Name, your name => Your name
442 - static String capitalize(String s) {  
443 - if (isNullOrBlank(s)) return null; 509 + static String capitalize(String value) {
  510 + if (isNullOrBlank(value)) {
  511 + return null;
  512 + }
444 513
445 - var separatedWords = s.split(' '); 514 + final separatedWords = value.split(' ');
446 var result = ''; 515 var result = '';
  516 +
447 for (var word in separatedWords) { 517 for (var word in separatedWords) {
448 result += capitalizeFirst(word); 518 result += capitalizeFirst(word);
449 result += ' '; 519 result += ' ';
450 } 520 }
  521 +
451 return result.trim(); 522 return result.trim();
452 } 523 }
453 524
454 /// Uppercase first letter inside string and let the others lowercase 525 /// Uppercase first letter inside string and let the others lowercase
455 /// Example: your name => Your name 526 /// Example: your name => Your name
456 static String capitalizeFirst(String s) { 527 static String capitalizeFirst(String s) {
457 - if (isNullOrBlank(s)) return null; 528 + if (isNullOrBlank(s)) {
  529 + return null;
  530 + }
  531 +
458 return s[0].toUpperCase() + s.substring(1).toLowerCase(); 532 return s[0].toUpperCase() + s.substring(1).toLowerCase();
459 } 533 }
460 534
461 /// Remove all whitespace inside string 535 /// Remove all whitespace inside string
462 /// Example: your name => yourname 536 /// Example: your name => yourname
463 - static String removeAllWhitespace(String s) {  
464 - if (isNullOrBlank(s)) return null;  
465 - return s.replaceAll(' ', ''); 537 + static String removeAllWhitespace(String value) {
  538 + if (isNullOrBlank(value)) {
  539 + return null;
  540 + }
  541 +
  542 + return value.replaceAll(' ', '');
466 } 543 }
467 544
468 /// Camelcase string 545 /// Camelcase string
469 /// Example: your name => yourName 546 /// Example: your name => yourName
470 - static String camelCase(String s) {  
471 - if (isNullOrBlank(s)) return null;  
472 - var separatedWords = s.split(' '); 547 + static String camelCase(String value) {
  548 + if (isNullOrBlank(value)) {
  549 + return null;
  550 + }
  551 +
  552 + final separatedWords = value.split(' ');
473 var newString = ''; 553 var newString = '';
  554 +
474 for (final word in separatedWords) { 555 for (final word in separatedWords) {
475 newString += word[0].toUpperCase() + word.substring(1).toLowerCase(); 556 newString += word[0].toUpperCase() + word.substring(1).toLowerCase();
476 } 557 }
@@ -484,10 +565,16 @@ class GetUtils { @@ -484,10 +565,16 @@ class GetUtils {
484 /// (first found numeric word) 565 /// (first found numeric word)
485 static String numericOnly(String s, {bool firstWordOnly = false}) { 566 static String numericOnly(String s, {bool firstWordOnly = false}) {
486 var numericOnlyStr = ''; 567 var numericOnlyStr = '';
  568 +
487 for (var i = 0; i < s.length; i++) { 569 for (var i = 0; i < s.length; i++) {
488 - if (isNumericOnly(s[i])) numericOnlyStr += s[i];  
489 - if (firstWordOnly && numericOnlyStr.isNotEmpty && s[i] == " ") break; 570 + if (isNumericOnly(s[i])) {
  571 + numericOnlyStr += s[i];
  572 + }
  573 + if (firstWordOnly && numericOnlyStr.isNotEmpty && s[i] == " ") {
  574 + break;
  575 + }
490 } 576 }
  577 +
491 return numericOnlyStr; 578 return numericOnlyStr;
492 } 579 }
493 580
@@ -495,7 +582,12 @@ class GetUtils { @@ -495,7 +582,12 @@ class GetUtils {
495 return (value == null) ? false : RegExp(pattern).hasMatch(value); 582 return (value == null) ? false : RegExp(pattern).hasMatch(value);
496 } 583 }
497 584
498 - static void printFunction(String prefix, dynamic value, String info,  
499 - {bool isError = false}) =>  
500 - GetConfig.log('$prefix $value $info'.trim(), isError: isError); 585 + static void printFunction(
  586 + String prefix,
  587 + dynamic value,
  588 + String info, {
  589 + bool isError = false,
  590 + }) {
  591 + GetConfig.log('$prefix $value $info'.trim(), isError: isError);
  592 + }
501 } 593 }