You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

User.kt 1.1KB

12345678910111213141516171819202122232425262728293031323334
  1. package com.dmdirc.ktirc.model
  2. data class User(
  3. var nickname: String,
  4. var ident: String? = null,
  5. var hostname: String? = null,
  6. var account: String? = null,
  7. var realName: String? = null,
  8. var awayMessage: String? = null
  9. ) {
  10. fun updateFrom(other: User) {
  11. nickname = other.nickname
  12. other.ident?.let { ident = it }
  13. other.hostname?.let { hostname = it }
  14. other.account?.let { account = it }
  15. other.realName?.let { realName = it }
  16. other.awayMessage?.let { awayMessage = it }
  17. }
  18. }
  19. fun ByteArray.asUser(): User {
  20. val string = String(this)
  21. val identOffset = string.indexOf('!')
  22. return if (identOffset >= 0) {
  23. val hostOffset = string.indexOf('@', identOffset)
  24. if (hostOffset >= 0) {
  25. User(string.substring(0 until identOffset), string.substring(identOffset + 1 until hostOffset), string.substring(hostOffset + 1))
  26. } else {
  27. User(string.substring(0 until identOffset), string.substring(identOffset + 1))
  28. }
  29. } else {
  30. User(string)
  31. }
  32. }