| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 | 
							- var iterate    = require('./lib/iterate.js')
 
-   , initState  = require('./lib/state.js')
 
-   , terminator = require('./lib/terminator.js')
 
-   ;
 
- // Public API
 
- module.exports = serialOrdered;
 
- // sorting helpers
 
- module.exports.ascending  = ascending;
 
- module.exports.descending = descending;
 
- /**
 
-  * Runs iterator over provided sorted array elements in series
 
-  *
 
-  * @param   {array|object} list - array or object (named list) to iterate over
 
-  * @param   {function} iterator - iterator to run
 
-  * @param   {function} sortMethod - custom sort function
 
-  * @param   {function} callback - invoked when all elements processed
 
-  * @returns {function} - jobs terminator
 
-  */
 
- function serialOrdered(list, iterator, sortMethod, callback)
 
- {
 
-   var state = initState(list, sortMethod);
 
-   iterate(list, iterator, state, function iteratorHandler(error, result)
 
-   {
 
-     if (error)
 
-     {
 
-       callback(error, result);
 
-       return;
 
-     }
 
-     state.index++;
 
-     // are we there yet?
 
-     if (state.index < (state['keyedList'] || list).length)
 
-     {
 
-       iterate(list, iterator, state, iteratorHandler);
 
-       return;
 
-     }
 
-     // done here
 
-     callback(null, state.results);
 
-   });
 
-   return terminator.bind(state, callback);
 
- }
 
- /*
 
-  * -- Sort methods
 
-  */
 
- /**
 
-  * sort helper to sort array elements in ascending order
 
-  *
 
-  * @param   {mixed} a - an item to compare
 
-  * @param   {mixed} b - an item to compare
 
-  * @returns {number} - comparison result
 
-  */
 
- function ascending(a, b)
 
- {
 
-   return a < b ? -1 : a > b ? 1 : 0;
 
- }
 
- /**
 
-  * sort helper to sort array elements in descending order
 
-  *
 
-  * @param   {mixed} a - an item to compare
 
-  * @param   {mixed} b - an item to compare
 
-  * @returns {number} - comparison result
 
-  */
 
- function descending(a, b)
 
- {
 
-   return -1 * ascending(a, b);
 
- }
 
 
  |