@@ -7,9 +7,10 @@ export default async function({login, q, imports, data, account}, {enabled = fal
7
7
return null
8
8
9
9
//Load inputs
10
- let { limit, ignored, only, "limit.repositories" : _limit , languages, "limit.languages" : _limit_languages , "shuffle.repositories" : _shuffle } = imports . metadata . plugins . starlists . inputs ( { data, account, q} )
10
+ let { limit, ignored, only, "limit.repositories" : _limit , languages, "limit.languages" : _limit_languages , "languages.ignored" : _languages_ignored , "languages.aliases" : _languages_aliases , " shuffle.repositories" : _shuffle } = imports . metadata . plugins . starlists . inputs ( { data, account, q} )
11
11
ignored = ignored . map ( imports . stripemojis )
12
12
only = only . map ( imports . stripemojis )
13
+ _languages_aliases = Object . fromEntries ( _languages_aliases . split ( "," ) . filter ( alias => / ^ [ \s \S ] + : [ \s \S ] + $ / . test ( alias ) ) . map ( alias => alias . trim ( ) . split ( ":" ) ) . map ( ( [ key , value ] ) => [ key . toLocaleLowerCase ( ) , value ] ) )
13
14
14
15
//Start puppeteer and navigate to star lists
15
16
console . debug ( `metrics/compute/${ login } /plugins > starlists > starting browser` )
@@ -63,7 +64,7 @@ export default async function({login, q, imports, data, account}, {enabled = fal
63
64
} ) )
64
65
) ,
65
66
)
66
- if ( await page . evaluate ( ( ) => document . querySelector ( ".next_page.disabled" ) ) ) {
67
+ if ( ! ( await page . evaluate ( ( ) => document . querySelector ( ".next_page" ) ) ) || await page . evaluate ( ( ) => document . querySelector ( ".next_page.disabled" ) ) ) {
67
68
console . debug ( `metrics/compute/${ login } /plugins > starlists > reached last page` )
68
69
break
69
70
}
@@ -76,12 +77,16 @@ export default async function({login, q, imports, data, account}, {enabled = fal
76
77
if ( languages ) {
77
78
list . languages = { }
78
79
for ( const { language : { name, color} } of repositories ) {
79
- if ( name )
80
- list . languages [ name ] = ( list . languages [ name ] ?? 0 ) + 1
80
+ let lang = name
81
+ if ( lang && lang . toLocaleLowerCase ( ) in _languages_aliases ) {
82
+ lang = _languages_aliases [ name . toLocaleLowerCase ( ) ]
83
+ }
84
+ if ( lang )
85
+ list . languages [ lang ] = ( list . languages [ lang ] ?? 0 ) + 1
81
86
if ( color )
82
- colors [ name ] = color
87
+ colors [ lang ] = color
83
88
}
84
- list . languages = Object . entries ( list . languages ) . sort ( ( a , b ) => b [ 1 ] - a [ 1 ] ) . slice ( 0 , _limit_languages || Infinity )
89
+ list . languages = Object . entries ( list . languages ) . filter ( ( [ name ] ) => ! _languages_ignored . includes ( name . toLocaleLowerCase ( ) ) ) . sort ( ( a , b ) => b [ 1 ] - a [ 1 ] ) . slice ( 0 , _limit_languages || Infinity )
85
90
const visible = list . languages . map ( ( [ _ , value ] ) => value ) . reduce ( ( a , b ) => a + b , 0 )
86
91
list . languages = list . languages . map ( ( [ name , value ] ) => ( { name, value, color : name in colors ? `#${ colors [ name ] } ` : null , x : 0 , p : value / visible } ) )
87
92
for ( let i = 1 ; i < list . languages . length ; i ++ )
0 commit comments