From: Thorsten Kampe <thorsten@thorstenkampe.de>
To: zsh-users@sunsite.dk
Subject: Re: Justifying text output
Date: Fri, 12 Mar 2004 23:33:34 +0100 [thread overview]
Message-ID: <33snq6yy99bx$.dlg@thorstenkampe.de> (raw)
In-Reply-To: <2136.1079089152@csr.com>
* Peter Stephenson (2004-03-12 11:59 +0100)
> Thorsten Kampe wrote:
>> I wrote a little script[1] that compiles the main zsh config files. Is
>> there any way to make the "[ ok ]"/"[ failed ]" messages on the right
>> justified?
>
> There are various ways; most involve assigning the variable-length part
> of the message to a string. You should probably not put any escape
> characters in there so it doesn't include them in the length
> calculation (though if the escape sequences are all the same you would
> get away with it).
>
> The standard ksh way is (using a simplified example) to specify left
> justification for a parameter:
A "parameter" is a variable in "zshspeak"? And typeset declares the
type of the variable because Bourne shells "think" everything is a
string? ("Unlike many other programming languages, Bash does not
segregate its variables by "type". Essentially, Bash variables are
character strings" -- Advanced bash scripting Guide)
> typeset -L 40 msg
> for msg in "message one" "a longer message here" "short"; do
> print ${msg} "[ WOW ]"
> done
> [...]
> You can avoid using the `-L 40' if you change ${msg} to ${(r.40.)msg}.
> That's a zsh extension which pads to the given width with spaces. The
> `r' appears instead of `l' because it indicates where the padding goes,
> not where the justification is.
Where is that documented?
> However, you can actually get away without assigning the message to a
> parameter:
>
> print ${(r.40.):-"message one"} "WOW"
> print ${(r.40.):-"a longer message here"} "WOW"
> print ${(r.40.):-"short"} "WOW"
Again: I couldn't find anything about than in the manpage (man
zshbuiltins for "printf"). What does ":-" do? Substring selection.
String formatting?
> That works because zsh treats the absence of a parameter name as an
> unset parameter, so it uses the normal logic for :-. In other words,
> `if the length of the parameter is zero, substitute the following string
> instead'. The (r.40.) padding flag works just the same. You can
> include further substitutions in the text, so this would still work in
> your case.
Plain magic to me.
Thorsten
next prev parent reply other threads:[~2004-03-12 22:34 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-03-12 2:01 Thorsten Kampe
2004-03-12 10:55 ` Bart Schaefer
2004-03-12 23:24 ` Thorsten Kampe
2004-03-13 6:24 ` Bart Schaefer
2004-03-13 17:48 ` Thorsten Kampe
2004-03-13 18:58 ` Oliver Kiddle
2004-03-12 10:59 ` Peter Stephenson
2004-03-12 22:33 ` Thorsten Kampe [this message]
2004-03-13 3:29 ` Thorsten Kampe
2004-03-12 11:28 ` Oliver Kiddle
2004-03-12 22:33 ` Thorsten Kampe
2004-03-12 23:03 ` Pavol Juhas
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='33snq6yy99bx$.dlg@thorstenkampe.de' \
--to=thorsten@thorstenkampe.de \
--cc=zsh-users@sunsite.dk \
/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.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
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).