|
28 | 28 | * }
|
29 | 29 | * ```
|
30 | 30 | */
|
31 |
| -onmessage = function(e) { |
32 |
| - var docs = e.data.docs; |
33 |
| - var searchTerm = e.data.search; |
34 |
| - |
35 |
| - var regexForTerm = function(query) { |
36 |
| - var escaped = query.replace(/([\.\*\+\?\|\(\)\[\]\\])/g, '\\$1'); |
| 31 | +onmessage = function({ data: { docs, search } }) { |
| 32 | + const regexForTerm = (query) => { |
| 33 | + const escaped = query.replace(/([\.\*\+\?\|\(\)\[\]\\])/g, '\\$1'); |
37 | 34 | if (query.toLowerCase() != query) {
|
38 | 35 | // Regexp that matches CamelCase subbits: "BiSe" is
|
39 | 36 | // "[a-z]*Bi[a-z]*Se" and matches "BitSet", "ABitSet", ...
|
40 | 37 | return new RegExp(escaped.replace(/([A-Z])/g,"[a-z]*$1"));
|
41 | 38 | }
|
42 |
| - else { // if query is all lower case make a normal case insensitive search |
43 |
| - return new RegExp(escaped, "i"); |
44 |
| - } |
| 39 | + // if query is all lower case make a normal case insensitive search |
| 40 | + return new RegExp(escaped, "i"); |
45 | 41 | };
|
46 | 42 |
|
47 |
| - var searchRegex = regexForTerm(searchTerm); |
| 43 | + const searchRegex = regexForTerm(search); |
48 | 44 |
|
49 |
| - var filterPackages = function(entity) { |
50 |
| - switch(entity.kind) { |
51 |
| - case "val": |
52 |
| - case "def": |
53 |
| - case "type": |
54 |
| - case "package": |
55 |
| - return false; |
56 |
| - default: |
57 |
| - return true; |
58 |
| - } |
59 |
| - }; |
| 45 | + const filterPackages = (entity) => !["val", "def", "type", "package"].includes(entity.kind); |
60 | 46 |
|
61 |
| - // look at this higher order function, such syntax: |
62 |
| - var messageParentIfMatches = function(parent) { |
63 |
| - return function(entity) { |
64 |
| - var fullName = entity.path.join('.'); |
| 47 | + const messageParentIfMatches = (parent) => (entity) => { |
| 48 | + const fullName = entity.path.join('.'); |
65 | 49 |
|
66 |
| - if (searchRegex.test(fullName)) { |
| 50 | + if (searchRegex.test(fullName)) { |
| 51 | + postMessage({ |
| 52 | + type: "entityResult", |
| 53 | + package: parent, |
| 54 | + entity |
| 55 | + }); |
| 56 | + } |
| 57 | + |
| 58 | + entity.members.forEach((member) => { |
| 59 | + if (searchRegex.test(member.name)) { |
67 | 60 | postMessage({
|
68 |
| - "type": "entityResult", |
69 |
| - "package": parent, |
70 |
| - "entity": entity |
| 61 | + type: "memberResult", |
| 62 | + package: parent, |
| 63 | + parent: entity, |
| 64 | + member |
71 | 65 | });
|
72 | 66 | }
|
73 |
| - |
74 |
| - var searchChild = function(member) { |
75 |
| - if (searchRegex.test(member.name)) { |
76 |
| - postMessage({ |
77 |
| - "type": "memberResult", |
78 |
| - "package": parent, |
79 |
| - "parent": entity, |
80 |
| - "member": member, |
81 |
| - }); |
82 |
| - } |
83 |
| - }; |
84 |
| - entity.members.forEach(searchChild); |
85 |
| - }; |
| 67 | + }); |
86 | 68 | };
|
87 | 69 |
|
88 |
| - docs.forEach(function(pack) { |
| 70 | + docs.forEach((pack) => { |
89 | 71 | pack.members
|
90 | 72 | .filter(filterPackages)
|
91 | 73 | .forEach(messageParentIfMatches(pack));
|
92 | 74 | });
|
93 |
| -} |
| 75 | +}; |
0 commit comments