|
|
@@ -1 +1,111 @@
|
|
|
-module.exports = Object.create(null)
|
|
|
+var _ = require('../util')
|
|
|
+var filters = module.exports = Object.create(null)
|
|
|
+
|
|
|
+/**
|
|
|
+ * 'abc' => 'Abc'
|
|
|
+ */
|
|
|
+
|
|
|
+filters.capitalize = function (value) {
|
|
|
+ if (!value && value !== 0) return ''
|
|
|
+ value = value.toString()
|
|
|
+ return value.charAt(0).toUpperCase() + value.slice(1)
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 'abc' => 'ABC'
|
|
|
+ */
|
|
|
+
|
|
|
+filters.uppercase = function (value) {
|
|
|
+ return (value || value === 0)
|
|
|
+ ? value.toString().toUpperCase()
|
|
|
+ : ''
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 'AbC' => 'abc'
|
|
|
+ */
|
|
|
+
|
|
|
+filters.lowercase = function (value) {
|
|
|
+ return (value || value === 0)
|
|
|
+ ? value.toString().toLowerCase()
|
|
|
+ : ''
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 12345 => $12,345.00
|
|
|
+ *
|
|
|
+ * @param {String} sign
|
|
|
+ */
|
|
|
+
|
|
|
+var digitsRE = /(\d{3})(?=\d)/g
|
|
|
+
|
|
|
+filters.currency = function (value, sign) {
|
|
|
+ value = parseFloat(value)
|
|
|
+ if (!value && value !== 0) return ''
|
|
|
+ sign = sign || '$'
|
|
|
+ var s = Math.floor(value).toString(),
|
|
|
+ i = s.length % 3,
|
|
|
+ h = i > 0
|
|
|
+ ? (s.slice(0, i) + (s.length > 3 ? ',' : ''))
|
|
|
+ : '',
|
|
|
+ f = '.' + value.toFixed(2).slice(-2)
|
|
|
+ return sign + h + s.slice(i).replace(digitsRE, '$1,') + f
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 'item' => 'items'
|
|
|
+ *
|
|
|
+ * @params
|
|
|
+ * an array of strings corresponding to
|
|
|
+ * the single, double, triple ... forms of the word to
|
|
|
+ * be pluralized. When the number to be pluralized
|
|
|
+ * exceeds the length of the args, it will use the last
|
|
|
+ * entry in the array.
|
|
|
+ *
|
|
|
+ * e.g. ['single', 'double', 'triple', 'multiple']
|
|
|
+ */
|
|
|
+
|
|
|
+filters.pluralize = function (value) {
|
|
|
+ var args = slice.call(arguments, 1)
|
|
|
+ return args.length > 1
|
|
|
+ ? (args[value - 1] || args[args.length - 1])
|
|
|
+ : (args[value - 1] || args[0] + 's')
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * A special filter that takes a handler function,
|
|
|
+ * wraps it so it only gets triggered on specific
|
|
|
+ * keypresses. v-on only.
|
|
|
+ *
|
|
|
+ * @param {String} key
|
|
|
+ */
|
|
|
+
|
|
|
+var keyCodes = {
|
|
|
+ enter : 13,
|
|
|
+ tab : 9,
|
|
|
+ 'delete' : 46,
|
|
|
+ up : 38,
|
|
|
+ left : 37,
|
|
|
+ right : 39,
|
|
|
+ down : 40,
|
|
|
+ esc : 27
|
|
|
+}
|
|
|
+
|
|
|
+filters.key = function (handler, key) {
|
|
|
+ if (!handler) return
|
|
|
+ var code = keyCodes[key]
|
|
|
+ if (!code) {
|
|
|
+ code = parseInt(key, 10)
|
|
|
+ }
|
|
|
+ return function (e) {
|
|
|
+ if (e.keyCode === code) {
|
|
|
+ return handler.call(this, e)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * Install special array filters
|
|
|
+ */
|
|
|
+
|
|
|
+_.extend(filters, require('./array-filters'))
|