@@ -14,7 +14,7 @@ export eq, lteq, hash, is_empty, is_not_empty, is_whitespace, byte_len,
14
14
char_at, bytes, is_ascii, shift_byte, pop_byte,
15
15
unsafe_from_byte, unsafe_from_bytes, from_char, char_range_at,
16
16
from_cstr, sbuf, as_buf, push_byte, utf8_char_width, safe_slice,
17
- contains, iter_chars, chars_iter, bytes_iter,
17
+ contains, iter_chars, chars_iter, bytes_iter, words_iter,
18
18
loop_chars, loop_chars_sub, escape, any, all, map, windowed;
19
19
20
20
#[abi = "cdecl"]
@@ -914,6 +914,15 @@ fn words(ss: str) -> [str] {
914
914
{|w| 0u < str::char_len(w)});
915
915
}
916
916
917
+ /*
918
+ Function: words_iter
919
+
920
+ Apply a function to each word
921
+ */
922
+ fn words_iter(ss: str, ff: fn&(&&str)) {
923
+ vec::iter(words(ss), ff)
924
+ }
925
+
917
926
/*
918
927
Function: concat
919
928
@@ -1649,7 +1658,7 @@ mod tests {
1649
1658
i += 1;
1650
1659
}
1651
1660
1652
- iter_chars("") {|ch | fail; } // should not fail
1661
+ iter_chars("") {|_ch | fail; } // should not fail
1653
1662
}
1654
1663
1655
1664
#[test]
@@ -1683,6 +1692,29 @@ mod tests {
1683
1692
bytes_iter("") {|bb| assert bb == 0u8; }
1684
1693
}
1685
1694
1695
+ #[test]
1696
+ fn test_words_iter() {
1697
+ let data = "\nMary had a little lamb\nLittle lamb\n";
1698
+
1699
+ let ii = 0;
1700
+
1701
+ words_iter(data) {|ww|
1702
+ alt ii {
1703
+ 0 { assert "Mary" == ww; }
1704
+ 1 { assert "had" == ww; }
1705
+ 2 { assert "a" == ww; }
1706
+ 3 { assert "little" == ww; }
1707
+ _ { () }
1708
+ }
1709
+ ii += 1;
1710
+ }
1711
+ }
1712
+
1713
+ #[test]
1714
+ fn test_words_iter_() {
1715
+ words_iter("") {|_ww| fail; } // should not fail
1716
+ }
1717
+
1686
1718
#[test]
1687
1719
fn test_escape() {
1688
1720
assert(escape("abcdef") == "abcdef");
0 commit comments