-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Andrei Thorp wrote:
> I wanna get my patches reviewed dammit ;)

And I want to get done reviweing them, dammit.

> Subject: [PATCH 4/4] basic_mpd: Imported
> diff --git a/basic_mpd/init.lua b/basic_mpd/init.lua
> new file mode 100644
> index 0000000..6df6727
> --- /dev/null
> +++ b/basic_mpd/init.lua
[snip]
> +local defaults = {
> +        format = "$title - $album - $artist",
> +        length = 75,
> +        unknown = "(unknown)",
> +}
> +local settings = {}
> +for key, value in pairs(defaults) do
> +        settings[key] = value
> +end

Uhm... why don't you just put the defaults in settings and let the user override
them?

> +local widget = widget({ type = "textbox",
> +                        name = "mpd-playing",
> +                        align = "left" })

"align"? Wasn't that the funny thing which was teared, feathered, shot, buried
and exploded by farhaven? (and then he started to *really* hurt it)

"name"? If "align" is a zombie, "name" never was alive in the first place, 
right?

> +-- Utility function to handle the text for MPD
> +-- @param songinfo: a table with fields "artist", "album", "title" in text
> +-- @return formatted (settings.format) string to display on the widget. This
> +-- respects settings.length and tries to make fields as close to the same
> +-- lenghths as possible if shortening is required.
      ^^^^^^^^
lengths

> +local function format_metadata(songinfo)
> +        format = settings.format or defaults.format
> +
> +        if (settings.length or defaults.length) <= 0 then
> +                return ""
> +        end
> +
> +        used_keys = {}
> +        start = 1
> +        stop = 1
> +        while start do
> +                start, stop = string.find(format, "%$%w+", stop)
> +                key = string.match(format, "%$(%w+)", stop)
> +                if key then
> +                        if songinfo[key] then
> +                                used_keys[key] = songinfo[key]
> +                        else
> +                                used_keys[key] = settings.unknown or
> +                                                 defaults.unknown
> +                        end
> +                end
> +        end

Ah, the joy of doing string-processing in Lua...

I don't remember the details, but there was some lua function which let you do

for match in <here's the part that I forgot> do

I *think* it might have been :gmatch() (for match in format:gmatch("<dunno>")?)

> +        retval = ""
> +        while true do
> +                retval = string.gsub(format, "%$(%w+)", used_keys)
> +                if #retval > (settings.length or defaults.length) then
> +                        longest_key = nil
> +                        longest_value = ""
> +                        for key, value in pairs(used_keys) do
> +                                if #value > #longest_value then
> +                                        longest_key = key
> +                                        longest_value = value
> +                                end
> +                        end
> +                        if longest_key then
> +                                -- shorten the longest by 1
> +                                used_keys[longest_key] = string.sub( 
> used_keys[longest_key],
> +                                                   1,
> +                                                   #longest_value - 1)
> +                        else
> +                                -- Seems like the format itself's too long
> +                                err = "obvious.basic_mpd: impossible to fit 
> " ..
> +                                       "output into " .. (settings.length or
> +                                       defaults.length) .. " characters.\n" 
> ..
> +                                       "Widget paused."
> +                                naughty.notify({ text = err, timeout = 0 })
> +                                lib.hooks.timer.stop(update)
> +                                return ""
> +                        end
> +                else
> +                        -- All good!
> +                        break
> +                end
> +        end
> +        return awful.util.escape(retval)
> +end

I haven't even tried to understand it, looks awful. :(

> +-- Updates the widget's display
> +function update()
> +        local status = lib.mpd.send("status")
> +        local now_playing, songstats
> +
> +        if not status.state then
> +                now_playing = "Music Off"
> +                now_playing = lib.util.colour("yellow", now_playing)

You misspelled "color" *duck*

> +        elseif status.state == "stop" then
> +                now_playing = "Music Stopped"
> +        else
> +                songstats = lib.mpd.send("playlistid " .. status.songid)

Heh, my "mpd lib" can do that as-well... The do-it-yourself lib.

> +                format = settings.format or defaults.format
> +                if type(format) == "string" then
> +                        now_playing = format_metadata(songstats)
> +                elseif type(format) == "function" then
> +                        now_playing = format(songstats)
> +                else
> +                        naughty.notify({ text = "obvious.basic_mpd: Invalid 
> " ..
> +                                                "display format. Widget " ..
> +                                                "paused." })
> +                        lib.hooks.timer.stop(update)
> +                end
> +        end
> +
> +        widget.text = now_playing
> +end
> +update()
> +lib.hooks.timer.register(1, 30, update, "basic_mpd widget refresh rate")
> +
> +-- SETTINGS
[snip, lots of functions here]

Uhm, why? Just let the user modify settings directly. If he wants to shoot it
into his foot, let him.

> diff --git a/basic_mpd/readme b/basic_mpd/readme
> new file mode 100644
> index 0000000..20d2d29
> --- /dev/null
> +++ b/basic_mpd/readme

skipped this, I'm better at critizing code than free text. (Ask farhaven, he
gotta do sth too :P)

