RL_LoadDirectoryFilesEx and separate option for doc_parser.

This commit is contained in:
jussi
2022-11-27 16:25:25 +02:00
parent deda5fb917
commit 08ef5b4352
8 changed files with 81 additions and 22 deletions

9
API.md
View File

@@ -2065,6 +2065,15 @@ Load directory filepaths
---
> fileNames = RL_LoadDirectoryFilesEx( string basePath, string filter, bool scanSubdirs )
Load directory filepaths with extension filtering and recursive directory scan
- Failure return false
- Success return string{}
---
> success = RL_ChangeDirectory( string directory )
Change working directory, return true on success

View File

@@ -25,12 +25,12 @@ List of some MISSING features that are planned to be included. For specific func
* Textures
* LoadImageFromMemory
* Text
* LoadFontFromMemory
* GlyphInfo
* LoadFontFromMemory
* Audio
* AudioStream management functions
* LoadWaveFromMemory
* LoadMusicStreamFromMemory
* AudioStream management functions
## Usage

View File

@@ -13,3 +13,5 @@ ADDED: Help argument.
CHANGED: Changed fuction name RL_rlSetLineWidth to RL_rlglSetLineWidth.
CHANGED: Changed fuction name RL_rlGetLineWidth to RL_rlglGetLineWidth.
FIX: DrawRectangleGradient V and H expecting wrong amount of arguments.
ADDED: RL_LoadDirectoryFilesEx.
ADDED: Flag option (-s) for doc_parser.lua for exporting module APIs to separate files.

View File

@@ -2,13 +2,9 @@ Current {
}
Backlog {
* Core
* LoadDirectoryFilesEx
* Audio
* AudioStream
* AudioStream.
* Text
* Codepoints
* String management. At least TextSplit.
* VR?
* Codepoints?
* VR.
}

View File

@@ -1,5 +1,12 @@
--Create api.md file from c sources.
-- Export each module as separate .md file.
local separate = false
if arg[1] ~= nil and arg[1] == "-s" then
separate = true
end
local function split( str, sep )
if sep == nil then
sep = "%s"
@@ -34,6 +41,8 @@ Note: Engine will call Raylib functions 'BeginDrawing()' before this function ca
You can still use RL_BeginDrawing() and RL_EndDrawing() manually from anywhere.\n\n---\n" )
apiFile:write( "\n> function log( logLevel, message )\n\
This function can be used for custom log message handling.\n\n---\n" )
apiFile:write( "\n> function exit()\n\
This function will be called on program close. Cleanup could be done here.\n\n---\n" )
-- Globals.
@@ -142,27 +151,35 @@ apiFile:write( "\n> NPatchInfo = { { 0, 0, 24, 24 }, 0, 0, 0, 0, NPATCH_NINE_PAT
apiFile:write( "\n> ModelAnimations = ModelAnimationsId\n\
int id. ModelAnimations\n\n---\n" )
if separate then
apiFile:close()
end
-- Functions.
local sourceFiles = {
"src/core.c",
"src/shapes.c",
"src/textures.c",
"src/text.c",
"src/models.c",
"src/audio.c",
"src/rmath.c",
"src/rgui.c",
"src/lights.c",
"src/rlgl.c",
"src/easings.c",
"core",
"shapes",
"textures",
"text",
"models",
"audio",
"rmath",
"rgui",
"lights",
"rlgl",
"easings",
}
for _, src in ipairs( sourceFiles ) do
srcFile = io.open( src, "r" )
srcFile = io.open( "src/"..src..".c", "r" )
local line = ""
local p = false
if separate then
apiFile = io.open( src..".md", "w" )
end
repeat
line = srcFile:read( "*l" )
@@ -182,6 +199,12 @@ for _, src in ipairs( sourceFiles ) do
until line == nil
srcFile:close()
if separate then
apiFile:close()
end
end
if not separate then
apiFile:close()
end

View File

@@ -85,6 +85,7 @@ int lcoreGetDirectoryPath( lua_State *L );
int lcoreGetPrevDirectoryPath( lua_State *L );
int lcoreGetWorkingDirectory( lua_State *L );
int lcoreLoadDirectoryFiles( lua_State *L );
int lcoreLoadDirectoryFilesEx( lua_State *L );
int lcoreChangeDirectory( lua_State *L );
int lcoreIsFileDropped( lua_State *L );
int lcoreLoadDroppedFiles( lua_State *L );

View File

@@ -2198,6 +2198,33 @@ int lcoreLoadDirectoryFiles( lua_State *L ) {
return 1;
}
/*
> fileNames = RL_LoadDirectoryFilesEx( string basePath, string filter, bool scanSubdirs )
Load directory filepaths with extension filtering and recursive directory scan
- Failure return false
- Success return string{}
*/
int lcoreLoadDirectoryFilesEx( lua_State *L ) {
if ( !lua_isstring( L, -3 ) || !lua_isstring( L, -2 ) || !lua_isboolean( L, -1 ) ) {
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_LoadDirectoryFilesEx( string dirPath )" );
lua_pushboolean( L, false );
return 1;
}
FilePathList files = LoadDirectoryFilesEx( lua_tostring( L, -3 ), lua_tostring( L, -2 ), lua_toboolean( L, -1 ) );
lua_createtable( L, files.count, 0 );
for ( int i = 0; i < files.count; ++i ) {
lua_pushstring( L, files.paths[i] );
lua_rawseti( L, -2, i+1 );
}
UnloadDirectoryFiles( files );
return 1;
}
/*
> success = RL_ChangeDirectory( string directory )

View File

@@ -748,6 +748,7 @@ void luaRegister() {
lua_register( L, "RL_GetPrevDirectoryPath", lcoreGetPrevDirectoryPath );
lua_register( L, "RL_GetWorkingDirectory", lcoreGetWorkingDirectory );
lua_register( L, "RL_LoadDirectoryFiles", lcoreLoadDirectoryFiles );
lua_register( L, "RL_LoadDirectoryFilesEx", lcoreLoadDirectoryFilesEx );
lua_register( L, "RL_ChangeDirectory", lcoreChangeDirectory );
lua_register( L, "RL_IsFileDropped", lcoreIsFileDropped );
lua_register( L, "RL_LoadDroppedFiles", lcoreLoadDroppedFiles );