-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix issues when selection is entire section but filter function expects list #18
base: master
Are you sure you want to change the base?
fix issues when selection is entire section but filter function expects list #18
Conversation
…ts a list - `Subtitles._get_selection()`: always return a list - `Subtitles._process_selection()`: always call `_get_selection()` for items to process
Co-authored-by: FichteFoll <[email protected]>
Co-authored-by: FichteFoll <[email protected]>
for i, line in zip(indices, lines): | ||
section[i] = line | ||
|
||
f(lines) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reading this code properly, I'm convinced that _process_selection
should call the provided callback with each line as the argument and not a list of lines so that it would be sortable since that would technically also allow modifying the list's size (by adding or removing entries) and the following code wouldn't handle that properly.
Sorting should then use a _sort_selection
handler that accepts a key
function as the parameter which will then be used on the list that is extracted similarly to how it happens in _process_selection
currently because that is a still a decent way to implement this.
Now that's all about internal code, but I like clean APIs also for internal calls. It would also have likely made the bug being fixed here more obvious.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As a clarification, that's not meant as a request to change the PR. I was just rambling about it as I was reading the code. You're still free to implement it that way, of course, and split the two different kinds of usages of _process_lines
.
Always returning a list in _get_selection
may not be a bad thing either but it does have a tiny bit of overhead when it may not be needed most of the time.
Fixes issue with both
sort_field
andsort_expression
, which are using functionality specific tolist
(others filters might as well). Current version fails to sort without a selection:Changes:
Subtitles._get_selection()
Subtitles._process_selection()
_get_selection()
for items to process