> diff --git a/lib/mpd/init.lua b/lib/mpd/init.lua
> new file mode 100644
> index 0000000..d1f0e35
> --- /dev/null
> +++ b/lib/mpd/init.lua
> @@ -0,0 +1,160 @@
> +-- Small interface to MusicPD
> +-- based on a netcat version from Steve Jothen <sjothen at gmail dot com>
> +-- (see http://github.com/otkrove/ion3-config/tree/master/mpd.lua)
> +--
> +-- Copyright (c) 2008-2009, Alexandre Perrin <kaw...@kaworu.ch>
> +-- All rights reserved.
> +--
> +-- Redistribution and use in source and binary forms, with or without
> +-- modification, are permitted provided that the following conditions
> +-- are met:
> +--
> +-- 1. Redistributions of source code must retain the above copyright
> +--    notice, this list of conditions and the following disclaimer.
> +-- 2. Redistributions in binary form must reproduce the above copyright
> +--    notice, this list of conditions and the following disclaimer in the
> +--    documentation and/or other materials provided with the distribution.
> +-- 4. Neither the name of the author nor the names of its contributors
> +--    may be used to endorse or promote products derived from this software
> +--    without specific prior written permission.
> +--
> +-- THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
> +-- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> +-- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
> +-- ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
> +-- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
> +-- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
> +-- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> +-- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
> +-- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
> +-- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> +-- SUCH DAMAGE.
[snip, haven't looked closely at the stuff after this]

This screams "GPL INCOMPATIBLE". Ask jd if awesome modules have to be
GPL-compatible, I'm not sure what the GPL says about scripting languages like 
lua.

Uli
- --
"Do you know that books smell like nutmeg or some spice from a foreign land?"
                                                  -- Faber in Fahrenheit 451
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)

iQEcBAEBCAAGBQJKcaxgAAoJECLkKOvLj8sG3ycIAJ4+u30RFhbdyTzq/IjQQG7w
7L2DXPpIQJrEHPUT9VVZ7RNzI5uwKaDKlD14rli/Zd5hDR1DXWaLul4Xlzyy2iGm
sRokrZaRJPL7W0kU0MNDJUxQY3r5kwAtwOeVHgIzsSQvtP2VndkXqL8NtGob9EGv
GR5DJhY6PLgZCZCRzrNhUplEBWL4rsKEaKM08sI9IqwLRMdSxv69kemA3FG+qYmF
ukm/PUWqIre/Mh9+1EZlO3bGVTdhg25iHwQk491IQBKwDW401QAw1KfhSq0PcDys
GyD9fbOvPWFIDneT7ett1GVvnQWWtLpOQqJMfzQUo+PUYlDSHWgZ0VytZWjs1Cc=
=PbKr
-----END PGP SIGNATURE-----

-- 
To unsubscribe, send mail to awesome-devel-unsubscr...@naquadah.org.

Reply via email to