Skip to content

Commit 9161244

Browse files
feat(roll): roll to ToT Playwright (09-02-23) (microsoft#939)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
1 parent de374be commit 9161244

File tree

1 file changed

+10
-41
lines changed

1 file changed

+10
-41
lines changed

src/documentation.js

Lines changed: 10 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ class Documentation {
9797
*/
9898
copyDocsFromSuperclasses(errors) {
9999
for (const [name, clazz] of this.classes.entries()) {
100-
clazz.validateOrder(errors, clazz);
100+
clazz.sortMembers();
101101

102102
if (!clazz.extends || ['EventEmitter', 'Error', 'Exception', 'RuntimeException'].includes(clazz.extends))
103103
continue;
@@ -317,48 +317,17 @@ class Documentation {
317317
this.membersArray = membersArray;
318318
}
319319

320-
validateOrder(errors, cls) {
321-
const members = this.membersArray;
322-
// Events should go first.
323-
let eventIndex = 0;
324-
for (; eventIndex < members.length && members[eventIndex].kind === 'event'; ++eventIndex);
325-
for (; eventIndex < members.length && members[eventIndex].kind !== 'event'; ++eventIndex);
326-
if (eventIndex < members.length)
327-
errors.push(`Events should go first. Event '${members[eventIndex].name}' in class ${cls.name} breaks order`);
328-
329-
// Constructor should be right after events and before all other members.
330-
const constructorIndex = members.findIndex(member => member.kind === 'method' && member.name === 'constructor');
331-
if (constructorIndex > 0 && members[constructorIndex - 1].kind !== 'event')
332-
errors.push(`Constructor of ${cls.name} should go before other methods`);
333-
334-
// Events should be sorted alphabetically.
335-
for (let i = 0; i < members.length - 1; ++i) {
336-
const member1 = this.membersArray[i];
337-
const member2 = this.membersArray[i + 1];
338-
if (member1.kind !== 'event' || member2.kind !== 'event')
339-
continue;
340-
if (member1.name.localeCompare(member2.name, 'en', { sensitivity: 'base' }) > 0)
341-
errors.push(`Event '${member1.name}' in class ${this.name} breaks alphabetic ordering of events`);
320+
sortMembers() {
321+
/**
322+
* @param {Member} member
323+
*/
324+
function sortKey(member) {
325+
return { 'event': 'a', 'method': 'b', 'property': 'c' }[member.kind] + member.alias;
342326
}
343327

344-
// All other members should be sorted alphabetically.
345-
for (let i = 0; i < members.length - 1; ++i) {
346-
const member1 = this.membersArray[i];
347-
const member2 = this.membersArray[i + 1];
348-
if (member1.kind === 'event' || member2.kind === 'event')
349-
continue;
350-
if (member1.kind === 'method' && member1.name === 'constructor')
351-
continue;
352-
if (member1.name.replace(/^\$+/, '$').localeCompare(member2.name.replace(/^\$+/, '$'), 'en', { sensitivity: 'base' }) > 0) {
353-
let memberName1 = `${this.name}.${member1.name}`;
354-
if (member1.kind === 'method')
355-
memberName1 += '()';
356-
let memberName2 = `${this.name}.${member2.name}`;
357-
if (member2.kind === 'method')
358-
memberName2 += '()';
359-
errors.push(`Bad alphabetic ordering of ${this.name} members: ${memberName1} should go after ${memberName2}`);
360-
}
361-
}
328+
this.membersArray.sort((m1, m2) => {
329+
return sortKey(m1).localeCompare(sortKey(m2), 'en', { sensitivity: 'base' });
330+
});
362331
}
363332

364333
/**

0 commit comments

Comments
 (0)