summaryrefslogtreecommitdiff
path: root/lib/gitano/util.lua
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2012-09-05 14:57:11 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2012-09-05 14:57:11 +0100
commit9b8833619780eb1c8c2fffc0f95cf93c6adb1d83 (patch)
tree8c0d72eaa3f397673374da30db0bbf7acba29b76 /lib/gitano/util.lua
parentf0ec685980cf6161e74649522f3ca40e83d30071 (diff)
downloadgitano-9b8833619780eb1c8c2fffc0f95cf93c6adb1d83.tar.gz
GITANO: Rationalise splittable stuff and split groups on dashes and repos on slashes
Diffstat (limited to 'lib/gitano/util.lua')
-rw-r--r--lib/gitano/util.lua28
1 files changed, 28 insertions, 0 deletions
diff --git a/lib/gitano/util.lua b/lib/gitano/util.lua
index b0ca710..1d497c0 100644
--- a/lib/gitano/util.lua
+++ b/lib/gitano/util.lua
@@ -258,6 +258,32 @@ local function set(t)
return ret
end
+local function add_splitable(context, key, value, splitter,
+ prefix_name, suffix_name)
+ if not value or value == "" then
+ return
+ end
+ local function _(k, v)
+ context[k] = v
+ end
+ _(key, value)
+ local prefix, suffix = value:match("^(.*%" .. splitter .. ")" ..
+ "([^%" .. splitter .. "]+)$")
+
+ if prefix then
+ _(key .. "/" .. prefix_name, prefix:sub(1, -2))
+ _(key .. "/" .. suffix_name, suffix)
+ else
+ _(key .. "/" .. suffix_name, value)
+ end
+
+ local i = 1
+ for section in value:gmatch("([^%" .. splitter .. "]+)") do
+ _(key .. "/" .. tostring(i), section)
+ i = i + 1
+ end
+end
+
return {
parse_cmdline = _parse_cmdline,
@@ -274,6 +300,8 @@ return {
deep_copy = _deep_copy,
prep_expansion = prep_expansion,
+
+ add_splitable = add_splitable,
process_expansion = process_expansion,
set = set,