@@ -55,6 +55,9 @@ module.exports = function generateVersionDocProcessor(gitData) {
55
55
56
56
if ( missesCurrentVersion ) versions . push ( currentVersion . version ) ;
57
57
58
+ // Get the stable release with the highest version
59
+ var highestStableRelease = versions . reverse ( ) . find ( semverIsStable ) ;
60
+
58
61
versions = versions
59
62
. filter ( function ( versionStr ) {
60
63
return blacklist . indexOf ( versionStr ) === - 1 ;
@@ -82,7 +85,21 @@ module.exports = function generateVersionDocProcessor(gitData) {
82
85
var latest = sortObject ( latestMap , reverse ( semver . compare ) )
83
86
. map ( function ( version ) { return makeOption ( version , 'Latest' ) ; } ) ;
84
87
85
- return [ makeOption ( { version : 'snapshot' } , 'Latest' , 'master' ) ]
88
+ // Generate master and stable snapshots
89
+ var snapshots = [
90
+ makeOption (
91
+ { version : 'snapshot' } ,
92
+ 'Latest' ,
93
+ 'master-snapshot'
94
+ ) ,
95
+ makeOption (
96
+ { version : 'snapshot-stable' } ,
97
+ 'Latest' ,
98
+ createSnapshotStableLabel ( highestStableRelease )
99
+ )
100
+ ] ;
101
+
102
+ return snapshots
86
103
. concat ( latest )
87
104
. concat ( versions ) ;
88
105
}
@@ -112,6 +129,18 @@ module.exports = function generateVersionDocProcessor(gitData) {
112
129
function sortObject ( obj , cmp ) {
113
130
return Object . keys ( obj ) . map ( function ( key ) { return obj [ key ] ; } ) . sort ( cmp ) ;
114
131
}
132
+
133
+ // https://github.com/kaelzhang/node-semver-stable/blob/34dd29842409295d49889d45871bec55a992b7f6/index.js#L25
134
+ function semverIsStable ( version ) {
135
+ var semverObj = semver . parse ( version ) ;
136
+ return semverObj === null ? false : ! semverObj . prerelease . length ;
137
+ }
138
+
139
+ function createSnapshotStableLabel ( version ) {
140
+ var label = 'v' + version . replace ( / .$ / , 'x' ) + '-snapshot' ;
141
+
142
+ return label ;
143
+ }
115
144
}
116
145
} ;
117
146
} ;
0 commit comments