Forge
csharpdeeb25a2
1using CascadeIDE.Models.Forge;
2using CascadeIDE.Services.Intercom;
3
4namespace CascadeIDE.Features.Forge.Infrastructure;
5
6public enum BracketReferenceKind
7{
8 Code,
9 Forge,
10}
11
12/// <summary>Facade: <c>FRG:</c> vs code axes (ADR-0159 §7).</summary>
13public static class BracketReferenceParser
14{
15 public static bool TryParse(string? input, out BracketReferenceKind kind, out ForgeArtifactRef forge, out BracketCodeReference code, out string error)
16 {
17 forge = default!;
18 code = default;
19 error = "";
20
21 var raw = (input ?? "").Trim();
22 if (raw.Length == 0)
23 {
24 kind = BracketReferenceKind.Code;
25 error = "Пустая bracket-ссылка.";
26 return false;
27 }
28
29 var inner = raw;
30 if (inner.StartsWith('[') && inner.EndsWith(']') && inner.Length >= 2)
31 inner = inner[1..^1].Trim();
32
33 if (inner.StartsWith("FRG:", StringComparison.Ordinal))
34 {
35 kind = BracketReferenceKind.Forge;
36 var bracket = raw.StartsWith('[') ? raw : $"[{inner}]";
37 return BracketForgeReferenceParser.TryParse(bracket, out forge, out error);
38 }
39
40 kind = BracketReferenceKind.Code;
41 return BracketCodeReferenceParser.TryParse(raw, out code, out error);
42 }
43}
44
View only · write via MCP/CIDE