tree 82d757a15efe80eddd3cfeb7e047312041142582
parent a4b44a986a1f1caf7bbdd6fa37bd6d45a55ee77e
author Nate Bosch <nbosch@google.com> 1664296245 -0700
committer GitHub <noreply@github.com> 1664296245 -0700
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJjMyU1CRBK7hj4Ov3rIwAAMrMIAEa18et9XQPXgPYOcJOrHy3l
 txCT3EXivwKP9X4OZi6u2C2nn8jbBA4LwL4RTH9DScvehPq73KDSW6hJe0U+GFEu
 vbNmon2Fi6/VAr9SiWR3Oe8aFk6V1mowSaf0jMMmXHgVwqvAuSVEMdQvrmvOm1aG
 J1lPhzE0xqqNnvbsfs54Q1oh5u1WTkD4StT+yT57JOISYRaC7XUmy+h36ah32Rkb
 ilSRhCZLRdc/UZhhYlYQg0QcckID4tW8t3EuAa3red2dT9whL9DHQjhTbdqjb6J1
 OZtn/pIHk0WwaDZV83WUlPbkIUc7E4QH8UcJED0jrmseGHKlBEwECReVVm71UV8=
 =jD1U
 -----END PGP SIGNATURE-----
 

Simplify the IntlStream class (#494)

Remove some unnecessary use of `dynamic`. This class was written to
operate over `List` instances, but the use case for a List contents is
only a small bit of the functionality. The functionality used over a
List content is non-overlapping with the subset of functionality use for
String content.

- Use a list literal with a for loop to filter matching indexes.
- Make The `contents` field a `String` and remove all conditional
  branches handling `List` instances.
- Remove unused `findIndex` and `findIndexes` methods.
- Make `peek` and `rest` concretely return `String` instead of
  `dynamic`.
- Make the arguments to `nextInteger` positional and required since they
  are always passed and this is package private.
- Add a TODO about merging with StringIterator. The two classes have
  overlapping functionality, but different enough APIs that it will be a
  noisier cleanup.
- Make the setter for the `index` property private.