View Javadoc

1   package com.aragost.javahg.internals;
2   
3   import java.io.IOException;
4   import java.util.Iterator;
5   import java.util.NoSuchElementException;
6   
7   public class LineIterator implements Iterator<String>, Iterable<String> {
8   
9       private boolean atEnd = false;
10  
11      private HgInputStream stream;
12  
13      public LineIterator(HgInputStream stream) {
14          this.stream = stream;
15      }
16  
17      public Iterator<String> iterator() {
18          return this;
19      }
20  
21      public boolean hasNext() {
22          if (!this.atEnd) {
23              try {
24                  this.atEnd = (this.stream.isEof());
25              } catch (IOException e) {
26                  throw new RuntimeIOException(e);
27              }
28          }
29          return !this.atEnd;
30      }
31  
32      public String next() {
33          if (hasNext()) {
34              try {
35                  return this.stream.textUpTo('\n');
36              } catch (IOException e) {
37                  throw new RuntimeIOException(e);
38              }
39          } else {
40              throw new NoSuchElementException();
41          }
42      }
43  
44      public void remove() {
45          throw new UnsupportedOperationException();
46      }
47  
48  }