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

1234567891011121314151617181920212223242526272829303132333435
  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() = String(this).asUser()
  20. fun String.asUser(): User {
  21. val identOffset = indexOf('!')
  22. return if (identOffset >= 0) {
  23. val hostOffset = indexOf('@', identOffset)
  24. if (hostOffset >= 0) {
  25. User(substring(0 until identOffset), substring(identOffset + 1 until hostOffset), substring(hostOffset + 1))
  26. } else {
  27. User(substring(0 until identOffset), substring(identOffset + 1))
  28. }
  29. } else {
  30. User(this)
  31. }
  32. }