Skip to content

Commit eccdc82

Browse files
authored
improve regular expressions for image links (#244)
1 parent dd594db commit eccdc82

File tree

2 files changed

+12
-11
lines changed

2 files changed

+12
-11
lines changed

cleanrepo/CleanRepo/Program.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ static void RunOptions(Options options)
152152

153153
// Add regex to find image refs similar to 'social_image_url: "/dotnet/media/logo.png"'
154154
// This is done here (dynamically) because it relies on knowing the base path URL.
155-
docFxRepo.ImageLinkRegExes.Add($"social_image_url: ?\"?({docFxRepo.UrlBasePath}.*?(\\.(png|jpg|gif|svg))+)");
155+
docFxRepo.ImageLinkRegExes.Add($"social_image_url: ?\"?(?<path>{docFxRepo.UrlBasePath}.*?(\\.(png|jpg|gif|svg))+)");
156156

157157
// Gather media file names.
158158
if (docFxRepo.ImageRefs is null)
@@ -194,7 +194,7 @@ static void RunOptions(Options options)
194194

195195
// Add regex to find image refs similar to 'social_image_url: "/dotnet/media/logo.png"'
196196
// This is done here (dynamically) because it relies on knowing the base path URL.
197-
docFxRepo.ImageLinkRegExes.Add($"social_image_url: ?\"?({docFxRepo.UrlBasePath}.*?(\\.(png|jpg|gif|svg))+)");
197+
docFxRepo.ImageLinkRegExes.Add($"social_image_url: ?\"?(?<path>{docFxRepo.UrlBasePath}.*?(\\.(png|jpg|gif|svg))+)");
198198

199199
// Gather media file names.
200200
if (docFxRepo.ImageRefs is null)

cleanrepo/CleanRepo/Repo.cs

+10-9
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,15 @@ class DocFxRepo
2222
internal Dictionary<string, List<string>> ImageRefs = null;
2323
internal readonly List<string> ImageLinkRegExes = new List<string>
2424
{
25-
@"\]\((.*?(\.(png|jpg|gif|svg))+)", // ![hello](media/how-to/xamarin.png)
26-
"<img[^>]*?src[ ]*=[ ]*\"([^>]*?(\\.(png|gif|jpg|svg))+)[ ]*\"", // <img data-hoverimage="./images/start.svg" src="./images/start.png" alt="Start icon" />
27-
@"\[.*\]:(.*?(\.(png|gif|jpg|svg))+)", // [0]: ../../media/how-to/xamarin.png
28-
@"imageSrc:([^:]*?(\.(png|gif|jpg|svg))+)", // imageSrc: ./media/vs-mac.svg
29-
@"thumbnailUrl: (.*?(\.(png|gif|jpg|svg))+)", // thumbnailUrl: /thumbs/two-forest.png
30-
"lightbox=\"(.*?(\\.(png|gif|jpg|svg))+)\"", // lightbox="media/azure.png"
31-
":::image [^:]*?source=\"(.*?(\\.(png|gif|jpg|svg))+)\"", // :::image type="content" source="media/publish.png" alt-text="Publish dialog.":::
32-
"<a href=\"([^\"]*?(\\.(png|gif|jpg|svg))+)\"" // <a href="./media/job-large.png" target="_blank"><img src="./media/job-small.png"></a>
25+
@"!\[.*?\]\((?<path>.*?(\.(png|jpg|gif|svg))+)", // ![hello](media/how-to/xamarin.png)
26+
"<img[^>]*?src[ ]*=[ ]*[\"'](?<path>[^>]*?(\\.(png|gif|jpg|svg))+)[ ]*[\"']", // <img data-hoverimage="./images/start.svg" src="./images/start.png" alt="Start icon" />
27+
@"\[.*\]:(?<path>.*?(\.(png|gif|jpg|svg))+)", // [0]: ../../media/how-to/xamarin.png
28+
@"imageSrc:(?<path>[^:]*?(\.(png|gif|jpg|svg))+)", // imageSrc: ./media/vs-mac.svg
29+
@"thumbnailUrl: (?<path>.*?(\.(png|gif|jpg|svg))+)", // thumbnailUrl: /thumbs/two-forest.png
30+
"lightbox\\s*=\\s*\"(?<path>.*?(\\.(png|gif|jpg|svg))+)\"", // lightbox="media/azure.png"
31+
":::image [^:]*?source\\s*=\\s*\"(?<path>.*?(\\.(png|gif|jpg|svg))+)(\\?[\\w\\s=\\.]+)?\\s*\"", // :::image type="content" source="media/publish.png?text=Publish dialog." alt-text="Publish dialog.":::
32+
"<a href=\"(?<path>[^\"]*?(\\.(png|gif|jpg|svg))+)\"", // <a href="./media/job-large.png" target="_blank"><img src="./media/job-small.png"></a>
33+
"\\((?<path>[^\\)]*?(\\.(png|jpg|gif|svg)))+(#lightbox)\\s*\\)" // (./media/functions-scenarios/process-file-uploads-expanded.png#lightbox)
3334
};
3435
private List<FileInfo> _allMdAndYmlFiles;
3536
private List<FileInfo> AllMdAndYmlFiles
@@ -241,7 +242,7 @@ private void CatalogImages()
241242
// There could be more than one image reference on the line, hence the foreach loop.
242243
foreach (Match match in Regex.Matches(line, regEx, RegexOptions.IgnoreCase))
243244
{
244-
string path = match.Groups[1].Value.Trim();
245+
string path = match.Groups["path"].Value.Trim();
245246
string absolutePath = GetAbsolutePath(path, sourceFile);
246247

247248
if (absolutePath != null)

0 commit comments

Comments
 (0)