All files / plugins truncate.js

100% Statements 7/7
50% Branches 4/8
100% Functions 2/2
100% Lines 7/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20                  1x 2x 2x   2x     1x 1x 1x  
import {toStr} from "../helpers/string/to_string";
import {substring} from "./substr";
import {clip} from "../helpers/number/clip"
import {toInt} from "../helpers/number/to_integer";
import { MAX_SAFE_INTEGER } from "../helpers/number/const";
 
/*
* Truncates `subject` to a new `length` with specified ending.
* */
export const truncate = (s, len = 0, end = '...') => {
  let _s = toStr(s)
  let _len = !len ? _s.length : clip(toInt(len), 0, MAX_SAFE_INTEGER)
 
  return substring(_s, 0, _len) + (_s.length === _len ? '' : end)
}
 
export const truncateWithAlign = (s, len = 0, end = '...') => {
  const truncatedText = truncate(s, len, '')
  return truncatedText.slice(s, truncatedText.lastIndexOf(" ")) + end
}