<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.multitheftauto.com/wiki/Modules/FileSystem/translator/scanDirEx?action=history&amp;feed=atom</id>
	<title>Modules/FileSystem/translator/scanDirEx - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.multitheftauto.com/wiki/Modules/FileSystem/translator/scanDirEx?action=history&amp;feed=atom"/>
	<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Modules/FileSystem/translator/scanDirEx&amp;action=history"/>
	<updated>2026-05-12T20:21:08Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Modules/FileSystem/translator/scanDirEx&amp;diff=73775&amp;oldid=prev</id>
		<title>Danilo at 03:30, 23 January 2022</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Modules/FileSystem/translator/scanDirEx&amp;diff=73775&amp;oldid=prev"/>
		<updated>2022-01-23T03:30:30Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 03:30, 23 January 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;pageclass class=&quot;#3c82c8&quot; subcaption=&quot;Translator function&quot;&gt;&amp;lt;/pageclass&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;__NOTOC__&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;__NOTOC__&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This function loops through all translator filesystem entries that are captured by the wildcard and the directory specifier. The wildcard is glob-style and supports '''*''' and '''?''' modifiers. The scan can be made recursive to enter every directory it finds, so that files and folders of a whole directory tree are captured. This function is used to process filesystem objects inside of directories without having to add the filenames into a configuration file. This greatly increases flexibility when processing files. This function is more flexible than [[MTA:Eir/FileSystem/translator/scanDir|scanDir]] as it triggers callbacks directly when either files or directories are found, making a distinction between files and directories very easy.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This function loops through all translator filesystem entries that are captured by the wildcard and the directory specifier. The wildcard is glob-style and supports '''*''' and '''?''' modifiers. The scan can be made recursive to enter every directory it finds, so that files and folders of a whole directory tree are captured. This function is used to process filesystem objects inside of directories without having to add the filenames into a configuration file. This greatly increases flexibility when processing files. This function is more flexible than [[MTA:Eir/FileSystem/translator/scanDir|scanDir]] as it triggers callbacks directly when either files or directories are found, making a distinction between files and directories very easy.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Danilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Modules/FileSystem/translator/scanDirEx&amp;diff=73635&amp;oldid=prev</id>
		<title>Danilo: Created page with &quot;__NOTOC__ This function loops through all translator filesystem entries that are captured by the wildcard and the directory specifier. The wildcard is glob-style and supports '''*''' and '''?''' modifiers. The scan can be made recursive to enter every directory it finds, so that files and folders of a whole directory tree are captured. This function is used to process filesystem objects inside of directories without having to add the filenames into a configuration file....&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Modules/FileSystem/translator/scanDirEx&amp;diff=73635&amp;oldid=prev"/>
		<updated>2022-01-19T03:00:30Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;__NOTOC__ This function loops through all translator filesystem entries that are captured by the wildcard and the directory specifier. The wildcard is glob-style and supports &amp;#039;&amp;#039;&amp;#039;*&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;?&amp;#039;&amp;#039;&amp;#039; modifiers. The scan can be made recursive to enter every directory it finds, so that files and folders of a whole directory tree are captured. This function is used to process filesystem objects inside of directories without having to add the filenames into a configuration file....&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__NOTOC__&lt;br /&gt;
This function loops through all translator filesystem entries that are captured by the wildcard and the directory specifier. The wildcard is glob-style and supports '''*''' and '''?''' modifiers. The scan can be made recursive to enter every directory it finds, so that files and folders of a whole directory tree are captured. This function is used to process filesystem objects inside of directories without having to add the filenames into a configuration file. This greatly increases flexibility when processing files. This function is more flexible than [[MTA:Eir/FileSystem/translator/scanDir|scanDir]] as it triggers callbacks directly when either files or directories are found, making a distinction between files and directories very easy.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
bool translator:scanDirEx ( string dirPath, string wildcard, function dirCallback, function fileCallback, bool recursive )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arguments==&lt;br /&gt;
*'''dirPath:''' a path to the directory the scan shall take place or start in&lt;br /&gt;
*'''wildcard:''' glob-style wild-card for filename matching; every filename that matches the wild-card is returned&lt;br /&gt;
*'''dirCallback:''' the function callback that should trigger for every directory found (can be nil); the absolute path of the directory is passed to it&lt;br /&gt;
*'''fileCallback:''' the directory callback that should trigger for every file found (can be nil); the absolute path of the file is passed to it&lt;br /&gt;
*'''recursive:''' a boolean that specifies whether the whole directory tree at dirPath should be included into the scan&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
This function performs a scan of all filesystem objects captured inside of the '''dirPath''' folder using the '''wild-card''' glob-style pattern. It returns '''false''' if '''dirPath''' is an invalid path specifier for the translator.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This snippet outputs the count of directories and files in a specified directory relative to the resource instance root. This is an alternative to the '''scanDir''' way.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Get a handle to the resource instance directory.&lt;br /&gt;
local resRoot = fileCreateTranslator( &amp;quot;/&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
local function getFilesystemObjectCounts( path )&lt;br /&gt;
    local fileCount = 0;&lt;br /&gt;
    local dirCount = 0;&lt;br /&gt;
&lt;br /&gt;
    -- Create iterator closures that are triggered for each file and directory&lt;br /&gt;
    local function fileIterator( filePath )&lt;br /&gt;
        -- filePath is always an absolute path.&lt;br /&gt;
        fileCount = fileCount + 1;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local function dirIterator( dirPath )&lt;br /&gt;
        -- filePath is always an absolute path.&lt;br /&gt;
        dirCount = dirCount + 1;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Get a list of all fs objects.&lt;br /&gt;
    local fsObjects =&lt;br /&gt;
        resRoot:scanDirEx(&lt;br /&gt;
            path, -- scan anywhere the script wants us to&lt;br /&gt;
            &amp;quot;*&amp;quot;, -- include all files&lt;br /&gt;
            dirIterator, -- pass the callbacks to the routine&lt;br /&gt;
            fileIterator,&lt;br /&gt;
            false -- scan the specified directory only&lt;br /&gt;
        );&lt;br /&gt;
&lt;br /&gt;
    -- We do not need to loop anymore.&lt;br /&gt;
&lt;br /&gt;
    -- Return the counts.&lt;br /&gt;
    return fileCount, dirCount;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Output the filesystem object counts for the resource instance root.&lt;br /&gt;
local fileCount, dirCount = getFilesystemObjectCounts( &amp;quot;/&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
outputChatBox( &amp;quot;found &amp;quot; .. fileCount .. &amp;quot; files and &amp;quot; .. dirCount .. &amp;quot; directories in the resource folder root.&amp;quot; );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
{{:Modules/FileSystem/translator/functions}}&lt;/div&gt;</summary>
		<author><name>Danilo</name></author>
	</entry>
</feed>