π Quick Start Guide for managing files and folders like dictionaries with LuaDoTheWorld
- β How to create and manipulate file/folder resources
- β How to work with sub-resources (files inside folders)
- β How to use schemas for database-like operations
- β How to list, filter, and search through resources
- LuaDoTheWorld installed and required in your script
Resources are like smart file/folder managers that automatically understand if you're working with files or folders.
local dtw = require("luaDoTheWorld/luaDoTheWorld")
-- Create a resource (can be file or folder)
local myFolder = dtw.newResource("my_project")
local myFile = myFolder.sub_resource("config.txt")
myFile.set_value("Hello, World!")
myFolder.commit() -- Save changes to diskGet content from any file easily:
local dtw = require("luaDoTheWorld/luaDoTheWorld")
local myFolder = dtw.newResource("my_project")
local configFile = myFolder.sub_resource("config.txt")
print(configFile.get_value()) -- Prints file contentRead files directly without creating sub-resource objects:
local dtw = require("luaDoTheWorld/luaDoTheWorld")
local myFolder = dtw.newResource("my_project")
print(myFolder.get_value_from_sub_resource("config.txt"))Set content in files within folders:
local dtw = require("luaDoTheWorld/luaDoTheWorld")
local myFolder = dtw.newResource("my_project")
myFolder.set_value_in_sub_resource("config.txt", "New configuration data")
myFolder.commit() -- Don't forget to save!Remove files or entire folders:
local dtw = require("luaDoTheWorld/luaDoTheWorld")
local myFolder = dtw.newResource("my_project")
local oldFile = myFolder.sub_resource("old_config.txt")
oldFile.destroy() -- Mark for deletion
myFolder.commit() -- Apply deletionSee what's inside a folder:
local dtw = require("luaDoTheWorld/luaDoTheWorld")
local myFolder = dtw.newResource("my_project")
local elements, size = myFolder.list()
for i = 1, size do
local item = elements[i]
print("Path:", item.get_path_string())
print("Type:", item.get_type()) -- "file" or "folder"
endProcess each file/folder with a function:
local dtw = require("luaDoTheWorld/luaDoTheWorld")
local myFolder = dtw.newResource("my_project")
myFolder.each(function(item)
print("Found:", item.get_path_string())
print("Type:", item.get_type())
end)Create a new structure from your resources:
local dtw = require("luaDoTheWorld/luaDoTheWorld")
local myFolder = dtw.newResource("my_project")
local fileInfo, size = myFolder.map(function(item)
return {
path = item.get_path_string(),
content = item.get_value(),
type = item.get_type()
}
end)
for i = 1, size do
local info = fileInfo[i]
print("Path:", info.path)
print("Content:", info.content)
print("Type:", info.type)
endSearch for files by name or other criteria:
local dtw = require("luaDoTheWorld/luaDoTheWorld")
local myFolder = dtw.newResource("my_project")
local targetFile = myFolder.find(function(item)
local path = dtw.newPath(item.get_path_string())
return path.get_name() == "config.txt"
end)
if targetFile then
print("Found:", targetFile.get_value())
endGet only files that match your criteria:
local dtw = require("luaDoTheWorld/luaDoTheWorld")
local myFolder = dtw.newResource("my_project")
local textFiles, size = myFolder.filter(function(item)
local path = dtw.newPath(item.get_path_string())
return path.get_extension() == ".txt"
end)
for i = 1, size do
local file = textFiles[i]
print("Text file:", file.get_path_string())
endlocal dtw = require("luaDoTheWorld/luaDoTheWorld")
local logs = dtw.newResource("logs")
local logFile = logs.sub_resource_now(".log") -- Creates "2024-01-15_14-30-25.log"
logFile.set_value("Application started")
logs.commit()local dtw = require("luaDoTheWorld/luaDoTheWorld")
local backups = dtw.newResource("backups")
local backup = backups.sub_resource_now_in_unix(".backup") -- Creates "1705320625.backup"
backup.set_value("Backup data")
backups.commit()local dtw = require("luaDoTheWorld/luaDoTheWorld")
local temp = dtw.newResource("temp")
local tempFile = temp.sub_resource_random(".tmp") -- Creates random name like "a7b9c2d4.tmp"
tempFile.set_value("Temporary data")
temp.commit()local dtw = require("luaDoTheWorld/luaDoTheWorld")
local uploads = dtw.newResource("uploads")
local nextFile = uploads.sub_resource_next(".jpg") -- Creates "1.jpg", "2.jpg", etc.
nextFile.set_value("Image data")
uploads.commit()Turn your folders into databases with primary keys and queries!
local dtw = require("luaDoTheWorld/luaDoTheWorld")
-- Setup database structure
local database = dtw.newResource("user_database")
local schema = database.newDatabaseSchema()
local users = schema.sub_schema("users")
users.add_primary_keys({"name", "email"}) -- Prevent duplicates
-- Create a user
local userTable = users.schema_new_insertion()
userTable.set_value_in_sub_resource("name", "John Doe")
userTable.set_value_in_sub_resource("email", "john@example.com")
userTable.set_value_in_sub_resource("password", "secret123")
database.commit()local dtw = require("luaDoTheWorld/luaDoTheWorld")
local database = dtw.newResource("user_database")
local users = database.sub_resource("users")
-- Find user by primary key
local user = users.get_resource_matching_primary_key("email", "john@example.com")
if user then
print("Name:", user.get_value_from_sub_resource("name"))
print("Email:", user.get_value_from_sub_resource("email"))
else
print("User not found")
endlocal dtw = require("luaDoTheWorld/luaDoTheWorld")
local database = dtw.newResource("user_database")
local users = database.sub_resource("users")
local allUsers, count = users.schema_list()
for i = 1, count do
local user = allUsers[i]
print("User:", user.get_value_from_sub_resource("name"))
print("Email:", user.get_value_from_sub_resource("email"))
endlocal dtw = require("luaDoTheWorld/luaDoTheWorld")
local database = dtw.newResource("user_database")
local users = database.sub_resource("users")
local adults, count = users.schema_filter(function(user)
local age = user.get_value_from_sub_resource("age")
return age and age >= 18
end)
for i = 1, count do
local user = adults[i]
print("Adult user:", user.get_value_from_sub_resource("name"))
endlocal dtw = require("luaDoTheWorld/luaDoTheWorld")
local database = dtw.newResource("user_database")
local users = database.sub_resource("users")
local user = users.get_resource_matching_primary_key("email", "john@example.com")
if user then
user.destroy() -- Safely removes user and all their data
print("User deleted")
end
database.commit()| Function | What it does | Example |
|---|---|---|
dtw.newResource(path) |
Create resource | dtw.newResource("my_folder") |
resource.sub_resource(name) |
Get sub-resource | folder.sub_resource("file.txt") |
resource.set_value(data) |
Write to file | file.set_value("Hello") |
resource.get_value() |
Read from file | file.get_value() |
resource.commit() |
Save changes | folder.commit() |
resource.destroy() |
Delete resource | file.destroy() |
| Function | What it does | Example |
|---|---|---|
resource.list() |
List all items | folder.list() |
resource.each(func) |
Loop through items | folder.each(function(item) ... end) |
resource.map(func) |
Transform items | folder.map(function(item) ... end) |
resource.find(func) |
Find first match | folder.find(function(item) ... end) |
resource.filter(func) |
Filter items | folder.filter(function(item) ... end) |
| Function | What it does | Example |
|---|---|---|
resource.sub_resource_now(ext) |
Time-based name | folder.sub_resource_now(".log") |
resource.sub_resource_now_in_unix(ext) |
Unix timestamp | folder.sub_resource_now_in_unix(".bak") |
resource.sub_resource_random(ext) |
Random name | folder.sub_resource_random(".tmp") |
resource.sub_resource_next(ext) |
Sequential number | folder.sub_resource_next(".jpg") |
| Function | What it does | Example |
|---|---|---|
resource.newDatabaseSchema() |
Create schema | db.newDatabaseSchema() |
schema.sub_schema(name) |
Create table | schema.sub_schema("users") |
schema.add_primary_keys(keys) |
Set unique fields | users.add_primary_keys({"email"}) |
schema.schema_new_insertion() |
Create record | users.schema_new_insertion() |
schema.get_resource_matching_primary_key(key, value) |
Find by key | users.get_resource_matching_primary_key("email", "john@example.com") |
schema.schema_list() |
List all records | users.schema_list() |
schema.schema_filter(func) |
Filter records | users.schema_filter(function(user) ... end) |
- π Check the main SDK documentation
- π Look at other example scripts in the SDK
- π Report issues on our GitHub repository