Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(171)

Side by Side Diff: third_party/pkg/angular/lib/utils.dart

Issue 124053002: Adding Angular and dependent packages for testing (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(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());
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698