+ },
+ send: function(tokens) {
+ this.websocket.send(unparser.untokenize(tokens));
+ }
+}
+
+let unparser = {
+ quote: function(str) {
+ let quoted = ['"'];
+ for (let i = 0; i < str.length; i++) {
+ let c = str[i];
+ if (c in ['"', '\\']) {
+ quoted.push('\\');
+ };
+ quoted.push(c);
+ }
+ quoted.push('"');
+ return quoted.join('');
+ },
+ to_yx: function(yx_coordinate) {
+ return "Y:" + yx_coordinate[0] + ",X:" + yx_coordinate[1];
+ },
+ untokenize: function(tokens) {
+ let quoted_tokens = [];
+ for (let token of tokens) {
+ quoted_tokens.push(this.quote(token));
+ }
+ return quoted_tokens.join(" ");