package com.craigvg.lichun_android.utils /** * Parse pipe-delimited interest string into a list. * E.g. "music|sports|reading" -> ["music", "sports", "reading"] */ fun String.parseInterests(): List { if (isBlank()) return emptyList() return split("|").map { it.trim() }.filter { it.isNotEmpty() } } /** * Returns a Material Symbol name for a given interest string. * Maps common interests to Android Material Icons. */ fun String.interestIconName(): String { val iconMap = mapOf( "music" to "MusicNote", "sports" to "SportsBasketball", "reading" to "MenuBook", "books" to "MenuBook", "movies" to "Movie", "films" to "Movie", "travel" to "Flight", "traveling" to "Flight", "cooking" to "LocalFireDepartment", "gaming" to "SportsEsports", "games" to "SportsEsports", "art" to "Palette", "painting" to "Palette", "fitness" to "FitnessCenter", "gym" to "FitnessCenter", "technology" to "Computer", "tech" to "Computer", "photography" to "CameraAlt", "photos" to "CameraAlt", "dancing" to "MusicNote", "dance" to "MusicNote", "hiking" to "Hiking", "nature" to "Park", "outdoors" to "Park", "writing" to "Edit", "yoga" to "SelfImprovement", "meditation" to "SelfImprovement", "coffee" to "Coffee", "food" to "Restaurant", "shopping" to "ShoppingCart", "fashion" to "Checkroom", "pets" to "Pets", "animals" to "Pets", "science" to "Science", "astronomy" to "NightsStay", "cars" to "DirectionsCar", "cycling" to "PedalBike" ) return iconMap[this.lowercase()] ?: "Star" } /** * Format a name with proper capitalization */ fun String.formatName(): String { return split(" ").joinToString(" ") { word -> word.replaceFirstChar { it.uppercase() } } }