summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjussi2022-11-27 16:25:25 +0200
committerjussi2022-11-27 16:25:25 +0200
commit08ef5b435273eaa3de860eac1c031219cd815587 (patch)
tree921570cddf499c1ac5f10b55342300c190edac55
parentdeda5fb9170295133444809618835e8b9aa61512 (diff)
downloadreilua-enhanced-08ef5b435273eaa3de860eac1c031219cd815587.tar.gz
reilua-enhanced-08ef5b435273eaa3de860eac1c031219cd815587.tar.bz2
reilua-enhanced-08ef5b435273eaa3de860eac1c031219cd815587.zip
RL_LoadDirectoryFilesEx and separate option for doc_parser.
-rw-r--r--API.md9
-rw-r--r--README.md4
-rw-r--r--changelog2
-rw-r--r--devnotes10
-rw-r--r--doc_parser.lua49
-rw-r--r--include/core.h1
-rw-r--r--src/core.c27
-rw-r--r--src/lua_core.c1
8 files changed, 81 insertions, 22 deletions
diff --git a/API.md b/API.md
index 94b9d65..2a653db 100644
--- a/API.md
+++ b/API.md
@@ -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
diff --git a/README.md b/README.md
index eccdc98..ed92cb6 100644
--- a/README.md
+++ b/README.md
@@ -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
diff --git a/changelog b/changelog
index db08e35..b0a2e61 100644
--- a/changelog
+++ b/changelog
@@ -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.
diff --git a/devnotes b/devnotes
index 17e26ff..eb6a635 100644
--- a/devnotes
+++ b/devnotes
@@ -2,13 +2,9 @@ Current {
}
Backlog {
- * Core
- * LoadDirectoryFilesEx
* Audio
- * AudioStream
+ * AudioStream.
* Text
- * Codepoints
- * String management. At least TextSplit.
-
- * VR?
+ * Codepoints?
+ * VR.
}
diff --git a/doc_parser.lua b/doc_parser.lua
index 09227cf..d7383e4 100644
--- a/doc_parser.lua
+++ b/doc_parser.lua
@@ -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
-apiFile:close()
+if not separate then
+ apiFile:close()
+end
diff --git a/include/core.h b/include/core.h
index 9812d8d..cdd644f 100644
--- a/include/core.h
+++ b/include/core.h
@@ -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 );
diff --git a/src/core.c b/src/core.c
index f821af0..eabfe52 100644
--- a/src/core.c
+++ b/src/core.c
@@ -2199,6 +2199,33 @@ int lcoreLoadDirectoryFiles( lua_State *L ) {
}
/*
+> 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 )
Change working directory, return true on success
diff --git a/src/lua_core.c b/src/lua_core.c
index 1d46440..defd8f2 100644
--- a/src/lua_core.c
+++ b/src/lua_core.c
@@ -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 );