Re: Ascii Elephant for text based protocols - Final function proposal - Mailing list pgsql-general

From Charles Clavadetscher
Subject Re: Ascii Elephant for text based protocols - Final function proposal
Date
Msg-id 009301d1b03a$9643ea00$c2cbbe00$@swisspug.org
Whole thread Raw
Responses Re: Ascii Elephant for text based protocols - Final function proposal
List pgsql-general
Hello all

> -----Original Message-----
> From: pgsql-general-owner@postgresql.org [mailto:pgsql-general-owner@postgresql.org] On Behalf Of Karsten Hilbert
> Sent: Dienstag, 17. Mai 2016 09:23
> To: pgsql-general@postgresql.org
> Subject: Re: [GENERAL] Ascii Elephant for text based protocols - Final
>
> On Tue, May 17, 2016 at 06:58:14AM +0200, Charles Clavadetscher wrote:
>
> > A question to the naming. I find pg_logo() also a good name, but is
> > the prefix pg_* not reserved for system functions? Of course I could
> > use the name I want, but was wondering if there is a policy or a best
> > practice in this area.
>
> pg_logo would only be suitable if it got blessing from "higher up".

Well. This question will be addressed when the body of the function is complete. Now I have a proposal which is in the
attachment.

The function accepts a set of arguments, all having default values:

p_frame BOOLEAN DEFAULT false: values true or false.
p_text TEXT[] DEFAULT NULL: Free text as array of text. Each element of the array is a line of text. Maximum of 8
lines.What is 
above is ignored.
p_position TEXT DEFAULT 'bottom': position of the text in relation to the pic. bottom or right.
p_align TEXT DEFAULT 'center': Alignment of pic AND text, when p_position is bottom, only of the text otherwise.
Values:left, 
center, right.
p_valign TEXT DEFAULT 'center': Vertical alignement of the text. Only applies if p_position is right. Values: top,
center,bottom. 

Below I add a set of sample outputs. Feel free to test it and all feedbacks are as usual very much appreciated.

Regards,
Charles

Sample outputs:

No arguments (all defaults):
select pg_logo();
        pg_logo
-----------------------
   ____  ______  ___
  /    )/      \/   \
 (     / __    _\    )
  \    (/ o)  ( o)   )
   \_  (_  )   \ ) _/
     \  /\_/    \)/
      \/ <//|  |\\>
           _|  |
           \|_/
(9 rows)

Add frame:
select pg_logo(true);
          pg_logo
---------------------------
 +-----------------------+
 |   ____  ______  ___   |
 |  /    )/      \/   \  |
 | (     / __    _\    ) |
 |  \    (/ o)  ( o)   ) |
 |   \_  (_  )   \ ) _/  |
 |     \  /\_/    \)/    |
 |      \/ <//|  |\\>    |
 |           _|  |       |
 |           \|_/        |
 |                       |
 +-----------------------+
(12 rows)

Add text using default positioning and alignments:
select pg_logo(true,ARRAY['Swiss PGDay 2016','24.06.2016 - HSR Rapperswil','Switzerland','http://www.pgday.ch']);
             pg_logo
---------------------------------
 +-----------------------------+
 |      ____  ______  ___      |
 |     /    )/      \/   \     |
 |    (     / __    _\    )    |
 |     \    (/ o)  ( o)   )    |
 |      \_  (_  )   \ ) _/     |
 |        \  /\_/    \)/       |
 |         \/ <//|  |\\>       |
 |              _|  |          |
 |              \|_/           |
 |                             |
 |      Swiss PGDay 2016       |
 | 24.06.2016 - HSR Rapperswil |
 |         Switzerland         |
 |     http://www.pgday.ch     |
 |                             |
 +-----------------------------+
(17 rows)

Position text on the right hand side of the pic:
select pg_logo(true,ARRAY['Swiss PGDay 2016','24.06.2016 - HSR
Rapperswil','Switzerland','http://www.pgday.ch'],'right');
                        pg_logo
-------------------------------------------------------
 +---------------------------------------------------+
 |   ____  ______  ___                               |
 |  /    )/      \/   \                              |
 | (     / __    _\    )      Swiss PGDay 2016       |
 |  \    (/ o)  ( o)   ) 24.06.2016 - HSR Rapperswil |
 |   \_  (_  )   \ ) _/          Switzerland         |
 |     \  /\_/    \)/        http://www.pgday.ch     |
 |      \/ <//|  |\\>                                |
 |           _|  |                                   |
 |           \|_/                                    |
 |                                                   |
 +---------------------------------------------------+
(12 rows)

Change text alignment to left:
select pg_logo(true,ARRAY['Swiss PGDay 2016','24.06.2016 - HSR
Rapperswil','Switzerland','http://www.pgday.ch'],'right','left');
                        pg_logo
-------------------------------------------------------
 +---------------------------------------------------+
 |   ____  ______  ___                               |
 |  /    )/      \/   \                              |
 | (     / __    _\    ) Swiss PGDay 2016            |
 |  \    (/ o)  ( o)   ) 24.06.2016 - HSR Rapperswil |
 |   \_  (_  )   \ ) _/  Switzerland                 |
 |     \  /\_/    \)/    http://www.pgday.ch         |
 |      \/ <//|  |\\>                                |
 |           _|  |                                   |
 |           \|_/                                    |
 |                                                   |
 +---------------------------------------------------+
(12 rows)

Change vertical alignment of text to bottom:
select pg_logo(true,ARRAY['Swiss PGDay 2016','24.06.2016 - HSR
Rapperswil','Switzerland','http://www.pgday.ch'],'right','left','bottom');
                        pg_logo
-------------------------------------------------------
 +---------------------------------------------------+
 |   ____  ______  ___                               |
 |  /    )/      \/   \                              |
 | (     / __    _\    )                             |
 |  \    (/ o)  ( o)   )                             |
 |   \_  (_  )   \ ) _/                              |
 |     \  /\_/    \)/    Swiss PGDay 2016            |
 |      \/ <//|  |\\>    24.06.2016 - HSR Rapperswil |
 |           _|  |       Switzerland                 |
 |           \|_/        http://www.pgday.ch         |
 |                                                   |
 +---------------------------------------------------+
(12 rows)

And all other combinations, e.g. Put text below the pic and left aligned without frame:
select pg_logo(false,ARRAY['Swiss PGDay 2016','24.06.2016 - HSR
Rapperswil','Switzerland','http://www.pgday.ch'],'bottom','left');
           pg_logo
-----------------------------
   ____  ______  ___
  /    )/      \/   \
 (     / __    _\    )
  \    (/ o)  ( o)   )
   \_  (_  )   \ ) _/
     \  /\_/    \)/
      \/ <//|  |\\>
           _|  |
           \|_/

 Swiss PGDay 2016
 24.06.2016 - HSR Rapperswil
 Switzerland
 http://www.pgday.ch
(14 rows)

>
> Karsten
> --
> GPG key ID E4071346 @ eu.pool.sks-keyservers.net
> E167 67FD A291 2BEA 73BD  4537 78B9 A9F9 E407 1346
>
>
> --
> Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general

Attachment

pgsql-general by date:

Previous
From: Victor Yegorov
Date:
Subject: Re: Ascii Elephant for text based protocols - Final
Next
From: "David G. Johnston"
Date:
Subject: Re: FIRST_VALUE argument must appear in group by?