Skip to content

Commit

Permalink
Format URLs
Browse files Browse the repository at this point in the history
  • Loading branch information
praeclarum committed Mar 23, 2023
1 parent 90978b1 commit c1a0669
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions AskGPT/Formatter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ enum TokenState {
ManyNewline,
LineComment,
Word,
Url,
Number,
OneTick,
TwoTick,
Expand Down Expand Up @@ -239,6 +240,9 @@ void EndToken()
Write(tokenText, TokenFormat.Body);
}
break;
case TokenState.Url:
Write(tokenText, TokenFormat.Url);
break;
case TokenState.Number:
Write(tokenText, TokenFormat.Number);
break;
Expand Down Expand Up @@ -448,6 +452,24 @@ bool Run(char ch)
token.Append(ch);
return true;
}
else if (ch == ':' && !InCodeish && token.ToString() is string word &&
(word.Equals("http", StringComparison.OrdinalIgnoreCase) ||
word.Equals("https", StringComparison.OrdinalIgnoreCase) ||
word.Equals("ftp", StringComparison.OrdinalIgnoreCase) ||
word.Equals("file", StringComparison.OrdinalIgnoreCase))) {
token.Append(ch);
state = TokenState.Url;
return true;
}
else {
EndToken();
return false;
}
case TokenState.Url:
if (char.IsLetterOrDigit(ch) || ch == '/' || ch == ':' || ch == '?' || ch == '&' || ch == '=' || ch == '#' || ch == '.' || ch == ',' || ch == ';' || ch == '!' || ch == '-' || ch == '_' || ch == '~' || ch == '%' || ch == '*' || ch == '\'' || ch == '+' || ch == '@' || ch == '$' || ch == '^' || ch == '|' || ch == '`' || ch == '<' || ch == '>' || ch == '\\') {
token.Append(ch);
return true;
}
else {
EndToken();
return false;
Expand Down Expand Up @@ -632,6 +654,7 @@ bool Run(char ch)
enum TokenFormat {
Markdown,
Body,
Url,
Underline,
Number,
String,
Expand Down Expand Up @@ -750,6 +773,11 @@ public override void Write(string token, TokenFormat format, TokenStyle style)
case TokenFormat.Function:
Console.ForegroundColor = ConsoleColor.Green;
break;
case TokenFormat.Url:
Console.ForegroundColor = ConsoleColor.Cyan;
Console.Write("\u001B[4m");
needsResetAfter = true;
break;
case TokenFormat.Number:
Console.ForegroundColor = ConsoleColor.Yellow;
break;
Expand Down

0 comments on commit c1a0669

Please sign in to comment.