Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F9346093
dispatch.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
2 KB
Subscribers
None
dispatch.js
View Options
var
noop
=
{
value
:
()
=>
{}};
function
dispatch
()
{
for
(
var
i
=
0
,
n
=
arguments
.
length
,
_
=
{},
t
;
i
<
n
;
++
i
)
{
if
(
!
(
t
=
arguments
[
i
]
+
""
)
||
(
t
in
_
)
||
/[\s.]/
.
test
(
t
))
throw
new
Error
(
"illegal type: "
+
t
);
_
[
t
]
=
[];
}
return
new
Dispatch
(
_
);
}
function
Dispatch
(
_
)
{
this
.
_
=
_
;
}
function
parseTypenames
(
typenames
,
types
)
{
return
typenames
.
trim
().
split
(
/^|\s+/
).
map
(
function
(
t
)
{
var
name
=
""
,
i
=
t
.
indexOf
(
"."
);
if
(
i
>=
0
)
name
=
t
.
slice
(
i
+
1
),
t
=
t
.
slice
(
0
,
i
);
if
(
t
&&
!
types
.
hasOwnProperty
(
t
))
throw
new
Error
(
"unknown type: "
+
t
);
return
{
type
:
t
,
name
:
name
};
});
}
Dispatch
.
prototype
=
dispatch
.
prototype
=
{
constructor
:
Dispatch
,
on
:
function
(
typename
,
callback
)
{
var
_
=
this
.
_
,
T
=
parseTypenames
(
typename
+
""
,
_
),
t
,
i
=
-
1
,
n
=
T
.
length
;
// If no callback was specified, return the callback of the given type and name.
if
(
arguments
.
length
<
2
)
{
while
(
++
i
<
n
)
if
((
t
=
(
typename
=
T
[
i
]).
type
)
&&
(
t
=
get
(
_
[
t
],
typename
.
name
)))
return
t
;
return
;
}
// If a type was specified, set the callback for the given type and name.
// Otherwise, if a null callback was specified, remove callbacks of the given name.
if
(
callback
!=
null
&&
typeof
callback
!==
"function"
)
throw
new
Error
(
"invalid callback: "
+
callback
);
while
(
++
i
<
n
)
{
if
(
t
=
(
typename
=
T
[
i
]).
type
)
_
[
t
]
=
set
(
_
[
t
],
typename
.
name
,
callback
);
else
if
(
callback
==
null
)
for
(
t
in
_
)
_
[
t
]
=
set
(
_
[
t
],
typename
.
name
,
null
);
}
return
this
;
},
copy
:
function
()
{
var
copy
=
{},
_
=
this
.
_
;
for
(
var
t
in
_
)
copy
[
t
]
=
_
[
t
].
slice
();
return
new
Dispatch
(
copy
);
},
call
:
function
(
type
,
that
)
{
if
((
n
=
arguments
.
length
-
2
)
>
0
)
for
(
var
args
=
new
Array
(
n
),
i
=
0
,
n
,
t
;
i
<
n
;
++
i
)
args
[
i
]
=
arguments
[
i
+
2
];
if
(
!
this
.
_
.
hasOwnProperty
(
type
))
throw
new
Error
(
"unknown type: "
+
type
);
for
(
t
=
this
.
_
[
type
],
i
=
0
,
n
=
t
.
length
;
i
<
n
;
++
i
)
t
[
i
].
value
.
apply
(
that
,
args
);
},
apply
:
function
(
type
,
that
,
args
)
{
if
(
!
this
.
_
.
hasOwnProperty
(
type
))
throw
new
Error
(
"unknown type: "
+
type
);
for
(
var
t
=
this
.
_
[
type
],
i
=
0
,
n
=
t
.
length
;
i
<
n
;
++
i
)
t
[
i
].
value
.
apply
(
that
,
args
);
}
};
function
get
(
type
,
name
)
{
for
(
var
i
=
0
,
n
=
type
.
length
,
c
;
i
<
n
;
++
i
)
{
if
((
c
=
type
[
i
]).
name
===
name
)
{
return
c
.
value
;
}
}
}
function
set
(
type
,
name
,
callback
)
{
for
(
var
i
=
0
,
n
=
type
.
length
;
i
<
n
;
++
i
)
{
if
(
type
[
i
].
name
===
name
)
{
type
[
i
]
=
noop
,
type
=
type
.
slice
(
0
,
i
).
concat
(
type
.
slice
(
i
+
1
));
break
;
}
}
if
(
callback
!=
null
)
type
.
push
({
name
:
name
,
value
:
callback
});
return
type
;
}
export
default
dispatch
;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Jul 4, 3:43 PM (2 w, 22 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3269819
Attached To
rDWAPPS Web applications
Event Timeline
Log In to Comment