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