Skip to content

Commit 046dabd

Browse files
committed
move filter utils to misc
1 parent 5566f75 commit 046dabd

File tree

4 files changed

+74
-76
lines changed

4 files changed

+74
-76
lines changed

component.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@
6767
"src/util/debug.js",
6868
"src/util/dom.js",
6969
"src/util/env.js",
70-
"src/util/filter.js",
7170
"src/util/index.js",
7271
"src/util/lang.js",
7372
"src/util/merge-option.js",

src/util/filter.js

Lines changed: 0 additions & 72 deletions
This file was deleted.

src/util/index.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,5 @@ var extend = lang.extend
44
extend(exports, lang)
55
extend(exports, require('./env'))
66
extend(exports, require('./dom'))
7-
extend(exports, require('./filter'))
8-
extend(exports, require('./debug'))
9-
extend(exports, require('./misc'))
7+
extend(exports, require('./misc'))
8+
extend(exports, require('./debug'))

src/util/misc.js

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
var _ = require('./debug')
12
var config = require('../config')
23

34
/**
@@ -43,4 +44,75 @@ exports.createAnchor = function (content, persist) {
4344
return config.debug
4445
? document.createComment(content)
4546
: document.createTextNode(persist ? ' ' : '')
47+
}
48+
49+
/**
50+
* Resolve read & write filters for a vm instance. The
51+
* filters descriptor Array comes from the directive parser.
52+
*
53+
* This is extracted into its own utility so it can
54+
* be used in multiple scenarios.
55+
*
56+
* @param {Vue} vm
57+
* @param {Array<Object>} filters
58+
* @param {Object} [target]
59+
* @return {Object}
60+
*/
61+
62+
exports.resolveFilters = function (vm, filters, target) {
63+
if (!filters) {
64+
return
65+
}
66+
var res = target || {}
67+
// var registry = vm.$options.filters
68+
filters.forEach(function (f) {
69+
var def = vm.$options.filters[f.name]
70+
_.assertAsset(def, 'filter', f.name)
71+
if (!def) return
72+
var args = f.args
73+
var reader, writer
74+
if (typeof def === 'function') {
75+
reader = def
76+
} else {
77+
reader = def.read
78+
writer = def.write
79+
}
80+
if (reader) {
81+
if (!res.read) res.read = []
82+
res.read.push(function (value) {
83+
return args
84+
? reader.apply(vm, [value].concat(args))
85+
: reader.call(vm, value)
86+
})
87+
}
88+
if (writer) {
89+
if (!res.write) res.write = []
90+
res.write.push(function (value, oldVal) {
91+
return args
92+
? writer.apply(vm, [value, oldVal].concat(args))
93+
: writer.call(vm, value, oldVal)
94+
})
95+
}
96+
})
97+
return res
98+
}
99+
100+
/**
101+
* Apply filters to a value
102+
*
103+
* @param {*} value
104+
* @param {Array} filters
105+
* @param {Vue} vm
106+
* @param {*} oldVal
107+
* @return {*}
108+
*/
109+
110+
exports.applyFilters = function (value, filters, vm, oldVal) {
111+
if (!filters) {
112+
return value
113+
}
114+
for (var i = 0, l = filters.length; i < l; i++) {
115+
value = filters[i].call(vm, value, oldVal)
116+
}
117+
return value
46118
}

0 commit comments

Comments
 (0)