32 lines
812 B
JavaScript
32 lines
812 B
JavaScript
import * as R from 'ramda'
|
|
|
|
import S from './sanctuary'
|
|
|
|
const formatLong = value => {
|
|
if (!value || value.length <= 20) return value
|
|
|
|
return `${value.slice(0, 8)}(...)${value.slice(
|
|
value.length - 8,
|
|
value.length
|
|
)}`
|
|
}
|
|
|
|
const toFirstLower = S.compose(S.joinWith(''))(R.adjust(0, S.toLower))
|
|
const toFirstUpper = S.compose(S.joinWith(''))(R.adjust(0, S.toUpper))
|
|
const onlyFirstToUpper = S.compose(toFirstUpper)(S.toLower)
|
|
|
|
const splitOnUpper = R.compose(
|
|
S.splitOn(' '),
|
|
R.replace(/([A-Z])/g, ' $1'),
|
|
toFirstLower
|
|
)
|
|
const startCase = R.compose(
|
|
S.joinWith(' '),
|
|
S.map(onlyFirstToUpper),
|
|
splitOnUpper
|
|
)
|
|
|
|
const singularOrPlural = (amount, singularStr, pluralStr) =>
|
|
parseInt(amount) === 1 ? singularStr : pluralStr
|
|
|
|
export { startCase, onlyFirstToUpper, formatLong, singularOrPlural }
|