Skip to content

Commit a4af327

Browse files
committed
tweak: work on fivem docs
1 parent 7cebc4d commit a4af327

4 files changed

Lines changed: 24 additions & 2 deletions

File tree

src/NativeCodeGen.Cli/Program.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,9 +296,15 @@ static async Task<int> Validate(string input, bool strict)
296296
db.SharedExamples = sharedExampleRegistry.GetAllExamples();
297297

298298
// Find all MDX files (natives are in namespace directories)
299+
var resolvedInputDir = Path.GetFullPath(inputDir);
299300
var mdxFiles = Directory.GetFiles(inputDir, "*.mdx", SearchOption.AllDirectories)
301+
.Concat(Directory.GetFiles(inputDir, "*.md", SearchOption.AllDirectories))
300302
.Where(f => !f.Contains(Path.Combine("code", "enums"))) // Exclude enum files
301303
.Where(f => !f.Contains(Path.Combine("code", "shared-examples"))) // Exclude shared examples
304+
.Where(f => !Path.GetFileName(f).Equals("README.md", StringComparison.OrdinalIgnoreCase)) // Exclude README
305+
.Where(f => !Path.GetFullPath(f)[resolvedInputDir.Length..] // Exclude dotfile directories
306+
.Split(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar)
307+
.Any(segment => segment.StartsWith('.')))
302308
.ToArray();
303309

304310
Console.WriteLine($"Found {mdxFiles.Length} MDX files to parse...");

src/NativeCodeGen.Core/Parsing/MdxParser.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.Text.RegularExpressions;
12
using Markdig;
23
using Markdig.Syntax;
34
using Markdig.Syntax.Inlines;
@@ -125,7 +126,7 @@ public ParseResult<NativeDefinition> Parse(string content, string filePath)
125126
}
126127

127128
// Parse signature from second line
128-
var signatureLine = codeLines[1].Trim();
129+
var signatureLine = StripCsAnnotations(codeLines[1].Trim());
129130
try
130131
{
131132
var lexer = new SignatureLexer(signatureLine);
@@ -450,6 +451,19 @@ private static string GetListItemText(ListItemBlock listItem)
450451
return string.Join(" ", parts);
451452
}
452453

454+
private static readonly Regex CsTypePattern = new(@"\bcs_type\([^)]*\)\s*", RegexOptions.Compiled);
455+
456+
/// <summary>
457+
/// Strips cs_type(...) and cs_split annotations from signature lines.
458+
/// These are C# type hints used in some native databases that aren't part of the signature grammar.
459+
/// </summary>
460+
private static string StripCsAnnotations(string signature)
461+
{
462+
signature = CsTypePattern.Replace(signature, "");
463+
signature = signature.Replace("cs_split ", "");
464+
return signature;
465+
}
466+
453467
private static string GetInlineText(Inline inline) => inline switch
454468
{
455469
LiteralInline literal => literal.Content.ToString(),

src/NativeCodeGen.Core/Registry/EnumRegistry.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ public void LoadEnums(string enumsDirectory)
1414
return;
1515

1616
var files = Directory.GetFiles(enumsDirectory, "*.mdx")
17+
.Concat(Directory.GetFiles(enumsDirectory, "*.md"))
1718
.Concat(Directory.GetFiles(enumsDirectory, "*.c"))
1819
.Concat(Directory.GetFiles(enumsDirectory, "*.h"));
1920

src/NativeCodeGen.Core/Registry/SharedExampleRegistry.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ public void LoadExamples(string directory)
3333
if (!Directory.Exists(directory))
3434
return;
3535

36-
foreach (var file in Directory.GetFiles(directory, "*.mdx"))
36+
foreach (var file in Directory.GetFiles(directory, "*.mdx")
37+
.Concat(Directory.GetFiles(directory, "*.md")))
3738
{
3839
var name = Path.GetFileNameWithoutExtension(file);
3940
var content = File.ReadAllText(file);

0 commit comments

Comments
 (0)