This is very useful thanks, I ll try to migrate the JSON exporter to this
model.

Dirk: I think you have missed a patch that adds the divecomputer data to
the exports.


On Tue, Aug 26, 2014 at 10:02 PM, Linus Torvalds <
torva...@linux-foundation.org> wrote:

> On Tue, Aug 26, 2014 at 11:24 AM, Gehad Elrobey <gehadelro...@gmail.com>
> wrote:
> > I think this can be done easily by just checking if the item is the last
> > item in the array before putting the commas.
>
> So, quite frankly, you guys need to learn a very clean and simple
> model for outputting lists with separators.
>
> The way to generate clean separators is to have a separator string
> variable, and output it *before* the entry. And initialize it to empty
> (or a prefix for the whole thing), and then in the loop just
> unconditionally set it to the separator for the next entry.
>
> For example, do something like this:
>
>     char *separator = "\"tags\": [ \"";
>
>     if (!list)
>         return;
>
>     do {
>         put_string(b, separator);
>         put_HTML_quoted(b, list->tag->name);
>         separator = "\", \"";
>         list = list->next;
>     } while (list);
>     put_string("\" ]");
>
> is a clean and efficient way to generate something like this:
>
>    "tags": [ "entry1", "entry2" ]
>
> Note how it doesn't need any special cases or conditionals in the
> code. There's no test for "is this the first/last entry". It
> JustWorks(tm). The only special case is the empty list, which for
> things like this does tend to need to be a special case regardless
> (because you generally wouldn't want to output anything at all for
> that case - no empty list, no brackets, no "tags", no nothing). Also
> note that this shows how you can often combine the "first separator is
> different" with the prefix you need, and make the initial part of the
> string be that first "separator".
>
> It's a very useful and simple coding pattern for things like this.
>
>                 Linus
>
_______________________________________________
subsurface mailing list
subsurface@hohndel.org
http://lists.hohndel.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to