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

Reply via email to