All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 06/11 RFC] support/scripts: introduce a symbol formatter to generate package lists
Date: Sun, 1 Jun 2014 01:09:29 +0200	[thread overview]
Message-ID: <20140531230929.GL3522@free.fr> (raw)
In-Reply-To: <CAHXCMMLMiBHwmpg66rt-Yrrj7H9A=HTtbsKwNuumofRti873FQ@mail.gmail.com>

Samuel, All,

On 2014-05-31 23:20 +0200, Samuel Martin spake thusly:
> On Thu, May 29, 2014 at 10:38 PM, Yann E. MORIN <yann.morin.1998@free.fr> wrote:
[--SNIP--]

Typoes fixed.

> > What the formatter should ouput depends on its arguments:
> >   - if none are passed, the layout is returned,
> >   - if no symbol is passed, but the header label is, it returns
> >     the header line,
> >   - otherwise, it returns the formatted line for a symbol.
> 
> The more I think about this, the more I feel it fragile (i.e. using 2
> variables for a tristate) :-/
> In the end, the header argument and the symbol one are just some data
> processed by the formatter.
> Maybe we should just replace the header and symbol kwargs by a data
> one, and add another argument telling what should return the
> formatter: either the layout, the header line or a symbol line.

OK, I see what you mean. Something like the following?

    format_symbol_prompt(self, what=None, symbol=None, header=None,
                         root=None, enable_choice=False, header=None,
                         get_label_func=lambda x: "?"):
        if what is None:
            throw an exception
        if what == "layout":
            return ("bla","bla")
        if what == "header":
            return formated_header(header)
        if what == "symbol":
            return formated_symbol(symbol)
        throw an exception

However, I don;t get what you mean by "a data argument". Do you mean a
kind of casting the arg whether we're asked to render a header or a
symbol? How does one casts in Python?

Oh wait, duck-typing, right?

[--SNIP--]
> > diff --git a/support/scripts/gen-manual-lists.py b/support/scripts/gen-manual-lists.py
> > index 7144ca3..8311929 100644
> > --- a/support/scripts/gen-manual-lists.py
> > +++ b/support/scripts/gen-manual-lists.py
> > @@ -109,50 +109,33 @@ def get_symbol_parents(item, root=None, enable_choice=False):
> >
> >
> >  def format_asciidoc_table(root, get_label_func, filter_func=lambda x: True,
> > -                          enable_choice=False, sorted=True, sub_menu=True,
> > +                          format_func=lambda x: "",
> 
> usually for default lambda function, I set: lambda x: x

But I do not want it to return anything, I want it to return a string.

Or do you expect that an exception would be thrown out in case an object
is used that is not a string later in the call chain? I don't like that
too much...

Alternatively, as Maxime said on IRC, I coiuld just set it to None, and
get an exception if it is no passed by the caller.

Except (aha!) setting it to a lambda makes it explicit it has to be a
function.

So, OK, I'll use your default lambda. At least, we'd get an exception if
someone forgets to pass the function.

> > @@ -180,22 +163,22 @@ class Buildroot:
> >              'filename': "package-list",
> >              'root_menu': "Target packages",
> >              'filter': "_is_real_package",
> > +            'format': '_format_symbol_prompt_location',
> 
> For dictionary, usually, single-quotes are used for the key and
> double-quotes for the value (when it's a string), though both single
> and double quote can be used in both cases (key and value).
> Here my point is more about consistency with the rest of the file.

Yep, fixed the three.

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

  reply	other threads:[~2014-05-31 23:09 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-29 20:38 [Buildroot] [PATCH 0/11 RFC] Add list of virtual packages to manual (branch yem/manual) Yann E. MORIN
2014-05-29 20:38 ` [Buildroot] [PATCH 01/11 RFC] support/scripts: prepare expanding the packages lists Yann E. MORIN
2014-05-29 20:38 ` [Buildroot] [PATCH 02/11 RFC] support/scripts: document args to _is_package() in gen-manual-lists Yann E. MORIN
2014-05-31 21:18   ` Samuel Martin
2014-05-29 20:38 ` [Buildroot] [PATCH 03/11 RFC] support/scripts: prepare handling virtual packages in generated lists Yann E. MORIN
2014-05-31 21:19   ` Samuel Martin
2014-05-31 22:37     ` Yann E. MORIN
2014-05-29 20:38 ` [Buildroot] [PATCH 04/11 RFC] support/scripts: do not display " Yann E. MORIN
2014-05-31 21:19   ` Samuel Martin
2014-05-31 22:38     ` Yann E. MORIN
2014-05-29 20:38 ` [Buildroot] [PATCH 05/11 RFC] support/scripts: who's responsibile to decide what is a package Yann E. MORIN
2014-05-31 21:20   ` Samuel Martin
2014-05-31 22:39     ` Yann E. MORIN
2014-06-01 15:22       ` Samuel Martin
2014-05-29 20:38 ` [Buildroot] [PATCH 06/11 RFC] support/scripts: introduce a symbol formatter to generate package lists Yann E. MORIN
2014-05-31 21:20   ` Samuel Martin
2014-05-31 23:09     ` Yann E. MORIN [this message]
2014-06-01 15:45       ` Samuel Martin
2014-05-29 20:38 ` [Buildroot] [PATCH 07/11 RFC] package/cryptodev: make it behave more like other virtual packages Yann E. MORIN
2014-05-31 21:21   ` Samuel Martin
2014-05-29 20:38 ` [Buildroot] [PATCH 08/11 RFC] package/jpeg: " Yann E. MORIN
2014-05-31 21:21   ` Samuel Martin
2014-05-29 20:38 ` [Buildroot] [PATCH 09/11 RFC] package/mesa3d: rename the prompt Yann E. MORIN
2014-05-31 21:21   ` Samuel Martin
2014-05-29 20:38 ` [Buildroot] [PATCH 10/11 RFC] support/scripts: generate a list of virtual packages Yann E. MORIN
2014-05-31 21:25   ` Samuel Martin
2014-05-31 22:44     ` Yann E. MORIN
2014-05-31 22:49       ` Yann E. MORIN
2014-05-29 20:38 ` [Buildroot] [PATCH 11/11 RFC] docs/manual: add the virtual packages list Yann E. MORIN
2014-05-31 21:25   ` Samuel Martin
2014-05-31 21:18 ` [Buildroot] [PATCH 0/11 RFC] Add list of virtual packages to manual (branch yem/manual) Samuel Martin
2014-05-31 22:45   ` Yann E. MORIN

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140531230929.GL3522@free.fr \
    --to=yann.morin.1998@free.fr \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.