diff --git a/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Themes/HighlightingDefinitions/Dark/DiffHighlightingDefinition.cs b/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Themes/HighlightingDefinitions/Dark/DiffHighlightingDefinition.cs index 6033940..e767338 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Themes/HighlightingDefinitions/Dark/DiffHighlightingDefinition.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Themes/HighlightingDefinitions/Dark/DiffHighlightingDefinition.cs @@ -15,7 +15,6 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -using ICSharpCode.AvalonEdit.Document; using ICSharpCode.AvalonEdit.Highlighting; using ICSharpCode.AvalonEdit.Rendering; using System.Collections.Generic; diff --git a/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Themes/HighlightingDefinitions/Dark/M3UHighlightingDefinition.cs b/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Themes/HighlightingDefinitions/Dark/M3UHighlightingDefinition.cs new file mode 100644 index 0000000..fdce4a0 --- /dev/null +++ b/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Themes/HighlightingDefinitions/Dark/M3UHighlightingDefinition.cs @@ -0,0 +1,73 @@ +// Copyright © 2017-2026 QL-Win Contributors +// +// This file is part of QuickLook program. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +using ICSharpCode.AvalonEdit.Highlighting; +using ICSharpCode.AvalonEdit.Rendering; +using System.Collections.Generic; +using System.Text.RegularExpressions; + +namespace QuickLook.Plugin.TextViewer.Themes.HighlightingDefinitions.Dark; + +public class M3UHighlightingDefinition : DarkHighlightingDefinition +{ + public override string Name => "M3U Playlist"; + + public override string Extension => ".m3u;.m3u8"; + + public override HighlightingRuleSet MainRuleSet => new() + { + Rules = + { + new HighlightingRule + { + Regex = new Regex(@"^#.*", RegexOptions.Compiled), + Color = GetNamedColor("Comment") + }, + new HighlightingRule + { + Regex = new Regex(@"^#EXT[\w\-:.,=\s]*", RegexOptions.Compiled | RegexOptions.IgnoreCase), + Color = GetNamedColor("Tag") + }, + } + }; + + public override HighlightingColor GetNamedColor(string name) + { + return name switch + { + "Comment" => new HighlightingColor + { + Name = "Comment", + Foreground = new SimpleHighlightingBrush("#6A9949".ToColor()), + }, + "Tag" => new HighlightingColor + { + Name = "Tag", + Foreground = new SimpleHighlightingBrush("#8AB4F8".ToColor()), + }, + _ => null, + }; + } + + public override IEnumerable NamedHighlightingColors => + [ + GetNamedColor("Comment"), + GetNamedColor("Tag"), + ]; + + public override DocumentColorizingTransformer[] LineTransformers { get; } = []; +} diff --git a/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Themes/HighlightingDefinitions/Light/DiffHighlightingDefinition.cs b/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Themes/HighlightingDefinitions/Light/DiffHighlightingDefinition.cs index 7f19b77..75cb40f 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Themes/HighlightingDefinitions/Light/DiffHighlightingDefinition.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Themes/HighlightingDefinitions/Light/DiffHighlightingDefinition.cs @@ -15,7 +15,6 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -using ICSharpCode.AvalonEdit.Document; using ICSharpCode.AvalonEdit.Highlighting; using ICSharpCode.AvalonEdit.Rendering; using System.Collections.Generic; diff --git a/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Themes/HighlightingDefinitions/Light/M3UHighlightingDefinition.cs b/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Themes/HighlightingDefinitions/Light/M3UHighlightingDefinition.cs new file mode 100644 index 0000000..dfe41ef --- /dev/null +++ b/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Themes/HighlightingDefinitions/Light/M3UHighlightingDefinition.cs @@ -0,0 +1,73 @@ +// Copyright © 2017-2026 QL-Win Contributors +// +// This file is part of QuickLook program. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +using ICSharpCode.AvalonEdit.Highlighting; +using ICSharpCode.AvalonEdit.Rendering; +using System.Collections.Generic; +using System.Text.RegularExpressions; + +namespace QuickLook.Plugin.TextViewer.Themes.HighlightingDefinitions.Light; + +public class M3UHighlightingDefinition : LightHighlightingDefinition +{ + public override string Name => "M3U Playlist"; + + public override string Extension => ".m3u;.m3u8"; + + public override HighlightingRuleSet MainRuleSet => new() + { + Rules = + { + new HighlightingRule + { + Regex = new Regex(@"^#.*", RegexOptions.Compiled), + Color = GetNamedColor("Comment") + }, + new HighlightingRule + { + Regex = new Regex(@"^#EXT[\w\-:.,=\s]*", RegexOptions.Compiled | RegexOptions.IgnoreCase), + Color = GetNamedColor("Tag") + }, + } + }; + + public override HighlightingColor GetNamedColor(string name) + { + return name switch + { + "Comment" => new HighlightingColor + { + Name = "Comment", + Foreground = new SimpleHighlightingBrush("#008000".ToColor()), + }, + "Tag" => new HighlightingColor + { + Name = "Tag", + Foreground = new SimpleHighlightingBrush("#2B91AF".ToColor()), + }, + _ => null, + }; + } + + public override IEnumerable NamedHighlightingColors => + [ + GetNamedColor("Comment"), + GetNamedColor("Tag"), + ]; + + public override DocumentColorizingTransformer[] LineTransformers { get; } = []; +}