-
Notifications
You must be signed in to change notification settings - Fork 0
/
utils.js
74 lines (66 loc) · 1.63 KB
/
utils.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// split the event name on the ":"
const splitter = /(^|:)(\w)/gi;
// Only calc eventNameToMethodName once
const methodCache = {};
// key for events handler
export const handlerSymbol = Symbol('eventshandler');
// split string events by space
export const eventNameSplitter = /\s+/g;
// find all events predicate
//export const findAllPredicate = cb => cb && cb.eventName === 'all';
// yaff events indicator
export const eventsMixinSymbol = Symbol('yaffevents');
// unmutable fallback empty array
export const emptyArray = [];
export function isYaffEvents(arg) {
return arg && arg._yaffevents_ == eventsMixinSymbol;
}
export function isFunc(arg) {
return typeof arg === 'function';
}
export function isObj(arg) {
return arg !== null && typeof arg === 'object';
}
/**
* Converts `event:name` to `onEventName`
* @private
* @export
* @param {string} event - event name
* @returns {string} method name
*/
export function eventNameToMethodName(event) {
let name = methodCache[event];
if (!name) {
name =
'on' +
event.replace(splitter, (match, prefix, eventName) =>
eventName.toUpperCase()
);
methodCache[event] = name;
}
return name;
}
/*
export function indexLookup(items, item) {
let len = items.length;
let half = len / 2 >> 0;
let tail = len % 2;
let left = 0;
let right = len - 1;
let inc = 0;
while (left < half) {
if (items[left] === item) return left;
if (items[right] === item) return right;
left++;
right = len - left - 1;
inc++;
if (inc > 1000) {
throw new Error('oops');
}
}
if (tail && items[left] === item) {
return left;
}
return -1;
}
*/