summaryrefslogtreecommitdiffstats
path: root/lib/format.lua
diff options
context:
space:
mode:
authorNathan Angelacos <nangel@tetrasec.net>2008-09-17 20:28:52 +0000
committerNathan Angelacos <nangel@tetrasec.net>2008-09-17 20:28:52 +0000
commitb482f14c60346cc5382ca28ae0db9ccc73bbda1b (patch)
treec0c9a7b065ad4ccb2e231763a1814fdd748f0c8f /lib/format.lua
parentfbc5cdbaf736a60d7907b59faa654946f9dbd9fa (diff)
downloadacf-core-b482f14c60346cc5382ca28ae0db9ccc73bbda1b.tar.bz2
acf-core-b482f14c60346cc5382ca28ae0db9ccc73bbda1b.tar.xz
added expand_bash_syntax_vars function
git-svn-id: svn://svn.alpinelinux.org/acf/core/trunk@1473 ab2d0c66-481e-0410-8bed-d214d4d58bed
Diffstat (limited to 'lib/format.lua')
-rw-r--r--lib/format.lua24
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/format.lua b/lib/format.lua
index 60fda82..5b3e220 100644
--- a/lib/format.lua
+++ b/lib/format.lua
@@ -159,3 +159,27 @@ function md5sum_string ( str)
f:close()
return checksum[1]
end
+
+
+-- Takes a str and expands any ${...} constructs with the Lua variable
+-- ex: a="foo"; print(expand_bash_syntax_vars("a=${a}) - > "a=foo"
+
+expand_bash_syntax_vars = function ( str )
+
+ local deref = function ( f)
+ local v = _G
+ for w in string.gfind(f, "[%w_]+") do
+ v = v[w]
+ end
+ return v
+ end
+
+ for w in string.gmatch (str, "${[^}]*}" ) do
+ local rvar = string.sub(w,3,-2)
+ local rval = ( deref(rvar) or "nil" )
+ str = string.gsub (str, w, rval)
+ end
+ return (str)
+end
+
+