Jan Damborsky wrote:
> [...]
>
>>>
>>>
>>>>
>>>> Additionally, I think the code from 470-495 and 514-522 or so could 
>>>> be greatly simplified by using the builtin splitlines function, 
>>>> which splits a string at newline characters and returns them in an 
>>>> array:
>>>> for line in some_long_string.splitlines():
>>>>    log(line)
>>>>   However, I haven't taken a deep look at this code, so if I'm 
>>>> oversimplifying just ignore me.
>>>
>>> The problem here is that we need to keep the last line in the buffer
>>> if it is incomplete (not terminated with '\n') and not log it -
>>> I think (I might be wrong since I haven't tried) that the suggested
>>> change wouldn't address this aspect.
>>
>> Ah, I see now. If you wanted to, you could store the splitlines as such:
>>
>> lines = string_to_log.splitlines(True)
>> last_line = lines[-1]
>> for line in lines[:-1]:
>>    log(line)
>>
>> That would log everything but the last line, and save the last line 
>> for later processing. You could then process the last line as before. 
>> The True parameter to splitlines preserves the \n for each piece, e.g.:
>>
>> "Hello\nThis is a string\n" becomes ["Hello\n", "This is a string\n"]
>> and
>> "Hello\nThis is a string too" becomes ["Hello\n", "This is a string 
>> too"]
>>
>> Again, this is just a suggestion, feel free to take it or leave it.
>
> Hi Keith,
>
> I have tried to go with this solutions, since using
> splitlines() looks like better approach, but I have
> realized that I still need to process last line separately,
> since we want to keep it for later processing
> only if it is incomplete. Otherwise, we want to log it
> immediately. The final solution then was not so elegant,
> so if you agree, at this point I would go with the original
> approach.

That's fine by me. I was just throwing the suggestion out there. Thanks 
for taking the time to consider it.

- Keith

>
> Thank you for thinking about this,
> Jan
>

Reply via email to