WebVTT::Builder: Add logic to escape special chars

This commit is contained in:
syeopite
2024-01-30 15:25:45 -08:00
parent 1c0b4205d4
commit 0ad2eff2a4
2 changed files with 59 additions and 22 deletions

View File

@@ -1,34 +1,27 @@
require "../../spec_helper.cr"
MockLines = [
{
"start_time": Time::Span.new(seconds: 1),
"end_time": Time::Span.new(seconds: 2),
"text": "Line 1",
},
{
"start_time": Time::Span.new(seconds: 2),
"end_time": Time::Span.new(seconds: 3),
"text": "Line 2",
},
]
MockLines = ["Line 1", "Line 2"]
MockLinesWithEscapableCharacter = ["<Line 1>", "&Line 2>", '\u200E' + "Line\u200F 3", "\u00A0Line 4"]
Spectator.describe "WebVTT::Builder" do
it "correctly builds a vtt file" do
result = WebVTT.build do |vtt|
MockLines.each do |line|
vtt.cue(line["start_time"], line["end_time"], line["text"])
2.times do |i|
vtt.cue(
Time::Span.new(seconds: i),
Time::Span.new(seconds: i + 1),
MockLines[i]
)
end
end
expect(result).to eq([
"WEBVTT",
"",
"00:00:01.000 --> 00:00:02.000",
"00:00:00.000 --> 00:00:01.000",
"Line 1",
"",
"00:00:02.000 --> 00:00:03.000",
"00:00:01.000 --> 00:00:02.000",
"Line 2",
"",
"",
@@ -42,8 +35,12 @@ Spectator.describe "WebVTT::Builder" do
}
result = WebVTT.build(setting_fields) do |vtt|
MockLines.each do |line|
vtt.cue(line["start_time"], line["end_time"], line["text"])
2.times do |i|
vtt.cue(
Time::Span.new(seconds: i),
Time::Span.new(seconds: i + 1),
MockLines[i]
)
end
end
@@ -52,13 +49,39 @@ Spectator.describe "WebVTT::Builder" do
"Kind: captions",
"Language: en",
"",
"00:00:01.000 --> 00:00:02.000",
"00:00:00.000 --> 00:00:01.000",
"Line 1",
"",
"00:00:02.000 --> 00:00:03.000",
"00:00:01.000 --> 00:00:02.000",
"Line 2",
"",
"",
].join('\n'))
end
it "properly escapes characters" do
result = WebVTT.build do |vtt|
4.times do |i|
vtt.cue(Time::Span.new(seconds: i), Time::Span.new(seconds: i + 1), MockLinesWithEscapableCharacter[i])
end
end
expect(result).to eq([
"WEBVTT",
"",
"00:00:00.000 --> 00:00:01.000",
"&lt;Line 1&gt;",
"",
"00:00:01.000 --> 00:00:02.000",
"&amp;Line 2&gt;",
"",
"00:00:02.000 --> 00:00:03.000",
"&lrm;Line&rlm; 3",
"",
"00:00:03.000 --> 00:00:04.000",
"&nbsp;Line 4",
"",
"",
].join('\n'))
end
end