Skip to content

Commit 8d34f47

Browse files
committed
Merge branch '0.1.4'
2 parents 932713e + bbbf118 commit 8d34f47

File tree

13 files changed

+367
-34
lines changed

13 files changed

+367
-34
lines changed

.babelrc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"presets": ["es2015"]
3+
}

.gitignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
11
node_modules
2-
npm-debug.log
3-
example.html
2+
npm-debug.log

.travis.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
language: node_js
2+
node_js:
3+
- 6.1

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Simply include `vue2-filters` after Vue and it will install itself automatically
1717

1818
```html
1919
<script src="https://unpkg.com/vue/dist/vue.js"></script>
20-
<script src="https://cdn.jsdelivr.net/vue2-filters/0.1.3/vue2-filters.min.js"></script>
20+
<script src="https://cdn.jsdelivr.net/vue2-filters/0.1.4/vue2-filters.min.js"></script>
2121
```
2222

2323
### NPM

dist/vue2-filters.js

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,14 @@ util.convertArray = function (value) {
180180
}
181181
}
182182

183+
function multiIndex(obj,is) { // obj,['1','2','3'] -> ((obj['1'])['2'])['3']
184+
return is.length ? multiIndex(obj[is[0]],is.slice(1)) : obj
185+
}
186+
187+
util.getPath = function(obj,is) { // obj,'1.2.3' -> multiIndex(obj,['1','2','3'])
188+
return multiIndex(obj,is.split('.'))
189+
}
190+
183191
/**
184192
* Strict object type check. Only returns true
185193
* for plain JavaScript objects.
@@ -283,7 +291,7 @@ function filterBy (arr, search) {
283291
while (j--) {
284292
key = keys[j]
285293
if ((key === '$key' && contains(item.$key, search)) ||
286-
contains(item[key], search)) {
294+
contains(__WEBPACK_IMPORTED_MODULE_0__util_index__["a" /* default */].getPath(val, key), search)) {
287295
res.push(item)
288296
break
289297
}
@@ -361,7 +369,7 @@ function limitBy (arr, n, offset) {
361369

362370
function orderBy (arr) {
363371
var comparator = null
364-
var sortKey
372+
var sortKeys
365373
arr = __WEBPACK_IMPORTED_MODULE_0__util_index__["a" /* default */].convertArray(arr)
366374

367375
// determine order (last argument)
@@ -375,7 +383,7 @@ function orderBy (arr) {
375383
}
376384

377385
// determine sortKeys & comparator
378-
var firstArg = sortKey = args[0]
386+
var firstArg = args[0]
379387
if (!firstArg) {
380388
return arr
381389
} else if (typeof firstArg === 'function') {
@@ -384,20 +392,25 @@ function orderBy (arr) {
384392
return firstArg(a, b) * order
385393
}
386394
} else {
387-
comparator = function (a, b) {
388-
return baseCompare(a, b)
395+
// string keys. flatten first
396+
sortKeys = Array.prototype.concat.apply([], args)
397+
comparator = function (a, b, i) {
398+
i = i || 0
399+
return i >= sortKeys.length - 1
400+
? baseCompare(a, b, i)
401+
: baseCompare(a, b, i) || comparator(a, b, i + 1)
389402
}
390403
}
391404

392-
function baseCompare(a, b) {
405+
function baseCompare (a, b, sortKeyIndex) {
406+
const sortKey = sortKeys[sortKeyIndex]
393407
if (sortKey) {
394-
if (a[sortKey] > b[sortKey]) {
395-
return order
396-
}
397-
if (a[sortKey] < b[sortKey]) {
398-
return -order
408+
if (sortKey !== '$key') {
409+
if (__WEBPACK_IMPORTED_MODULE_0__util_index__["a" /* default */].isObject(a) && '$value' in a) a = a.$value
410+
if (__WEBPACK_IMPORTED_MODULE_0__util_index__["a" /* default */].isObject(b) && '$value' in b) b = b.$value
399411
}
400-
return 0
412+
a = __WEBPACK_IMPORTED_MODULE_0__util_index__["a" /* default */].isObject(a) ? __WEBPACK_IMPORTED_MODULE_0__util_index__["a" /* default */].getPath(a, sortKey) : a
413+
b = __WEBPACK_IMPORTED_MODULE_0__util_index__["a" /* default */].isObject(b) ? __WEBPACK_IMPORTED_MODULE_0__util_index__["a" /* default */].getPath(b, sortKey) : b
401414
}
402415
return a === b ? 0 : a > b ? order : -order
403416
}
@@ -469,7 +482,6 @@ function currency (value, currency, decimals) {
469482

470483
function pluralize (value) {
471484
var args = __WEBPACK_IMPORTED_MODULE_0__util_index__["a" /* default */].toArray(arguments, 1)
472-
args.shift()
473485
return args.length > 1
474486
? (args[value % 10 - 1] || args[args.length - 1])
475487
: (args[0] + (value === 1 ? '' : 's'))

dist/vue2-filters.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
{
22
"name": "vue2-filters",
3-
"version": "0.1.3",
3+
"version": "0.1.4",
44
"description": "The list of standard filters Vue.js 1.* adapted for use in Vue.js 2.*",
55
"main": "dist/vue2-filters.js",
66
"scripts": {
7-
"build": "webpack src/index.js dist/vue2-filters.min.js --output-library-target umd --optimize-minimize",
8-
"dev": "webpack src/index.js dist/vue2-filters.js --output-library-target umd --watch",
9-
"test": "echo \"Error: no test specified\" && exit 1"
7+
"build": "node_modules/.bin/webpack src/index.js dist/vue2-filters.min.js --output-library-target umd --optimize-minimize",
8+
"dev": "node_modules/.bin/webpack src/index.js dist/vue2-filters.js --output-library-target umd --watch",
9+
"test": "node_modules/.bin/karma start test/karma.conf.js --single-run --no-auto-watch"
1010
},
1111
"keywords": [
1212
"vuejs",
@@ -17,6 +17,14 @@
1717
"author": "Arhey",
1818
"license": "MIT",
1919
"devDependencies": {
20+
"babel-core": "^6.18.2",
21+
"babel-loader": "^6.2.8",
22+
"babel-preset-es2015": "^6.18.0",
23+
"jasmine": "^2.5.2",
24+
"karma": "^1.3.0",
25+
"karma-jasmine": "^1.0.2",
26+
"karma-phantomjs-launcher": "^1.0.2",
27+
"karma-webpack": "^1.8.0",
2028
"webpack": "^2.1.0-beta.27"
2129
},
2230
"dependencies": {}

src/array/filterBy.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ function filterBy (arr, search) {
3131
while (j--) {
3232
key = keys[j]
3333
if ((key === '$key' && contains(item.$key, search)) ||
34-
contains(item[key], search)) {
34+
contains(util.getPath(val, key), search)) {
3535
res.push(item)
3636
break
3737
}

src/array/orderBy.js

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import util from '../util/index'
99

1010
function orderBy (arr) {
1111
var comparator = null
12-
var sortKey
12+
var sortKeys
1313
arr = util.convertArray(arr)
1414

1515
// determine order (last argument)
@@ -23,7 +23,7 @@ function orderBy (arr) {
2323
}
2424

2525
// determine sortKeys & comparator
26-
var firstArg = sortKey = args[0]
26+
var firstArg = args[0]
2727
if (!firstArg) {
2828
return arr
2929
} else if (typeof firstArg === 'function') {
@@ -32,20 +32,25 @@ function orderBy (arr) {
3232
return firstArg(a, b) * order
3333
}
3434
} else {
35-
comparator = function (a, b) {
36-
return baseCompare(a, b)
35+
// string keys. flatten first
36+
sortKeys = Array.prototype.concat.apply([], args)
37+
comparator = function (a, b, i) {
38+
i = i || 0
39+
return i >= sortKeys.length - 1
40+
? baseCompare(a, b, i)
41+
: baseCompare(a, b, i) || comparator(a, b, i + 1)
3742
}
3843
}
3944

40-
function baseCompare(a, b) {
45+
function baseCompare (a, b, sortKeyIndex) {
46+
const sortKey = sortKeys[sortKeyIndex]
4147
if (sortKey) {
42-
if (a[sortKey] > b[sortKey]) {
43-
return order
44-
}
45-
if (a[sortKey] < b[sortKey]) {
46-
return -order
48+
if (sortKey !== '$key') {
49+
if (util.isObject(a) && '$value' in a) a = a.$value
50+
if (util.isObject(b) && '$value' in b) b = b.$value
4751
}
48-
return 0
52+
a = util.isObject(a) ? util.getPath(a, sortKey) : a
53+
b = util.isObject(b) ? util.getPath(b, sortKey) : b
4954
}
5055
return a === b ? 0 : a > b ? order : -order
5156
}

src/other/pluralize.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import util from '../util/index'
1515

1616
function pluralize (value) {
1717
var args = util.toArray(arguments, 1)
18-
args.shift()
1918
return args.length > 1
2019
? (args[value % 10 - 1] || args[args.length - 1])
2120
: (args[0] + (value === 1 ? '' : 's'))

src/util/index.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,14 @@ util.convertArray = function (value) {
9999
}
100100
}
101101

102+
function multiIndex(obj,is) { // obj,['1','2','3'] -> ((obj['1'])['2'])['3']
103+
return is.length ? multiIndex(obj[is[0]],is.slice(1)) : obj
104+
}
105+
106+
util.getPath = function(obj,is) { // obj,'1.2.3' -> multiIndex(obj,['1','2','3'])
107+
return multiIndex(obj,is.split('.'))
108+
}
109+
102110
/**
103111
* Strict object type check. Only returns true
104112
* for plain JavaScript objects.

0 commit comments

Comments
 (0)