nunjucks/src/runtime.js
changed.
nunjucks/src/filters.js
changed.
nunjucks/src/lib.js
changed.
Other files ignored by Codecov
CHANGELOG.md
has changed.
tests/filters.js
has changed.
447 | 447 | ||
448 | 448 | exports.sort = r.makeMacro( |
|
449 | 449 | ['value', 'reverse', 'case_sensitive', 'attribute'], [], |
|
450 | - | (arr, reversed, caseSens, attr) => { |
|
450 | + | function sortFilter(arr, reversed, caseSens, attr) { |
|
451 | 451 | // Copy it |
|
452 | 452 | let array = lib.map(arr, v => v); |
|
453 | + | let getAttribute = lib.getAttrGetter(attr); |
|
453 | 454 | ||
454 | 455 | array.sort((a, b) => { |
|
455 | - | let x = (attr) ? a[attr] : a; |
|
456 | - | let y = (attr) ? b[attr] : b; |
|
456 | + | let x = (attr) ? getAttribute(a) : a; |
|
457 | + | let y = (attr) ? getAttribute(b) : b; |
|
458 | + | ||
459 | + | if ( |
|
460 | + | this.env.opts.throwOnUndefined && |
|
461 | + | attr && (x === undefined || y === undefined) |
|
462 | + | ) { |
|
463 | + | throw new TypeError(`sort: attribute "${attr}" resolved to undefined`); |
|
464 | + | } |
|
457 | 465 | ||
458 | 466 | if (!caseSens && lib.isString(x) && lib.isString(y)) { |
|
459 | 467 | x = x.toLowerCase(); |
Files | Coverage |
---|---|
nunjucks | 89.69% |
Project Totals (22 files) | 89.69% |