Heya, The patch adds a function for wrapping lines on long strings. I'm using it in awful.help and it could also be used in naughty and otherwise.
I'm wondering, by the way, perhaps this should be called string.wrap() and therefore string.escape(), string.unescape() - to follow table.hasitem/join example. To take the idea further, at least as far as awful.util goes, we could: checkfile -> file.validate file_readable -> file.readable subsets -> table.subsets And maybe more. The problem is that these functions are bound to be explicitly used by some users and this would be breaking API (again). We could of course deprecate them to make the process smoother but still. In fact, there's a lot more in the namespace that could be unified - think awful.tag.getproperty vs awful.client.property.get - at what stage would we be cleaning all of this up? cheers, koniu
From f827aacf9d44cad13d5d582e89b64b35c74b1e25 Mon Sep 17 00:00:00 2001 From: koniu <gkusni...@gmail.com> Date: Wed, 27 May 2009 16:49:20 +0100 Subject: [PATCH] awful.util: add linewrap() Signed-off-by: koniu <gkusni...@gmail.com> --- lib/awful/util.lua.in | 20 ++++++++++++++++++++ 1 files changed, 20 insertions(+), 0 deletions(-) diff --git a/lib/awful/util.lua.in b/lib/awful/util.lua.in index 5965bda..9878ffa 100644 --- a/lib/awful/util.lua.in +++ b/lib/awful/util.lua.in @@ -261,4 +261,24 @@ function table.hasitem(t, item) end end +--- Split a string into multiple lines +-- @param text String to wrap. +-- @param width Maximum length of each line. Default: 72. +-- @param indent Number of spaces added before each wrapped line. Default: 0. +-- @return The string with lines wrapped to width. +function linewrap(text, width, indent) + local text = text or "" + local width = width or 72 + local indent = indent or 0 + + local pos = 1 + return text:gsub("(%s+)()(%S+)()", + function(sp, st, word, fi) + if fi - pos > width then + pos = st + return "\n" .. string.rep(" ", indent) .. word + end + end) +end + -- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=80 -- 1.6.3.1