mirror of
https://github.com/iv-org/invidious.git
synced 2026-09-07 01:22:49 -05:00
fix(comments): handle adjacent run boundaries
Use half-open command ranges so a zero-length attachment at the shared boundary of adjacent command runs is rendered exactly once. Add a regression spec for the boundary case.
This commit is contained in:
parent
ff8aa06f84
commit
2f1fac21f6
@ -147,4 +147,43 @@ Spectator.describe "parse_description" do
|
|||||||
"cd</a>"
|
"cd</a>"
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "assigns boundary attachments to only the following command run" do
|
||||||
|
description = JSON.parse(<<-JSON)
|
||||||
|
{
|
||||||
|
"content": "abcd",
|
||||||
|
"commandRuns": [
|
||||||
|
{
|
||||||
|
"startIndex": 0,
|
||||||
|
"length": 2,
|
||||||
|
"onTap": {"innertubeCommand": {"watchEndpoint": {"videoId": "first-video"}}}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"startIndex": 2,
|
||||||
|
"length": 2,
|
||||||
|
"onTap": {"innertubeCommand": {"watchEndpoint": {"videoId": "second-video"}}}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"attachmentRuns": [{
|
||||||
|
"startIndex": 2,
|
||||||
|
"length": 0,
|
||||||
|
"element": {
|
||||||
|
"type": {
|
||||||
|
"imageType": {
|
||||||
|
"image": {
|
||||||
|
"sources": [{"url": "https://lh3.googleusercontent.com/emoji-boundary=s16", "width": 16, "height": 16}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"properties": {"accessibilityProperties": {"label": "emoji-boundary"}}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
JSON
|
||||||
|
|
||||||
|
expect(parse_description(description, "video-id")).to eq(
|
||||||
|
%(<a href="/watch?v=first-video">ab</a>) +
|
||||||
|
%(<a href="/watch?v=second-video"><img alt="emoji-boundary" src="/ggpht/emoji-boundary=s16" title="emoji-boundary" width="16" height="16" class="channel-emoji" />cd</a>)
|
||||||
|
)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -99,7 +99,9 @@ private def attachment_run_inside_command?(attachment, command) : Bool
|
|||||||
command_start = command["startIndex"].as_i
|
command_start = command["startIndex"].as_i
|
||||||
command_end = command_start + command["length"].as_i
|
command_end = command_start + command["length"].as_i
|
||||||
|
|
||||||
attachment_start >= command_start && attachment_end <= command_end
|
attachment_start >= command_start &&
|
||||||
|
attachment_start < command_end &&
|
||||||
|
attachment_end <= command_end
|
||||||
end
|
end
|
||||||
|
|
||||||
private def parse_command_run(command, nested_attachments, iter, video_id : String) : String
|
private def parse_command_run(command, nested_attachments, iter, video_id : String) : String
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user