[Merge-Queue] Forbid ChangeLog modification
[WebKit-https.git] / Websites / browserbench.org / Speedometer2.0 / resources / todomvc / architecture-examples / inferno / src / share.js
1 /**
2  * Shared funcs/values
3  */
4
5 export const ENTER = 13;
6 export const ESCAPE = 27;
7
8 export const filters = {
9     all: t => true,
10     active: t => !t.completed,
11     completed: t => t.completed
12 }
13
14 /**
15  * Read the `location.hash` value
16  * @return {String}
17  */
18 export function read() {
19     return location.hash.replace('#/', '') || 'all';
20 }
21
22 /**
23  * Modified `Object.assign` shim
24  * - always writes to new object
25  * @return {Object}
26  */
27 export function assign() {
28     let src;
29     let tar = {};
30     for (let s = 0; s < arguments.length; s++) {
31         src = Object(arguments[s]);
32         for (const k in src) {
33             tar[k] = src[k];
34         }
35     }
36     return tar;
37 }
38
39 /**
40  * Are two Objects equal values?
41  * @param  {Object} a
42  * @param  {Object} b
43  * @return {Boolean}
44  */
45 export function isEqual(a, b) {
46     // Create arrays of property names
47     const aProps = Object.getOwnPropertyNames(a);
48     const bProps = Object.getOwnPropertyNames(b);
49
50     if (aProps.length !== bProps.length) return false;
51
52     for (let i = 0; i < aProps.length; i++) {
53         const k = aProps[i];
54         if (a[k] !== b[k]) return false;
55     }
56
57     return true;
58 }