parent
cb910b3f18
commit
f576ba8903
@ -0,0 +1,4 @@
|
||||
module.exports = {
|
||||
Filter: require('./src/filter.js')
|
||||
orderBy: require('./src/orderBy.js')
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
const lodashOrderBy = require('lodash.orderby')
|
||||
|
||||
/**
|
||||
* order results by keys
|
||||
*
|
||||
* @param {object} options
|
||||
* @param {object} results
|
||||
*
|
||||
* @return {object}
|
||||
*
|
||||
*/
|
||||
function orderBy(options, results) {
|
||||
options.forEach((key, index) => {
|
||||
|
||||
let direction = 'asc'
|
||||
|
||||
if (key.charAt(0) === '-') {
|
||||
key = key.slice(1, key.length)
|
||||
direction = 'desc'
|
||||
}
|
||||
|
||||
results = lodashOrderBy(results, key, direction)
|
||||
})
|
||||
|
||||
return results
|
||||
}
|
||||
|
||||
module.exports = orderBy
|
@ -0,0 +1,34 @@
|
||||
const lodashOrderBy = require('lodash.orderby')
|
||||
const assign = require('assign-deep')
|
||||
|
||||
/**
|
||||
* reduce results
|
||||
*
|
||||
* @param {object} options
|
||||
* @param {object} results
|
||||
*
|
||||
* @return {object}
|
||||
*
|
||||
*/
|
||||
function reduce(options, results) {
|
||||
|
||||
options = assign({
|
||||
offset: 0,
|
||||
limit: results.length
|
||||
}, options)
|
||||
|
||||
// check if offset exists and limit is smaller then length
|
||||
if (options.offset > 0 && options.limit < results.length) {
|
||||
options.limit += options.offset
|
||||
|
||||
// if new limit is more then length, then set to length
|
||||
if (options.limit > results.length) {
|
||||
options.limit = results.length
|
||||
}
|
||||
}
|
||||
|
||||
// offset and limit
|
||||
return results.slice(options.offset, options.limit)
|
||||
}
|
||||
|
||||
module.exports = reduce
|
@ -1,13 +0,0 @@
|
||||
const Filter = require('./src/filter.js')
|
||||
|
||||
const filter = new Filter({
|
||||
view: {
|
||||
_eq: 'post.nj'
|
||||
}
|
||||
})
|
||||
|
||||
const v = filter.validate({
|
||||
view: 'post.njk'
|
||||
})
|
||||
|
||||
console.log(v)
|
@ -0,0 +1,43 @@
|
||||
const { assert } = require('chai')
|
||||
const fs = require('fs')
|
||||
|
||||
describe('OrderBy', function () {
|
||||
|
||||
// get function
|
||||
const orderBy = require('./../src/orderBy.js')
|
||||
|
||||
// check results
|
||||
it('desc', function() {
|
||||
|
||||
const options = [
|
||||
'-index'
|
||||
]
|
||||
|
||||
const data = orderBy(options, [
|
||||
{ index: 0 },
|
||||
{ index: 1 },
|
||||
{ index: 2 },
|
||||
{ index: 3 },
|
||||
{ index: 4 }
|
||||
])
|
||||
|
||||
assert.equal(data[0].index, 4)
|
||||
})
|
||||
|
||||
it('asc', function() {
|
||||
|
||||
const options = [
|
||||
'index'
|
||||
]
|
||||
|
||||
const data = orderBy(options, [
|
||||
{ index: 0 },
|
||||
{ index: 1 },
|
||||
{ index: 2 },
|
||||
{ index: 3 },
|
||||
{ index: 4 }
|
||||
])
|
||||
|
||||
assert.equal(data[0].index, 0)
|
||||
})
|
||||
})
|
@ -0,0 +1,64 @@
|
||||
const { assert } = require('chai')
|
||||
const fs = require('fs')
|
||||
|
||||
describe('Filter', function () {
|
||||
|
||||
// get function
|
||||
const reduce = require('./../src/reduce.js')
|
||||
|
||||
// check results
|
||||
it('reduce, limit', function() {
|
||||
|
||||
const options = {
|
||||
limit: 2
|
||||
}
|
||||
|
||||
const data = reduce(options, [
|
||||
{ index: 0 },
|
||||
{ index: 1 },
|
||||
{ index: 2 },
|
||||
{ index: 3 },
|
||||
{ index: 4 }
|
||||
])
|
||||
|
||||
assert.equal(data.length, 2)
|
||||
})
|
||||
|
||||
// check results
|
||||
it('reduce, offset', function() {
|
||||
|
||||
const options = {
|
||||
offset: 2
|
||||
}
|
||||
|
||||
const data = reduce(options, [
|
||||
{ index: 0 },
|
||||
{ index: 1 },
|
||||
{ index: 2 },
|
||||
{ index: 3 },
|
||||
{ index: 4 }
|
||||
])
|
||||
|
||||
assert.equal(data[0].index, 2)
|
||||
})
|
||||
|
||||
// check results
|
||||
it('reduce, limit / offset', function() {
|
||||
|
||||
const options = {
|
||||
offset: 2,
|
||||
limit: 3
|
||||
}
|
||||
|
||||
const data = reduce(options, [
|
||||
{ index: 0 },
|
||||
{ index: 1 },
|
||||
{ index: 2 },
|
||||
{ index: 3 },
|
||||
{ index: 4 }
|
||||
])
|
||||
|
||||
assert.equal(data[0].index, 2)
|
||||
assert.equal(data.length, 3)
|
||||
})
|
||||
})
|
Loading…
Reference in new issue