Move prefix length out of for loop

It is cached so it only needs to be computed once.

Contributes to issue CURA-34.
This commit is contained in:
Ghostkeeper 2015-12-16 15:13:13 +01:00
parent cfa4382052
commit 6908f2c011
2 changed files with 7 additions and 5 deletions

View file

@ -30,14 +30,15 @@ class GCodeProfileReader(ProfileReader):
# None \endcode is returned. # None \endcode is returned.
def read(self, file_name): def read(self, file_name):
prefix = ";SETTING_" + str(version) + " " prefix = ";SETTING_" + str(version) + " "
prefix_length = len(prefix)
#Loading all settings from the file. They are all at the end, but Python has no reverse seek any more since Python3. TODO: Consider moving settings to the start? #Loading all settings from the file. They are all at the end, but Python has no reverse seek any more since Python3. TODO: Consider moving settings to the start?
serialised = "" #Will be filled with the serialised profile. serialised = "" #Will be filled with the serialised profile.
try: try:
with open(file_name) as f: with open(file_name) as f:
for line in f: for line in f:
if line.startswith(prefix): if line.startswith(prefix):
serialised += line[len(prefix):-1] #Remove the prefix and the newline from the line, and add it to the rest. serialised += line[prefix_length : -1] #Remove the prefix and the newline from the line, and add it to the rest.
except IOError as e: except IOError as e:
Logger.log("e", "Unable to open file %s for reading: %s", file_name, str(e)) Logger.log("e", "Unable to open file %s for reading: %s", file_name, str(e))
return None return None

View file

@ -15,7 +15,7 @@ class GCodeWriter(MeshWriter):
# written with. If the file format is changed in a way that breaks reverse # written with. If the file format is changed in a way that breaks reverse
# compatibility, increment this version number! # compatibility, increment this version number!
version = 1 version = 1
def __init__(self): def __init__(self):
super().__init__() super().__init__()
@ -44,6 +44,7 @@ class GCodeWriter(MeshWriter):
# \return A serialised string of the profile. # \return A serialised string of the profile.
def _serialiseProfile(self, profile): def _serialiseProfile(self, profile):
prefix = ";SETTING_" + str(version) + " " #The prefix to put before each line. prefix = ";SETTING_" + str(version) + " " #The prefix to put before each line.
prefix_length = len(prefix)
serialised = profile.serialise() serialised = profile.serialise()
@ -60,8 +61,8 @@ class GCodeWriter(MeshWriter):
#Introduce line breaks so that each comment is no longer than 80 characters. Prepend each line with the prefix. #Introduce line breaks so that each comment is no longer than 80 characters. Prepend each line with the prefix.
result = "" result = ""
for pos in range(0, len(serialised), 80 - len(prefix)): #Lines have 80 characters, so the payload of each line is 80 - prefix. for pos in range(0, len(serialised), 80 - prefix_length): #Lines have 80 characters, so the payload of each line is 80 - prefix.
result += prefix + serialised[pos : pos + 80 - len(prefix)] + "\n" result += prefix + serialised[pos : pos + 80 - prefix_length] + "\n"
serialised = result serialised = result
return serialised return serialised