En av motivasjonene for å flytte bloggen min Til Markdown var å slutte å stole På Windows Live Writer som ikke lenger støttes og har en rekke feil. Men en ting det var praktisk for var å lime inn bilder i innlegg. Jeg kunne bare bruke Windows clipping tool og lime bildet direkte inn i et innlegg. I Markdown må jeg lagre bildet til en fil, og å generere noen markeringer for å referere til den filen.
for små automatiserte oppgaver som dette, er my goto tool den fantastiske LINQPad. Jeg har hundrevis av skript der inne for å gjøre alle slags nyttige ting.
Genererer Et Filnavn
først av alt må skriptet mitt finne ut hvor du skal lagre bildet på utklippstavlen til. Dette avhenger av hvilken datamaskin jeg kjører på Da GitHub-depotet mitt er klonet til forskjellige baner. Her er et raskt OG skittent LINQ-triks for å velge riktig mappe hvilken datamaskin jeg er på:
var path = new { @"C:\Users\markh\code\web\markblog\wwwroot\posts18",@"C:\code\soundcode\MarkBlog\wwwroot\posts18" }.First(p => Directory.Exists(p));
Deretter må jeg generere et filnavn. Jeg bruker» slug » av innlegget som prefiks, pluss et økende nummer. Igjen bruker JEG en rask BIT AV LINQ for å finne det første suffikset som ikke er brukt.
var prefix = "css-social-media-icon-list";var fileName = Enumerable.Range(1,100) .Select(n => Path.Combine(path,$"{prefix}-{n}.png")) .First(p => !File.Exists(p));
Lagre bilder fra utklippstavlen
Nå vet vi hvor vi vil lagre bildet til, vi kan bruke System.Windows.Forms.Clipboard
klassen for å få tilgang til bildet og lagre det i EN PNG-fil. Ikke la deg skremme av «Windows Forms» i navnet-denne klassen er den enkleste måten å få tilgang til utklippstavlen og kan brukes fra en konsoll eller WPF-app hvis du vil.
jeg oppdaterer også innholdet i utklippstavlen med Markdown jeg vil lime inn i blogginnlegget mitt. Så nå er alt jeg trenger å gjøre etter å ha brukt Windows clip tool til å ta et skjermbilde, kjør dette skriptet og lim Deretter Inn Markdown i tekstredigereren min.
if(Clipboard.ContainsImage()){ Clipboard.GetImage().Save(fileName, ImageFormat.Png); Clipboard.SetText($"!(/posts/2018/{Path.GetFileName(fileName)})");}
Tar du det videre?
så jeg har limt inn et bilde i mine markdown-innlegg nesten like enkelt som Det var Med Windows Live Writer, men neste skritt ville være å innlemme en lignende prosess i Visual Studio Code som jeg bruker som redaktør. Jeg tror dette kan bli omgjort Til En Visual Studio Code-utvidelse, men jeg mistenker at det betyr en omskrivning i node.js og lære HVORDAN VS Kodeutvidelser fungerer. Hvis jeg klarer det, skriver jeg om hvordan jeg gjorde det.
men forhåpentligvis er dette nyttig for alle som trenger utklippstavletilgang I C#, og gir deg også noen ideer om Hvordan LINQPad-skript kan brukes til å automatisere manuelle oppgaver.