Remove Unneeded Generators

This commit is contained in:
Rokojori 2026-05-17 13:14:33 +02:00
parent 107614bcb7
commit 1cd28eb707
4 changed files with 0 additions and 312 deletions

View File

@ -1,139 +0,0 @@
using System.Collections.Generic;
using Godot;
using Rokojori.DocGenerator;
namespace Rokojori;
[Tool,GlobalClass]
public partial class CSParserTest:Node
{
[Export]
public string defines = "a,b,c";
[Export]
public string formula = "";
[ExportToolButton( "Parse Formula" )]
public Callable parseFormulaButton => Callable.From(
()=>
{
ParseFormula();
}
);
[Export( PropertyHint.File )]
public string path;
[Export]
public bool createGD = false;
[Export]
public bool createDocInfo = false;
[Export]
public bool createASTView = false;
[Export]
public ASTViewContext.ViewType viewType = ASTViewContext.ViewType.Tree_Structure;
[Export]
public string docInfoPath = "res://.rokojori/cache/docs";
[ExportToolButton( "Parse" )]
public Callable parseButton => Callable.From(
()=>
{
Parse();
}
);
void Parse()
{
var defines = new HashSet<string>();
defines.Add( GDScriptGenerator.GD_SCRIPT_TRANSPILING );
var parser = new CSParser( ProjectSettings.GlobalizePath( path ), defines );
var root = parser.root as CSFileRoot;
this.LogInfo( "Parsed Nodes:", root.parsedNodes.Count );
for ( int i = 0; i < root.parsedNodes.Count; i++ )
{
this.LogInfo( i, root.parsedNodes[ i ] );
}
if ( createGD )
{
CreateGDClass( root );
}
if ( createDocInfo )
{
CreateDocInfo( root );
}
if ( createASTView )
{
CreateASTView( root );
}
}
void CreateASTView( CSFileRoot root )
{
var astView = this.GetOrCreateChild<ASTViewContext>( "AST View");
astView.viewType = viewType;
astView.Create( root );
}
void CreateDocInfo( CSFileRoot root )
{
var objects = root.walker.FilterType<CSObjectDeclaration>( root );
var originalPath = FilePath.Absolute( root.GetFilePath() );
var name = originalPath.fullFileName + ".json";
var outputPath = FilePath.Join( ProjectSettings.GlobalizePath( docInfoPath ), name );
var doc = ClassDocFromParser.CreateFrom( objects[ 0 ] );
this.LogInfo( "saving:", outputPath, JSON.StringifyObject( doc ) );
FilesSync.SaveJSON( outputPath, doc );
}
void CreateGDClass( CSFileRoot root )
{
var originalPath = FilePath.Absolute( root.GetFilePath() );
var converter = new GDScriptFromCSAST();
converter.Convert( root );
var gdclass = converter.gdClass;
var gdgenerator = new GDScriptGenerator();
gdgenerator.gdClasses = [ gdclass ];
gdgenerator.Generate( originalPath.parentAbsolutePath );
}
void ParseFormula()
{
var defines = this.defines.Split( "," );
var evaluator = new CSPreProcessorConditionalEvaluator();
defines.ForEach( d => evaluator.defines.Add( d ) );
evaluator.Parse( formula );
var result = evaluator.Evaluate();
this.LogInfo( "Result:", result );
this.LogInfo( "Context:", evaluator.context.messages );
var info = evaluator.root.CreateDebugTreeInfo();
this.LogInfo( "\n" + info );
}
}

View File

@ -1 +0,0 @@
uid://btbsqwh2k3ocl

View File

