This repository has been archived on 2023-08-30. You can view files and clone it, but cannot push or open issues/pull-requests.
bytedo
/
anot
Archived
1
0
Fork 0
anot/src/filters/index.js

60 lines
1.4 KiB
JavaScript

import { Anot } from '../seed/core'
import { numberFilter } from './number'
import { xss } from './xss'
import { dateFilter } from './date'
import { filterBy, orderBy, selectBy, limitBy } from './array'
// import { eventFilters } from './event'
import { escapeFilter } from './escape'
var filters = (Anot.filters = {})
Anot.composeFilters = function(...args) {
return function(value) {
for (let arr of args) {
var name = arr[0]
var filter = Anot.filters[name]
if (typeof filter === 'function') {
arr[0] = value
try {
value = filter.apply(0, arr)
} catch (e) {}
}
}
return value
}
}
Anot.escapeHtml = escapeFilter
Anot.mix(
filters,
{
uppercase(str) {
return String(str).toUpperCase()
},
lowercase(str) {
return String(str).toLowerCase()
},
truncate(str, len, mark) {
len = len || 30
mark = typeof mark === 'string' ? mark : '...'
return str.slice(0, len) + (str.length <= len ? '' : mark)
},
camelize: Anot.camelize,
date: dateFilter,
escape: escapeFilter,
xss,
number: numberFilter,
currency(amount, symbol, fractionSize) {
return (
(symbol || '\u00a5') +
numberFilter(amount, isFinite(fractionSize) ? fractionSize : 2)
)
}
},
{ filterBy, orderBy, selectBy, limitBy }
// eventFilters
)
export { Anot }
前端迷你mvvm框架。基于司徒正美的`avalon2.x`版精简修改而来。
JavaScript 100%