Skip to content

Commit

Permalink
Merge pull request #26 from codeman38/unicodefix
Browse files Browse the repository at this point in the history
Better handling of encoding/decoding Unicode strings.
  • Loading branch information
henrikpersson committed Aug 16, 2013
2 parents 29204d8 + a813829 commit 683792f
Showing 1 changed file with 12 additions and 19 deletions.
31 changes: 12 additions & 19 deletions rsub.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,31 +22,26 @@
server = None


# in python 2 bytes() is an alias for str(), but not accepting the encoding parameter
if int(sys.version[:3][0]) < 3:
def bytes(string,encoding=None):
return str(string)

def say(msg):
print ('[rsub] ' + msg)


class Session:
def __init__(self, socket):
self.env = {}
self.file = ""
self.file = b""
self.file_size = 0
self.in_file = False
self.parse_done = False
self.socket = socket
self.temp_path = None

def parse_input(self, input_line):
if (input_line.strip() == "open" or self.parse_done is True):
if (input_line.strip() == b"open" or self.parse_done is True):
return

if(self.in_file is False):
input_line = input_line.strip()
input_line = input_line.decode("utf8").strip()
if (input_line == ""):
return
k, v = input_line.split(":", 1)
Expand All @@ -59,7 +54,7 @@ def parse_input(self, input_line):
self.parse_file(input_line)

def parse_file(self, line):
if(len(self.file) >= self.file_size and line == ".\n"):
if(len(self.file) >= self.file_size and line == b".\n"):
self.in_file = False
self.parse_done = True
sublime.set_timeout(self.on_done, 0)
Expand All @@ -68,7 +63,7 @@ def parse_file(self, line):

def close(self):
self.socket.send(b"close\n")
self.socket.send(b"token: " + bytes(self.env['token'],encoding="utf8") + b"\n")
self.socket.send(b"token: " + self.env['token'].encode("utf8") + b"\n")
self.socket.send(b"\n")
self.socket.shutdown(socket.SHUT_RDWR)
self.socket.close()
Expand All @@ -77,14 +72,12 @@ def close(self):

def send_save(self):
self.socket.send(b"save\n")
self.socket.send(b"token: " + bytes(self.env['token'],encoding="utf8") + b"\n")
temp_file = open(self.temp_path, "rU")
new_file = ""
for line in temp_file:
new_file += line
self.socket.send(b"token: " + self.env['token'].encode("utf8") + b"\n")
temp_file = open(self.temp_path, "rb")
new_file = temp_file.read()
temp_file.close()
self.socket.send(b"data: " + bytes(str(len(new_file)),encoding="utf8") + b"\n")
self.socket.send(bytes(new_file,encoding="utf8"))
self.socket.send(b"data: " + str(len(new_file)).encode("utf8") + b"\n")
self.socket.send(new_file)
self.socket.send(b"\n")

def on_done(self):
Expand All @@ -98,7 +91,7 @@ def on_done(self):
return
self.temp_path = os.path.join(self.temp_dir, os.path.basename(self.env['display-name'].split(':')[-1]))
try:
temp_file = open(self.temp_path, "w+")
temp_file = open(self.temp_path, "wb+")
temp_file.write(self.file[:self.file_size])
temp_file.flush()
temp_file.close()
Expand Down Expand Up @@ -138,7 +131,7 @@ def handle(self):
session = Session(self.request)
self.request.send(b"Sublime Text 2 (rsub plugin)\n")

socket_fd = self.request.makefile()
socket_fd = self.request.makefile("rb")
while True:
line = socket_fd.readline()
if(len(line) == 0):
Expand Down

0 comments on commit 683792f

Please sign in to comment.