@ -1,171 +0,0 @@
using Godot;
using Rokojori;
using System.Collections.Generic;
using System;
using System.Reflection;
using System.Text.RegularExpressions;
using System.Linq;
using System.IO;
namespace Rokojori.GDLibraryGeneration
{
[Tool][GlobalClass]
public partial class GDLibraryGenerator:Node
{
[Export]
public string path = "rokojori_action_library_gd";
[Export]
public bool scanForGDExport = true;
[Export]
public string[] files = [];
[ExportToolButton( "Generate" )]
public Callable generateButton => Callable.From(
()=>
{
GenerateGDLibrary();
}
);
HashSet<string> defines = new HashSet<string>();
void GenerateGDLibrary()
{
defines = new HashSet<string>();
defines.Add( GDScriptGenerator.GD_SCRIPT_TRANSPILING );
var codeFilePaths = GetCodeFilePaths();
var rokojoriProPath = FilePath.Absolute( ProjectSettings.GlobalizePath( RokojoriPlugin.path ) );
var rokojoriGDPath = FilePath.Absolute( ProjectSettings.GlobalizePath( "res://addons/" + path ) );
codeFilePaths.ForEach(
( c )=>
{
var parser = new CSParser( c.absolutePath, defines );
var root = parser.root as CSFileRoot;
var originalPath = FilePath.Absolute( root.GetFilePath() );
var relativePath = rokojoriProPath.MakeAbsolutePathRelative( originalPath.parentAbsolutePath );
var gdPath = rokojoriGDPath.MakeRelative( relativePath.path );
var converter = new GDScriptFromCSAST();
converter.Convert( root );
var gdclass = converter.gdClass;
var gdgenerator = new GDScriptGenerator();
gdgenerator.gdClasses = [ gdclass ];
FilesSync.EnsureDirectoryExists( gdPath.absolutePath );
gdgenerator.Generate( gdPath.absolutePath );
}
);
}
List<FilePath> GetCodeFilePaths()
{
var codeFilePaths = new List<FilePath>();
var map = new HashSet<string>();
var combinedFiles = new List<string>();
combinedFiles.AddRange( files );
if ( scanForGDExport )
{
var absPath = ProjectSettings.GlobalizePath( RokojoriPlugin.path );
var scannedExportfiles = FilesSync.GetFilesRecursive( absPath, f => f.HasFileExtension( ".cs" ) );
scannedExportfiles = scannedExportfiles.Filter(
( f, i ) =>
{
var text = f.LoadUTF8();
if ( ! text.Contains( "GDExport" ) )
{
return false;
}
var parser = new CSParser( f.absolutePath, defines );
var csRoot = parser.root as CSFileRoot;
var cd = csRoot.GetObjectDeclarations().Find( c => c.objectName.match == f.fileName );
return cd?.GetMemberAttributes().Contains( "GDExport" ) ?? false;
}
);
var scannedPaths = scannedExportfiles.Map( f => f.absolutePath );
RJLog.Log( "Found paths:", scannedPaths );
combinedFiles.AddRange( scannedPaths );
}
combinedFiles.ForEach(
( fileString )=>
{
FilePath filePath;
if ( fileString.StartsWith( "res://" ) )
{
filePath = FilePath.Absolute( ProjectSettings.GlobalizePath( fileString ) );
}
else if ( ! fileString.EndsWith( ".cs" ) )
{
filePath = FindFilePathOf( fileString );
}
else
{
filePath = FilePath.Absolute( fileString );
}
if ( filePath == null || ! filePath.Exists() )
{
return;
}
var absolutePath = filePath.absolutePath;
if ( map.Contains( absolutePath ) )
{
return;
}
codeFilePaths.Add( filePath );
map.Add( absolutePath );
}
);
return codeFilePaths;
}
List<FilePath> filePaths;
FilePath FindFilePathOf( string type )
{
if ( filePaths == null )
{
var rokojoriPath = ProjectSettings.GlobalizePath( RokojoriPlugin.path );
filePaths = FilesSync.GetFilesRecursive( rokojoriPath, fp => fp.HasFileExtension( ".cs" ) );
}
return filePaths.Find( fp => fp.fileName == type );
}
}
}

View File

@ -1 +0,0 @@
uid://bosqs73jx5m0m