diff options
author | Daniel Silverstone <dsilvers@digital-scurf.org> | 2012-09-05 14:57:11 +0100 |
---|---|---|
committer | Daniel Silverstone <dsilvers@digital-scurf.org> | 2012-09-05 14:57:11 +0100 |
commit | 9b8833619780eb1c8c2fffc0f95cf93c6adb1d83 (patch) | |
tree | 8c0d72eaa3f397673374da30db0bbf7acba29b76 /lib/gitano/util.lua | |
parent | f0ec685980cf6161e74649522f3ca40e83d30071 (diff) | |
download | gitano-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.lua | 28 |
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, |