Walk a directory/Recursively: Difference between revisions

Content added Content deleted
(→‎{{header|Lua}}: lfs solution)
Line 1,486: Line 1,486:


walkDir "C:" "*.txt"</lang>
walkDir "C:" "*.txt"</lang>

=={{header|MoonScript}}==
MoonScript compiles to Lua, which itself is extremely spartanic as it is meant for embedding. As lfs (LuaFileSystem) is about as standard an extension as it gets, we use that.

<lang MoonScript>lfs = require "lfs"

-- This function takes two arguments:
-- - the directory to walk recursively;
-- - an optional function that takes a file name as argument, and returns a boolean.
find = (fn) => coroutine.wrap ->
for f in lfs.dir @
if f ~= "." and f ~= ".."
_f = @.."/"..f
coroutine.yield _f if not fn or fn _f
if lfs.attributes(_f, "mode") == "directory"
coroutine.yield n for n in find _f, fn

-- Examples
-- List all files
print f for f in find "templates"

-- List moonscript files
print f for f in find "templates", => @\match "%.moon$"

-- List directories
print f for f in find "templates", => "directory" == lfs.attributes @, "mode"</lang>


=={{header|Nanoquery}}==
=={{header|Nanoquery}}==