(&self)
| 364 | } |
| 365 | |
| 366 | pub fn istitle(&self) -> bool { |
| 367 | if self.elements.is_empty() { |
| 368 | return false; |
| 369 | } |
| 370 | |
| 371 | let mut iter = self.elements.iter().peekable(); |
| 372 | let mut prev_cased = false; |
| 373 | |
| 374 | while let Some(c) = iter.next() { |
| 375 | let current = char::from(*c); |
| 376 | let next = if let Some(k) = iter.peek() { |
| 377 | char::from(**k) |
| 378 | } else if current.is_uppercase() { |
| 379 | return !prev_cased; |
| 380 | } else { |
| 381 | return prev_cased; |
| 382 | }; |
| 383 | |
| 384 | let is_cased = current.to_uppercase().next().unwrap() != current |
| 385 | || current.to_lowercase().next().unwrap() != current; |
| 386 | if (is_cased && next.is_uppercase() && !prev_cased) |
| 387 | || (!is_cased && next.is_lowercase()) |
| 388 | { |
| 389 | return false; |
| 390 | } |
| 391 | |
| 392 | prev_cased = is_cased; |
| 393 | } |
| 394 | |
| 395 | true |
| 396 | } |
| 397 | |
| 398 | pub fn lower(&self) -> Vec<u8> { |
| 399 | self.elements.to_ascii_lowercase() |
no test coverage detected