| OLD | NEW |
| (Empty) | |
| 1 library angular.util; |
| 2 |
| 3 toBool(x) { |
| 4 if (x is bool) return x; |
| 5 if (x is num) return x != 0; |
| 6 return false; |
| 7 } |
| 8 |
| 9 typedef FnWith0Args(); |
| 10 typedef FnWith1Args(a0); |
| 11 typedef FnWith2Args(a0, a1); |
| 12 typedef FnWith3Args(a0, a1, a2); |
| 13 typedef FnWith4Args(a0, a1, a2, a3); |
| 14 typedef FnWith5Args(a0, a1, a2, a3, a4); |
| 15 |
| 16 relaxFnApply(Function fn, List args) { |
| 17 // Check the args.length to support functions with optional parameters. |
| 18 var argsLen = args.length; |
| 19 if (fn is Function && fn != null) { |
| 20 if (fn is FnWith5Args && argsLen > 4) { |
| 21 return fn(args[0], args[1], args[2], args[3], args[4]); |
| 22 } else if (fn is FnWith4Args && argsLen > 3) { |
| 23 return fn(args[0], args[1], args[2], args[3]); |
| 24 } else if (fn is FnWith3Args && argsLen > 2 ) { |
| 25 return fn(args[0], args[1], args[2]); |
| 26 } else if (fn is FnWith2Args && argsLen > 1 ) { |
| 27 return fn(args[0], args[1]); |
| 28 } else if (fn is FnWith1Args && argsLen > 0) { |
| 29 return fn(args[0]); |
| 30 } else if (fn is FnWith0Args) { |
| 31 return fn(); |
| 32 } else { |
| 33 throw "Unknown function type, expecting 0 to 5 args."; |
| 34 } |
| 35 } else { |
| 36 throw "Missing function."; |
| 37 } |
| 38 } |
| 39 |
| 40 relaxFnArgs1(Function fn) { |
| 41 if (fn is FnWith3Args) return (_1) => fn(_1, null, null); |
| 42 if (fn is FnWith2Args) return (_1) => fn(_1, null); |
| 43 if (fn is FnWith1Args) return fn; |
| 44 if (fn is FnWith0Args) return (_1) => fn(); |
| 45 } |
| 46 |
| 47 relaxFnArgs3(Function fn) { |
| 48 if (fn is FnWith3Args) return fn; |
| 49 if (fn is FnWith2Args) return (_1, _2, _3) => fn(_1, null); |
| 50 if (fn is FnWith1Args) return (_1, _2, _3) => fn(_1); |
| 51 if (fn is FnWith0Args) return (_1, _2, _3) => fn(); |
| 52 } |
| 53 |
| 54 relaxFnArgs(Function fn) { |
| 55 if (fn is FnWith5Args) { |
| 56 return ([a0, a1, a2, a3, a4]) => fn(a0, a1, a2, a3, a4); |
| 57 } else if (fn is FnWith4Args) { |
| 58 return ([a0, a1, a2, a3, a4]) => fn(a0, a1, a2, a3); |
| 59 } else if (fn is FnWith3Args) { |
| 60 return ([a0, a1, a2, a3, a4]) => fn(a0, a1, a2); |
| 61 } else if (fn is FnWith2Args) { |
| 62 return ([a0, a1, a2, a3, a4]) => fn(a0, a1); |
| 63 } else if (fn is FnWith1Args) { |
| 64 return ([a0, a1, a2, a3, a4]) => fn(a0); |
| 65 } else if (fn is FnWith0Args) { |
| 66 return ([a0, a1, a2, a3, a4]) => fn(); |
| 67 } else { |
| 68 return ([a0, a1, a2, a3, a4]) { |
| 69 throw "Unknown function type, expecting 0 to 5 args."; |
| 70 }; |
| 71 } |
| 72 } |
| 73 |
| 74 camelcase(String s) { |
| 75 var part = s.split('-').map((s) => s.toLowerCase()); |
| 76 if (part.length <= 1) { |
| 77 return part.join(); |
| 78 } |
| 79 return part.first + part.skip(1).map(capitalize).join(); |
| 80 } |
| 81 |
| 82 capitalize(String s) => s.substring(0, 1).toUpperCase() + s.substring(1); |
| 83 |
| 84 var SNAKE_CASE_REGEXP = new RegExp("[A-Z]"); |
| 85 |
| 86 snakecase(String name, [separator = '-']) => |
| 87 name.replaceAllMapped(SNAKE_CASE_REGEXP, (Match match) => |
| 88 (match.start != 0 ? separator : '') + match.group(0).toLowerCase()); |
| OLD | NEW |