From eba994a1385012ca47f36ac9d33e4044fb42d50d Mon Sep 17 00:00:00 2001
From: Marijn Haverbeke <marijn@haverbeke.nl>
Date: Thu, 2 Feb 2017 14:26:03 +0100
Subject: [PATCH] Use an ES6 class for StringStream

---
 src/util/StringStream.js | 62 ++++++++++++++++++++--------------------
 1 file changed, 31 insertions(+), 31 deletions(-)

diff --git a/src/util/StringStream.js b/src/util/StringStream.js
index 92dbc6906..0f7af07ca 100644
--- a/src/util/StringStream.js
+++ b/src/util/StringStream.js
@@ -5,57 +5,57 @@ import { countColumn } from "./misc"
 // Fed to the mode parsers, provides helper functions to make
 // parsers more succinct.
 
-let StringStream = function(string, tabSize) {
-  this.pos = this.start = 0
-  this.string = string
-  this.tabSize = tabSize || 8
-  this.lastColumnPos = this.lastColumnValue = 0
-  this.lineStart = 0
-}
+class StringStream {
+  constructor(string, tabSize) {
+    this.pos = this.start = 0
+    this.string = string
+    this.tabSize = tabSize || 8
+    this.lastColumnPos = this.lastColumnValue = 0
+    this.lineStart = 0
+  }
 
-StringStream.prototype = {
-  eol: function() {return this.pos >= this.string.length},
-  sol: function() {return this.pos == this.lineStart},
-  peek: function() {return this.string.charAt(this.pos) || undefined},
-  next: function() {
+  eol() {return this.pos >= this.string.length}
+  sol() {return this.pos == this.lineStart}
+  peek() {return this.string.charAt(this.pos) || undefined}
+  next() {
     if (this.pos < this.string.length)
       return this.string.charAt(this.pos++)
-  },
-  eat: function(match) {
+  }
+  eat(match) {
     let ch = this.string.charAt(this.pos)
     let ok
     if (typeof match == "string") ok = ch == match
     else ok = ch && (match.test ? match.test(ch) : match(ch))
     if (ok) {++this.pos; return ch}
-  },
-  eatWhile: function(match) {
+  }
+  eatWhile(match) {
     let start = this.pos
     while (this.eat(match)){}
     return this.pos > start
-  },
-  eatSpace: function() {
+  }
+  eatSpace() {
     let start = this.pos
     while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos
     return this.pos > start
-  },
-  skipToEnd: function() {this.pos = this.string.length},
-  skipTo: function(ch) {
+  }
+  skipToEnd() {this.pos = this.string.length}
+  skipTo(ch) {
     let found = this.string.indexOf(ch, this.pos)
     if (found > -1) {this.pos = found; return true}
-  },
-  backUp: function(n) {this.pos -= n},
-  column: function() {
+  }
+  backUp(n) {this.pos -= n}
+  column() {
     if (this.lastColumnPos < this.start) {
       this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue)
       this.lastColumnPos = this.start
     }
     return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)
-  },
-  indentation: function() {
+  }
+  indentation() {
     return countColumn(this.string, null, this.tabSize) -
       (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)
-  },
-  match: function(pattern, consume, caseInsensitive) {
+  }
+  match(pattern, consume, caseInsensitive) {
     if (typeof pattern == "string") {
       let cased = str => caseInsensitive ? str.toLowerCase() : str
       let substr = this.string.substr(this.pos, pattern.length)
@@ -69,9 +69,9 @@ StringStream.prototype = {
       if (match && consume !== false) this.pos += match[0].length
       return match
     }
-  },
-  current: function(){return this.string.slice(this.start, this.pos)},
-  hideFirstChars: function(n, inner) {
+  }
+  current(){return this.string.slice(this.start, this.pos)}
+  hideFirstChars(n, inner) {
     this.lineStart += n
     try { return inner() }
     finally { this.lineStart -= n }
-- 
GitLab