@@ -136,13 +136,32 @@ env.addExtension('DataImportExtension', new DataImportExtension());
136
136
env . addExtension ( 'JavascriptExecuteExtension' , new JavascriptExecuteExtension ( ) ) ;
137
137
env . addExtension ( 'AIExtension' , new AIExtension ( ) ) ;
138
138
139
+ env . addFilter ( 'shuffle' , ( array ) => {
140
+ let currentIndex = array . length ,
141
+ temporaryValue ,
142
+ randomIndex ;
143
+
144
+ // While there remain elements to shuffle...
145
+ while ( 0 !== currentIndex ) {
146
+ // Pick a remaining element...
147
+ randomIndex = Math . floor ( Math . random ( ) * currentIndex ) ;
148
+ currentIndex -= 1 ;
149
+
150
+ // And swap it with the current element.
151
+ temporaryValue = array [ currentIndex ] ;
152
+ array [ currentIndex ] = array [ randomIndex ] ;
153
+ array [ randomIndex ] = temporaryValue ;
154
+ }
155
+
156
+ return array ;
157
+ } ) ;
139
158
env . addFilter ( 'markdown' , ( md ) => new nunjucks . runtime . SafeString ( markdown . render ( md ) ) ) ;
140
159
env . addFilter ( 'markdowni' , ( md ) => new nunjucks . runtime . SafeString ( markdown . renderInline ( md ) ) ) ;
141
160
env . addFilter ( 'json' , ( data ) => new nunjucks . runtime . SafeString ( JSON . stringify ( data ) ) ) ;
142
161
env . addFilter (
143
162
'source' ,
144
163
( source , cb ) => {
145
- // we can't use api here as mithrils request functions don't work in web-workers,
164
+ // We can't use api here as mithrils request functions don't work in web-workers,
146
165
// so we just use a simple fetch.
147
166
fetch ( '/api/getEntries' , {
148
167
method : 'POST' ,
0 commit comments