@@ -20,21 +20,18 @@ import com.starry.myne.repo.models.Author
2020import java.util.Locale
2121
2222object BookUtils {
23+
24+ /* *
25+ * Converts the list of authors into a single string.
26+ *
27+ * @param authors List of authors.
28+ * @return String representation of the authors.
29+ */
2330 fun getAuthorsAsString (authors : List <Author >): String {
24- return if (authors.isNotEmpty()) {
25- var result: String
26- if (authors.size > 1 ) {
27- result = fixAuthorName(authors.first().name)
28- authors.slice(1 until authors.size).forEach { author ->
29- if (author.name != " N/A" )
30- result + = " , ${fixAuthorName(author.name)} "
31- }
32- } else {
33- result = fixAuthorName(authors.first().name)
34- }
35- result
36- } else {
31+ return if (authors.isEmpty()) {
3732 " Unknown Author"
33+ } else {
34+ authors.joinToString(" , " ) { fixAuthorName(it.name) }
3835 }
3936 }
4037
@@ -43,44 +40,34 @@ object BookUtils {
4340 * reversed, where first name and last are separated by a comma
4441 * Eg: "Fyodor Dostoyevsky" becomes "Dostoyevsky, Fyodor", This
4542 * function fixes that and returns name in correct format.
43+ *
44+ * @param name Name of the author.
45+ * @return Name of the author in correct format.
4646 */
4747 private fun fixAuthorName (name : String ): String {
48- val reversed = name.split(" ," ).reversed()
49- return reversed.joinToString(separator = " " ) {
50- return @joinToString it.trim()
51- }
48+ return name.split(" ," ).reversed().joinToString(" " ) { it.trim() }
5249 }
5350
51+ /* *
52+ * Converts the list of languages into a single string.
53+ *
54+ * @param languages List of languages.
55+ * @return String representation of the languages.
56+ */
5457 fun getLanguagesAsString (languages : List <String >): String {
55- var result = " "
56- languages.forEachIndexed { index, lang ->
57- val loc = Locale (lang)
58- if (index == 0 ) {
59- result = loc.displayLanguage
60- } else {
61- result + = " , ${loc.displayLanguage} "
62- }
63- }
64- return result
58+ return languages.joinToString(" , " ) { Locale (it).displayLanguage }
6559 }
6660
61+ /* *
62+ * Converts the list of subjects into a single string.
63+ *
64+ * @param subjects List of subjects.
65+ * @param limit Maximum number of subjects to show.
66+ * @return String representation of the subjects.
67+ */
6768 fun getSubjectsAsString (subjects : List <String >, limit : Int ): String {
68- val allSubjects = ArrayList <String >()
69- // strip "--" from subjects.
70- subjects.forEach { subject ->
71- if (subject.contains(" --" )) {
72- allSubjects.addAll(subject.split(" --" ))
73- } else {
74- allSubjects.add(subject)
75- }
76- }
77- val truncatedSubs: List <String > = if (allSubjects.size > limit) {
78- allSubjects.toSet().toList().subList(0 , limit)
79- } else {
80- allSubjects.toSet().toList()
81- }
82- return truncatedSubs.joinToString(separator = " , " ) {
83- return @joinToString it.trim()
84- }
69+ val allSubjects = subjects.flatMap { it.split(" --" ) }.map { it.trim() }.toSet()
70+ val truncatedSubs = if (allSubjects.size > limit) allSubjects.take(limit) else allSubjects
71+ return truncatedSubs.joinToString(" , " )
8572 }
8673}
0 commit comments