comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Simple string template formatter (Dmitry A. Kazakov take note)
Date: Wed, 22 Nov 2017 23:26:17 +0100
Date: 2017-11-22T23:26:17+01:00	[thread overview]
Message-ID: <ov4ti7$uf3$1@gioia.aioe.org> (raw)
In-Reply-To: ov4mcm$fn2$1@gioia.aioe.org

On 2017-11-22 21:23, Victor Porton wrote:
> I created a simple string template formatter (no if-then-else, no include,
> just substitution of variables).
> 
> Example:
> 
> "First phrase: {1}. Second phrase: {2}."
> 
> This formatter is suitable for short strings, such as phrases for gettext.
> 
> https://github.com/vporton/xml-boiler/blob/master/src/boiler-auxiliary-string_formatter.ads
> https://github.com/vporton/xml-boiler/blob/master/src/boiler-auxiliary-string_formatter.adb
> 
> My code was not tested!
> 
> Dmitry, I ask you to add something like this to your Simple Components.

Thanks, but I specifically avoid this ugly paradigm. String editing in 
Simple Components deploys a different schema of consequent reading input 
/ writing output string:

    Put
    (  Destination : in out String;
       Pointer     : in out Integer; -- Moving update position
       Value       : Something;
       Field       : Natural   := 0;
       Justify     : Alignment := Left;
       Fill        : Character := ' '
    );

Formatting is one of bad ideas FORTRAN gave us. It is necessarily 
untyped, inefficient and unsafe. Microsoft has more than a dozen 
incarnations of sprintf which is a perfect illustration that the idea is 
just beyond any hope.

I also intentionally avoid so-called "global" operations on strings. 
That is operations taking string as a whole as opposed to "local" 
operations dealing with a string slice. Most "global" operations: find, 
index, substitute, split, translate, tokenize, copy etc are bad. Format 
is a "global" operation. For practical purpose of text processing 
nothing of this is required or makes code clean.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de

      parent reply	other threads:[~2017-11-22 22:26 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-22 20:23 Simple string template formatter (Dmitry A. Kazakov take note) Victor Porton
2017-11-22 20:44 ` Victor Porton
2017-11-22 22:26 ` Dmitry A. Kazakov [this message]
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox