1- import { Feature } from '../../lib/jscrewit.js' ;
1+ import { isDeepStrictEqual } from 'node:util' ;
2+ import { Feature } from '../../lib/jscrewit.js' ;
23
34const AND_FORMATTER = new Intl . ListFormat ( 'en' ) ;
45const OR_FORMATTER = new Intl . ListFormat ( 'en' , { type : 'disjunction' } ) ;
@@ -37,9 +38,10 @@ export const getAvailabilityByFeature =
3738 return availabilityInfo ;
3839} ;
3940
40- export function getDescription ( compatibilities , compatibilityIndex , appendPlus )
41+ export function getDescription ( compatibilities , start , end , appendPlus )
4142{
42- const { tag, versions } = compatibilities [ compatibilityIndex ] ;
43+ const describedCompatibilities = compatibilities . slice ( start , end ) ;
44+ const [ { tag, versions } ] = describedCompatibilities ;
4345 const [ firstVersion ] = versions ;
4446 let description = typeof firstVersion === 'string' ? firstVersion : firstVersion . from ;
4547 if ( isOldAndLatestVersion ( versions ) )
@@ -51,11 +53,10 @@ export function getDescription(compatibilities, compatibilityIndex, appendPlus)
5153 }
5254 if ( tag != null )
5355 {
54- const taggableCompatibilities = compatibilities . slice ( compatibilityIndex ) ;
55- const tags = taggableCompatibilities . map ( ( { tag } ) => tag ) . filter ( tag => tag != null ) ;
56+ const tags = describedCompatibilities . map ( ( { tag } ) => tag ) . filter ( tag => tag != null ) ;
5657 description += ` ${ joinWithAnd ( tags ) } ` ;
5758 }
58- if ( appendPlus && ! isLastVersion ( compatibilities , compatibilityIndex ) )
59+ if ( appendPlus && ! isLastVersion ( describedCompatibilities , 0 ) )
5960 description += '+' ;
6061 return description ;
6162}
@@ -98,3 +99,12 @@ export function joinWithOr(array)
9899 const returnValue = OR_FORMATTER . format ( array ) ;
99100 return returnValue ;
100101}
102+
103+ export function needsUnavailNote ( compatibilities , firstAvail , firstUnavail )
104+ {
105+ const returnValue =
106+ firstUnavail &&
107+ ! isDeepStrictEqual
108+ ( compatibilities [ firstAvail ] . versions , compatibilities [ firstUnavail ] . versions ) ;
109+ return returnValue ;
110+ }
0 commit comments