git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jon Seymour <jon.seymour@gmail.com>
To: Sverre Rabbelier <srabbelier@gmail.com>
Cc: Julian Phillips <julian@quantumfyre.co.uk>,
	git@vger.kernel.org, Eric Raymond <esr@thyrsus.com>,
	Junio C Hamano <gitster@pobox.com>
Subject: Re: [RFC/PATCH 0/3] JSON/XML output for scripting interface
Date: Mon, 12 Apr 2010 08:22:41 +1000	[thread overview]
Message-ID: <q2i2cfc40321004111522kd177fb89k6b9265c641d7deec@mail.gmail.com> (raw)
In-Reply-To: <p2ofabb9a1e1004111050x660c37fdke4d5316baaa0cfbe@mail.gmail.com>

I can see that retrofitting this more widely would add quite a lot of
conditional logic to a lot of places.

If one was designing for both line-oriented and structured outputs
from the start, I imagine one would build a map for each record, and
then hand that to the output context when it is complete, allowing the
considerations of both line orientation and structured output to be
encapsulated within the backend. Self-describing output formats can
use a simple map without needing to know the record type, but line
oriented outputs, of course, would need to know the type of record in
order to select the correct line formatter.

So, would it be worth providing a hint as to record type in the
output_start_object call so that if it was later desired to subsume
line-oriented formats under the same framework, there is enough
information available to the backend to do that?

[ And, yes, I understand that to making line-oriented formats a
backend would be a reasonably invasive change to existing code that
would involve a level of indirection and abstraction that may not be
to everyone's taste. ]

jon.

On Mon, Apr 12, 2010 at 3:50 AM, Sverre Rabbelier <srabbelier@gmail.com> wrote:
> Heya,
>
> On Sun, Apr 11, 2010 at 19:45, Julian Phillips <julian@quantumfyre.co.uk> wrote:
>> I think that there probably are commands where it will be more work to
>> integrate the output - but I think that is probably more to do with the
>> structure of the current code than the API of the new.  Does it make a
>> difference what the API of the new output code is if there isn't currently
>> a sensible hook-in point?
>
> No you are right, the existance of such hard-to-change commands does
> not really affect the API design in this case, although I think it
> might be a good idea to try out at least one such command before
> committing to using this API. For example, it might turn out that
> there's an elegant way to hook in, or that adding all those if
> (output_style != OUTPUT_NORMAL)  statements gets cluttery and there
> should be a different way to do things instead.
>
>> If code has been written without the expectation that the output format
>> could be changed then the effort to add a new output format could be
>> considerably more than for status or ls-tree.  However, with the
>> frontend/backend design hopefully we only have to endure the effort once to
>> get multiple output formats.
>
> I'm curious to see where this will lead us :).
>
> --
> Cheers,
>
> Sverre Rabbelier
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

  reply	other threads:[~2010-04-11 22:29 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-11 11:37 [RFC/PATCH 0/3] JSON/XML output for scripting interface Julian Phillips
2010-04-11 11:37 ` [RFC/PATCH 1/3] strbuf: Add strbuf_vaddf function Julian Phillips
2010-04-11 12:42   ` Erik Faye-Lund
2010-04-11 12:59     ` Julian Phillips
2010-04-11 11:37 ` [RFC/PATCH 2/3] add a library of code for producing structured output Julian Phillips
2010-04-11 12:51   ` Erik Faye-Lund
2010-04-11 13:03     ` Julian Phillips
2010-04-11 15:46   ` Jakub Narebski
2010-04-11 18:16   ` Junio C Hamano
2010-04-11 18:26     ` Sverre Rabbelier
2010-04-11 19:21     ` Julian Phillips
2010-04-11 20:34       ` Jakub Narebski
2010-04-11 20:46         ` Julian Phillips
2010-04-11 20:57           ` Eric Raymond
2010-04-11 11:37 ` [RFC/PATCH 3/3] status: add support for " Julian Phillips
2010-04-11 15:48 ` [RFC/PATCH 0/3] JSON/XML output for scripting interface Sverre Rabbelier
2010-04-11 17:30   ` Julian Phillips
2010-04-11 17:34     ` Sverre Rabbelier
2010-04-11 17:45       ` Julian Phillips
2010-04-11 17:50         ` Sverre Rabbelier
2010-04-11 22:22           ` Jon Seymour [this message]
2010-04-11 22:34             ` Eric Raymond
2010-04-11 23:25             ` Jon Seymour
2010-04-11 23:30               ` Julian Phillips

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=q2i2cfc40321004111522kd177fb89k6b9265c641d7deec@mail.gmail.com \
    --to=jon.seymour@gmail.com \
    --cc=esr@thyrsus.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=julian@quantumfyre.co.uk \
    --cc=srabbelier@gmail.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).