JSDOC/TextStream.vala
[gnome.introspection-doc-generator] / JSDOC / TextStream.vala
1 //<script type="text/javscript">
2
3  
4
5 /**
6         @constructor
7 */
8 namespace JSDOC {
9     
10     public class TextStreamChar : Object {
11         public char c;
12         public bool eof;
13         public TextStreamChar(char val, bool eof=false) {
14             this.c = val;
15             this.eof = eof;
16         }
17     }
18     
19     public class TextStream : Object {
20         
21         string text;
22         int cursor;
23         
24         public TextStream (string text = "")
25         {
26             
27             
28             this.text = text;
29             this.cursor = 0;
30         }
31         
32         public TextStreamChar look(int n = 0) {
33                 
34                 
35             if (this.cursor+n < 0 || this.cursor+n >= this.text.length) {
36                 return new TextStreamChar('\0', true);
37             }
38             return  new TextStreamChar(this.text[this.cursor+n], false);
39         },
40     
41         public TextStreamChar? next(int n = 1)
42         {
43                 
44             if (n < 1) {
45                 return null;
46             }
47                 
48             var pulled = "";
49             for (var i = 0; i < n; i++) {
50                 if (this.cursor+i < this.text.length) {
51                     pulled += this.text.charAt(this.cursor+i);
52                 } else {
53                     return new TextStreamChar('\0', true);
54                     
55                 }
56             }
57             
58             this.cursor += n;
59             return  new TextStreamChar(pulled, false);
60            
61         }
62     });