diff options
Diffstat (limited to 'experiments/volume/utils.lua')
-rw-r--r-- | experiments/volume/utils.lua | 105 |
1 files changed, 0 insertions, 105 deletions
diff --git a/experiments/volume/utils.lua b/experiments/volume/utils.lua deleted file mode 100644 index 417a666..0000000 --- a/experiments/volume/utils.lua +++ /dev/null @@ -1,105 +0,0 @@ - - -local utils = {} - -local function split(string_to_split, separator) - if separator == nil then separator = "%s" end - local t = {} - - for str in string.gmatch(string_to_split, "([^".. separator .."]+)") do - table.insert(t, str) - end - - return t -end - -function utils.extract_sinks_and_sources(pacmd_output) - local sinks = {} - local sources = {} - local device - local properties - local ports - local in_sink = false - local in_source = false - local in_device = false - local in_properties = false - local in_ports = false - for line in pacmd_output:gmatch("[^\r\n]+") do - if string.match(line, 'source%(s%) available.') then - in_sink = false - in_source = true - end - if string.match(line, 'sink%(s%) available.') then - in_sink = true - in_source = false - end - - if string.match(line, 'index:') then - in_device = true - in_properties = false - device = { - id = line:match(': (%d+)'), - is_default = string.match(line, '*') ~= nil - } - if in_sink then - table.insert(sinks, device) - elseif in_source then - table.insert(sources, device) - end - end - - if string.match(line, '^\tproperties:') then - in_device = false - in_properties = true - properties = {} - device['properties'] = properties - end - - if string.match(line, 'ports:') then - in_device = false - in_properties = false - in_ports = true - ports = {} - device['ports'] = ports - end - - if string.match(line, 'active port:') then - in_device = false - in_properties = false - in_ports = false - device['active_port'] = line:match(': (.+)'):gsub('<',''):gsub('>','') - end - - if in_device then - local t = split(line, ': ') - local key = t[1]:gsub('\t+', ''):lower() - local value = t[2]:gsub('^<', ''):gsub('>$', '') - device[key] = value - end - - if in_properties then - local t = split(line, '=') - local key = t[1]:gsub('\t+', ''):gsub('%.', '_'):gsub('-', '_'):gsub(':', ''):gsub("%s+$", "") - local value - if t[2] == nil then - value = t[2] - else - value = t[2]:gsub('"', ''):gsub("^%s+", ""):gsub(' Analog Stereo', '') - end - properties[key] = value - end - - if in_ports then - local t = split(line, ': ') - local key = t[1] - if key ~= nil then - key = key:gsub('\t+', '') - end - ports[key] = t[2] - end - end - - return sinks, sources -end - -return utils
\ No newline at end of file |