Skip to content

Commit d26d6ce

Browse files
committed
chore(Util): move module Uri under CSharpLanguageServer.Util
1 parent 1f0b23c commit d26d6ce

File tree

4 files changed

+20
-23
lines changed

4 files changed

+20
-23
lines changed

src/CSharpLanguageServer/Handlers/Diagnostic.fs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ open Ionide.LanguageServerProtocol.JsonRpc
88
open CSharpLanguageServer.Roslyn.Conversions
99
open CSharpLanguageServer.State
1010
open CSharpLanguageServer.Types
11+
open CSharpLanguageServer.Util
1112

1213
[<RequireQualifiedAccess>]
1314
module Diagnostic =

src/CSharpLanguageServer/Handlers/DocumentHighlight.fs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ open Ionide.LanguageServerProtocol.JsonRpc
99

1010
open CSharpLanguageServer.State
1111
open CSharpLanguageServer.Roslyn.Conversions
12+
open CSharpLanguageServer.Util
1213

1314
[<RequireQualifiedAccess>]
1415
module DocumentHighlight =

src/CSharpLanguageServer/Roslyn/Conversions.fs

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,29 +10,6 @@ open Ionide.LanguageServerProtocol.Types
1010
open CSharpLanguageServer.Util
1111

1212

13-
module Uri =
14-
// Unescape some necessary char before passing string to Uri.
15-
// Can't use Uri.UnescapeDataString here. For example, if uri is "file:///z%3a/src/c%23/ProjDir" ("%3a" is
16-
// ":" and "%23" is "#"), Uri.UnescapeDataString will unescape both "%3a" and "%23". Then Uri will think
17-
/// "#/ProjDir" is Fragment instead of part of LocalPath.
18-
let unescape (uri: string) = uri.Replace("%3a", ":", true, null)
19-
20-
let toPath (uri: string) =
21-
Uri.UnescapeDataString(Uri(unescape uri).LocalPath)
22-
23-
let fromPath (path: string) =
24-
let metadataPrefix = "$metadata$/"
25-
26-
if path.StartsWith metadataPrefix then
27-
"csharp:/metadata/" + path.Substring metadataPrefix.Length
28-
else
29-
Uri(path).ToString()
30-
31-
let toWorkspaceFolder (uri: string) : WorkspaceFolder =
32-
{ Uri = uri
33-
Name = Uri.UnescapeDataString(Uri(unescape uri).Segments |> Array.last) }
34-
35-
3613
module Position =
3714
let fromLinePosition (pos: LinePosition) : Position =
3815
{ Line = uint32 pos.Line

src/CSharpLanguageServer/Util.fs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,24 @@ let nonNull name (value: 'T when 'T: null) : 'T =
1212
else
1313
value
1414

15+
module Uri =
16+
// Unescape some necessary char before passing string to Uri.
17+
// Can't use Uri.UnescapeDataString here. For example, if uri is "file:///z%3a/src/c%23/ProjDir" ("%3a" is
18+
// ":" and "%23" is "#"), Uri.UnescapeDataString will unescape both "%3a" and "%23". Then Uri will think
19+
/// "#/ProjDir" is Fragment instead of part of LocalPath.
20+
let unescape (uri: string) = uri.Replace("%3a", ":", true, null)
21+
22+
let toPath (uri: string) =
23+
Uri.UnescapeDataString(Uri(unescape uri).LocalPath)
24+
25+
let fromPath (path: string) =
26+
let metadataPrefix = "$metadata$/"
27+
28+
if path.StartsWith metadataPrefix then
29+
"csharp:/metadata/" + path.Substring metadataPrefix.Length
30+
else
31+
Uri(path).ToString()
32+
1533
let parseFileUri s : string = Uri(s).LocalPath
1634

1735
let tryParseFileUri s : string option =

0 commit comments

Comments
 (0)