scripts/marking.lua
changeset 4 bca17e4a9851
equal deleted inserted replaced
3:a5f864d4207f 4:bca17e4a9851
       
     1 
       
     2 marked_jids = {}
       
     3 
       
     4 function mark ()
       
     5 	local jid = main.current_buddy ()
       
     6 	marked_jids[jid] = true
       
     7 	main.print_info ( jid, "Marked" )
       
     8 end
       
     9 
       
    10 function unmark ()
       
    11 	local jid = main.current_buddy ()
       
    12 	marked_jids[jid] = nil
       
    13 	main.print_info ( jid, "Unmarked" )
       
    14 end
       
    15 
       
    16 function mark_toggle ()
       
    17 	local jid = main.current_buddy ()
       
    18 	if marked_jids[jid] then
       
    19 		return unmark ()
       
    20 	else
       
    21 		return mark ()
       
    22 	end
       
    23 end
       
    24 
       
    25 function marked ()
       
    26 	local ret = {}
       
    27 	for jid, v in pairs ( marked_jids ) do
       
    28 		table.insert ( ret, jid )
       
    29 	end
       
    30 	return ret
       
    31 end
       
    32 
       
    33 function foreach_marked ( callback )
       
    34 	for jid, v in pairs ( marked_jids ) do
       
    35 		if v then
       
    36 			callback ( jid )
       
    37 		end
       
    38 	end
       
    39 end
       
    40 
       
    41 function marked_clear ()
       
    42 	marked_jids = {}
       
    43 end
       
    44 
       
    45 main.add_command ( 'marked',
       
    46 	function ( args )
       
    47 		local cmd = args:match ( "^%s*(%w+)" )
       
    48 		if cmd == 'clear' then
       
    49 			marked_clear ()
       
    50 		elseif cmd == 'do' then
       
    51 			local command = args:match ( "^%s*%w+%s+(.+)" )
       
    52 			foreach_marked (
       
    53 				function ( jid )
       
    54 					main.run ( string.format ( command, jid ) )
       
    55 				end )
       
    56 		else
       
    57 			print ( "Marked jids:" )
       
    58 			foreach_marked (
       
    59 				function ( jid )
       
    60 					print ( ' - ' .. jid )
       
    61 				end )
       
    62 		end
       
    63 	end )
       
    64 
       
    65 commands_help['marked'] = "[clear | do mcabber_command]\n\nOperates on marked buddies. Without arguments prints list of marked jids.\nCommand should contain %s in place, where jid should be inserted."
       
    66 
       
    67 -- vim: se ts=4: --