- private fun Map<String, Any?>.parseInt(key: String) = this[key]?.toString()?.toInt()
-
- private fun getPartsToRender(parameters: MutableMap<String, Any?>?, parts: Iterable<Part>): Iterable<Part> {
- val length = parameters?.parseInt("length") ?: -1
- val cutOffLength = parameters?.parseInt("cut-off-length") ?: length
- if (length > -1) {
- var allPartsLength = 0
- val shortenedParts = ArrayList<Part>()
- for (part in parts) {
- if (part is PlainTextPart) {
- val longText = part.text
- if (allPartsLength < cutOffLength) {
- if (allPartsLength + longText.length > cutOffLength) {
- shortenedParts.add(PlainTextPart(longText.substring(0, cutOffLength - allPartsLength) + "…"))
- } else {
- shortenedParts.add(part)
- }
- }
- allPartsLength += longText.length
- } else if (part is LinkPart) {
- if (allPartsLength < cutOffLength) {
- shortenedParts.add(part)
- }
- allPartsLength += part.text.length
- } else {
- if (allPartsLength < cutOffLength) {
- shortenedParts.add(part)
- }
- }
- }
- if (allPartsLength >= length) {
- return shortenedParts
- }
- }
- return parts
- }
-