Initial commit
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
import '../contracts/danmaku.dart';
|
||||
import 'danmaku_comment_merger.dart';
|
||||
|
||||
|
||||
List<DanmakuComment> processDanmakuComments(
|
||||
List<DanmakuComment> comments, {
|
||||
required List<String> blockedKeywords,
|
||||
required bool mergeDuplicates,
|
||||
}) {
|
||||
final visible = blockedKeywords.isEmpty
|
||||
? comments
|
||||
: comments
|
||||
.where((c) => blockedKeywords.every((kw) => !c.text.contains(kw)))
|
||||
.toList();
|
||||
final processed = mergeDuplicates
|
||||
? mergeDuplicateDanmakuComments(visible)
|
||||
: List<DanmakuComment>.of(visible);
|
||||
processed.sort((a, b) => a.time.compareTo(b.time));
|
||||
return processed;
|
||||
}
|
||||
|
||||
|
||||
int lowerBoundByTime(List<DanmakuComment> sortedByTime, double posSec) {
|
||||
var lo = 0;
|
||||
var hi = sortedByTime.length;
|
||||
while (lo < hi) {
|
||||
final mid = (lo + hi) >> 1;
|
||||
if (sortedByTime[mid].time < posSec) {
|
||||
lo = mid + 1;
|
||||
} else {
|
||||
hi = mid;
|
||||
}
|
||||
}
|
||||
return lo;
|
||||
}
|
||||
Reference in New Issue
Block a user