From: Luca CPZ <1777696+lcpz@users.noreply.github.com> Date: Sat, 17 Feb 2018 11:19:53 +0000 (+0100) Subject: Merge pull request #377 from sim590/menu-iterator X-Git-Url: https://git.madduck.net/etc/awesome.git/commitdiff_plain/af3427c7dfcf991c56a099ac1450e54db867ae51?ds=sidebyside;hp=-c Merge pull request #377 from sim590/menu-iterator menu_iterator: naughty.notify based menu utility --- af3427c7dfcf991c56a099ac1450e54db867ae51 diff --combined helpers.lua index 6073ddd,ce65576..313579f --- a/helpers.lua +++ b/helpers.lua @@@ -1,11 -1,11 +1,11 @@@ --[[ Licensed under GNU General Public License v2 - * (c) 2013, Luke Bonham + * (c) 2013, Luca CPZ --]] -local spawn = require("awful.spawn") +local spawn = require("awful.spawn") local timer = require("gears.timer") local debug = require("debug") local io = { lines = io.lines, @@@ -112,7 -112,7 +112,7 @@@ en function helpers.async(cmd, callback) return spawn.easy_async(cmd, function (stdout, stderr, reason, exit_code) - callback(stdout) + callback(stdout, exit_code) end) end @@@ -120,19 -120,10 +120,19 @@@ function helpers.async_with_shell(cmd, callback) return spawn.easy_async_with_shell(cmd, function (stdout, stderr, reason, exit_code) - callback(stdout) + callback(stdout, exit_code) end) end +-- run a command and execute a function on its output line by line +function helpers.line_callback(cmd, callback) + return spawn.with_line_callback(cmd, { + stdout = function (line) + callback(line) + end, + }) +end + -- }}} -- {{{ A map utility @@@ -179,6 -170,29 +179,29 @@@ function helpers.spairs(t end end + -- create trivial partition of a set. The trivial partition set is the simplest + -- partition of a set. For e.g., the trivial partition set of {a, b, c}, is + -- simply {{a}, {b}, {c}}. + function helpers.trivial_partition_set(set) + local ss = {} + for _,e in pairs(set) do + ss[#ss+1] = {e} + end + return ss + end + + -- creates the powerset of a given set + function helpers.powerset(s) + if not s then return {} end + local t = {{}} + for i = 1, #s do + for j = 1, #t do + t[#t+1] = {s[i],unpack(t[j])} + end + end + return t + end + -- }}} return helpers