ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* ROT13 and alike
@ 2001-02-16 18:15 Giuseppe Bilotta
  2001-02-17 18:30 ` Taco Hoekwater
  2001-02-19 10:20 ` Hans Hagen
  0 siblings, 2 replies; 10+ messages in thread
From: Giuseppe Bilotta @ 2001-02-16 18:15 UTC (permalink / raw)


[-- Attachment #1: Type: text/plain, Size: 1066 bytes --]

Hello,
I'm trying to implement things like ROT13 and alike in ConTeXt, and
have some problems.

ROT13, for those who don't know, is a way to code text by swapping
the first 13 letters of the latin alphabet with the last 13 letters;
appling ROT13 to ROT13ed code returns the original message.

This kind of things can be achived with Virtual Fonts, but I don't
like the approach at all. Also Omega's OCP lists can do similar things.
Now, I was looking for another approach, working in pure TeX, and came
to the code snippet in the attached file (actually, che coding it
applies is not ROT13 but the code of a former Italian secret society,
"carbonari"; but the idea is similar). It works ... almost.

Two bugs are still present: space characters are ignored, and I get
a "Too many {'s" error ... I have half an idea to implement it
through verbatim to solve both the problems, but I don't know how
to write a verbatim module for ConTeXt ...

Any suggestions?

Giuseppe Bilotta

Using Microsoft products is like 
having sex without condoms---but
much less pleasurable

[-- Attachment #2: gb-rot.tex --]
[-- Type: application/octet-stream, Size: 3042 bytes --]

\newtoks\CarbonToks
\def\startCarbon#1{%
  \ifx#1\stopCarbon\relax\stopCarbon\else%
  \bgroup\aftergroup\startCarbon%
  \doCarbon#1\fi\egroup%
  }

\def\dodoCarbon#1{%
  \ifcat#1a
     \ifx#1a
          \doglobal\appendtoks o\to\CarbonToks%
     \else\ifx#1b
          \doglobal\appendtoks p\to\CarbonToks%
     \else\ifx#1c
          \doglobal\appendtoks g\to\CarbonToks%
     \else\ifx#1d
          \doglobal\appendtoks t\to\CarbonToks%
     \else\ifx#1e
          \doglobal\appendtoks i\to\CarbonToks%
     \else\ifx#1f
          \doglobal\appendtoks v\to\CarbonToks%
     \else\ifx#1g
          \doglobal\appendtoks c\to\CarbonToks%
     \else\ifx#1i
          \doglobal\appendtoks e\to\CarbonToks%
     \else\ifx#1l
          \doglobal\appendtoks r\to\CarbonToks%
     \else\ifx#1m
          \doglobal\appendtoks n\to\CarbonToks%
     \else\ifx#1n
          \doglobal\appendtoks m\to\CarbonToks%
     \else\ifx#1o
          \doglobal\appendtoks a\to\CarbonToks%
     \else\ifx#1p
          \doglobal\appendtoks b\to\CarbonToks%
     \else\ifx#1r
          \doglobal\appendtoks l\to\CarbonToks%
     \else\ifx#1s
          \doglobal\appendtoks z\to\CarbonToks%
     \else\ifx#1t
          \doglobal\appendtoks d\to\CarbonToks%
     \else\ifx#1v
          \doglobal\appendtoks f\to\CarbonToks%
     \else\ifx#1z
          \doglobal\appendtoks s\to\CarbonToks%
     \else\ifx#1A
          \doglobal\appendtoks O\to\CarbonToks%
     \else\ifx#1B
          \doglobal\appendtoks P\to\CarbonToks%
     \else\ifx#1C
          \doglobal\appendtoks G\to\CarbonToks%
     \else\ifx#1D
          \doglobal\appendtoks T\to\CarbonToks%
     \else\ifx#1E
          \doglobal\appendtoks I\to\CarbonToks%
     \else\ifx#1F
          \doglobal\appendtoks V\to\CarbonToks%
     \else\ifx#1G
          \doglobal\appendtoks C\to\CarbonToks%
     \else\ifx#1I
          \doglobal\appendtoks E\to\CarbonToks%
     \else\ifx#1L
          \doglobal\appendtoks R\to\CarbonToks%
     \else\ifx#1M
          \doglobal\appendtoks N\to\CarbonToks%
     \else\ifx#1N
          \doglobal\appendtoks M\to\CarbonToks%
     \else\ifx#1O
          \doglobal\appendtoks A\to\CarbonToks%
     \else\ifx#1P
          \doglobal\appendtoks B\to\CarbonToks%
     \else\ifx#1R
          \doglobal\appendtoks L\to\CarbonToks%
     \else\ifx#1S
          \doglobal\appendtoks Z\to\CarbonToks%
     \else\ifx#1T
          \doglobal\appendtoks T\to\CarbonToks%
     \else\ifx#1V
          \doglobal\appendtoks F\to\CarbonToks%
     \else\ifx#1Z
          \doglobal\appendtoks S\to\CarbonToks%
     \else\doglobal\appendtoks#1\to\CarbonToks%
     \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
     \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
     \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
     \fi\fi\fi\fi\fi\fi%
     \else\doglobal\appendtoks#1\to\CarbonToks%
     \fi
     }
\def\stopCarbon{\showthe\CarbonToks\the\CarbonToks\relax}

\starttext

\startCarbon
Ecco una prova di alfabeto carbonaro.
\stopCarbon

\stoptext

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: ROT13 and alike
  2001-02-16 18:15 ROT13 and alike Giuseppe Bilotta
@ 2001-02-17 18:30 ` Taco Hoekwater
  2001-02-18 12:50   ` Giuseppe Bilotta
  2001-02-19 10:20 ` Hans Hagen
  1 sibling, 1 reply; 10+ messages in thread
From: Taco Hoekwater @ 2001-02-17 18:30 UTC (permalink / raw)


Giuseppe Bilotta wrote:
> 
> 
> Any suggestions?

Here is a solution that is just a little bit more robust than
your one: it obeys spaces and is properly nested. It also allows
primitives in the input string (\par, for example); and \unexpanded
macros that dont have an argument.

Note that this is a hacker's version: you can't use this to process
arbitrary text: macro's that expand into something and e.g. accents
won't work!

In general, it is very hard to do this kind of stuff safely in TeX.
A verbatim module would probably be the best solution. OTOH, my
approach allows:

\section{\ROT{A section}}

% begin of code
%
% this is the converter itself. If it has to do much more than
% this, it might be better to use an \ifcase instead, but that 
% complicates the code rather a lot

\def\dorot#1{%
 \ifx a#1n\else \ifx b#1o\else \ifx c#1p\else \ifx d#1q\else
 \ifx e#1r\else \ifx f#1s\else \ifx g#1t\else \ifx h#1u\else
 \ifx i#1v\else \ifx j#1w\else \ifx k#1x\else \ifx l#1y\else
 \ifx m#1z\else \ifx n#1a\else \ifx o#1b\else \ifx p#1c\else
 \ifx q#1d\else \ifx r#1e\else \ifx s#1f\else \ifx t#1g\else
 \ifx u#1h\else \ifx v#1i\else \ifx w#1j\else \ifx x#1k\else
 \ifx y#1l\else \ifx z#1m\else
 #1%
 \fi \fi \fi \fi 
 \fi \fi \fi \fi 
 \fi \fi \fi \fi 
 \fi \fi \fi \fi 
 \fi \fi \fi \fi 
 \fi \fi \fi \fi 
 \fi \fi
}

% The startcommand. \afterassigment executes the next assignment
% first, (in this case a \let assignment), then afterward
% it expands the command between itself and the assignment.
% at that time, the assigment has already been done, so inside
% \dostartROT, \nexttok is the next token from the input.
%
% The trick with the space at the end is the way to make sure
% that spaces are seen as well: only *one* optional space
% is allowed after an equals sign. If there appears another
% space (that is: a space in the input), it will be assigned 
% instead.

\def\startROT{% 
 % here is the place to do other stuff, like
 % \bf or whatever. The next line has to stay
 % at the end of the definition.
 \afterassignment \dostartROT \let\nexttok= }

\def\stopROT{}

% \afterfi is a trick to prevent stack buildup if the text string
% is very long (as it might be)

\def\afterfi#1\fi{\fi#1}

% if the next token is \stopROT, execute it.
% otherwise, start over:

\def\dostartROT{%
 \ifx \nexttok \stopROT 
   \stopROT 
 \else
   \dorot{\nexttok}\afterfi\startROT
 \fi }

% parameter version:

\def\ROT#1{\startROT#1\stopROT}

% end of code

Greetings, Taco


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: ROT13 and alike
  2001-02-17 18:30 ` Taco Hoekwater
@ 2001-02-18 12:50   ` Giuseppe Bilotta
  2001-02-19 11:19     ` Hans Hagen
  0 siblings, 1 reply; 10+ messages in thread
From: Giuseppe Bilotta @ 2001-02-18 12:50 UTC (permalink / raw)


[-- Attachment #1: Type: text/plain, Size: 934 bytes --]

Taco Hoekwater wrote:

> Here is a solution that is just a little bit more robust than
> your one: it obeys spaces and is properly nested. It also allows
> primitives in the input string (\par, for example); and \unexpanded
> macros that dont have an argument.
> 
> Note that this is a hacker's version: you can't use this to process
> arbitrary text: macro's that expand into something and e.g. accents
> won't work!
> 
> In general, it is very hard to do this kind of stuff safely in TeX.
> A verbatim module would probably be the best solution. OTOH, my
> approach allows:
> 
> \section{\ROT{A section}}
> 
[snip code]

Well, that's an extremely instructive example!

I gave a look at the verbatim approach, and got to the
attached files.

They still don't handle accents etc; Hans, how to make
a verbatim that obeys cs's?

Giuseppe Bilotta

Using Microsoft products is like 
having sex without condoms---but
much less pleasurable

[-- Attachment #2: g-rot.zip --]
[-- Type: application/x-zip-compressed, Size: 1525 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: ROT13 and alike
  2001-02-16 18:15 ROT13 and alike Giuseppe Bilotta
  2001-02-17 18:30 ` Taco Hoekwater
@ 2001-02-19 10:20 ` Hans Hagen
  2001-02-19 22:45   ` Giuseppe Bilotta
  2001-02-20 15:58   ` Giuseppe Bilotta
  1 sibling, 2 replies; 10+ messages in thread
From: Hans Hagen @ 2001-02-19 10:20 UTC (permalink / raw)
  Cc: ConTeXt

At 07:15 PM 2/16/01 +0100, Giuseppe Bilotta wrote:

>ROT13, for those who don't know, is a way to code text by swapping
>the first 13 letters of the latin alphabet with the last 13 letters;
>appling ROT13 to ROT13ed code returns the original message.
>
>This kind of things can be achived with Virtual Fonts, but I don't
>like the approach at all. Also Omega's OCP lists can do similar things.
>Now, I was looking for another approach, working in pure TeX, and came
>to the code snippet in the attached file (actually, che coding it
>applies is not ROT13 but the code of a former Italian secret society,
>"carbonari"; but the idea is similar). It works ... almost.

Given that this secret society is okay i can provide a better solution. 

\starttext

\startmapping[rot13]
  \definecasemaps  65 to  77 lc +13 uc +13
  \definecasemaps  78 to  90 lc -13 uc -13
  \definecasemaps  97 to 109 lc +13 uc +13
  \definecasemaps 110 to 122 lc -13 uc -13
\stopmapping

\def\ToRotThirteen  #1{{\enablemapping[rot13]\lowercase{#1}}}
\def\FromRotThirteen#1{{\enablemapping[rot13]\uppercase{#1}}}

Ecco una prova di alfabeto carbonaro.

\ToRotThirteen{Ecco una prova di alfabeto carbonaro.}

\FromRotThirteen{\ToRotThirteen{Ecco una prova di alfabeto carbonaro.}}

\stoptext

-------------------------------------------------------------------------
                                  Hans Hagen | PRAGMA ADE | pragma@wxs.nl
                      Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
 tel: +31 (0)38 477 53 69 | fax: +31 (0)38 477 53 74 | www.pragma-ade.com
-------------------------------------------------------------------------


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: ROT13 and alike
  2001-02-18 12:50   ` Giuseppe Bilotta
@ 2001-02-19 11:19     ` Hans Hagen
  0 siblings, 0 replies; 10+ messages in thread
From: Hans Hagen @ 2001-02-19 11:19 UTC (permalink / raw)
  Cc: ConTeXt

At 01:50 PM 2/18/01 +0100, Giuseppe Bilotta wrote:
>Taco Hoekwater wrote:
>
>> Here is a solution that is just a little bit more robust than
>> your one: it obeys spaces and is properly nested. It also allows
>> primitives in the input string (\par, for example); and \unexpanded
>> macros that dont have an argument.
>> 
>> Note that this is a hacker's version: you can't use this to process
>> arbitrary text: macro's that expand into something and e.g. accents
>> won't work!
>> 
>> In general, it is very hard to do this kind of stuff safely in TeX.
>> A verbatim module would probably be the best solution. OTOH, my
>> approach allows:
>> 
>> \section{\ROT{A section}}
>> 
>[snip code]
>
>Well, that's an extremely instructive example!
>
>I gave a look at the verbatim approach, and got to the
>attached files.
>
>They still don't handle accents etc; Hans, how to make
>a verbatim that obeys cs's?

They will if you have an encoding that makes char>127 active

Hans
-------------------------------------------------------------------------
                                  Hans Hagen | PRAGMA ADE | pragma@wxs.nl
                      Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
 tel: +31 (0)38 477 53 69 | fax: +31 (0)38 477 53 74 | www.pragma-ade.com
-------------------------------------------------------------------------


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: ROT13 and alike
  2001-02-19 10:20 ` Hans Hagen
@ 2001-02-19 22:45   ` Giuseppe Bilotta
  2001-02-20 11:29     ` Hans Hagen
  2001-02-20 15:58   ` Giuseppe Bilotta
  1 sibling, 1 reply; 10+ messages in thread
From: Giuseppe Bilotta @ 2001-02-19 22:45 UTC (permalink / raw)
  Cc: ConTeXt

> Given that this secret society is okay i can provide a better solution. 
> 
> \starttext
> 
> \startmapping[rot13]
>   \definecasemaps  65 to  77 lc +13 uc +13
>   \definecasemaps  78 to  90 lc -13 uc -13
>   \definecasemaps  97 to 109 lc +13 uc +13
>   \definecasemaps 110 to 122 lc -13 uc -13
> \stopmapping
> 
> \def\ToRotThirteen  #1{{\enablemapping[rot13]\lowercase{#1}}}
> \def\FromRotThirteen#1{{\enablemapping[rot13]\uppercase{#1}}}
> 
> Ecco una prova di alfabeto carbonaro.
> 
> \ToRotThirteen{Ecco una prova di alfabeto carbonaro.}
> 
> \FromRotThirteen{\ToRotThirteen{Ecco una prova di alfabeto carbonaro.}}
> 

I hate you :-) Why must things always be this simple? I lose all the pleasure
of trying to program it in TeX ... :-)

Thank you.

Giuseppe Bilotta

Using Microsoft products is like 
having sex without condoms---but
much less pleasurable


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: ROT13 and alike
  2001-02-19 22:45   ` Giuseppe Bilotta
@ 2001-02-20 11:29     ` Hans Hagen
  0 siblings, 0 replies; 10+ messages in thread
From: Hans Hagen @ 2001-02-20 11:29 UTC (permalink / raw)
  Cc: ConTeXt

At 11:45 PM 2/19/01 +0100, Giuseppe Bilotta wrote:
>> Given that this secret society is okay i can provide a better solution. 
>> 
>> \starttext
>> 
>> \startmapping[rot13]
>>   \definecasemaps  65 to  77 lc +13 uc +13
>>   \definecasemaps  78 to  90 lc -13 uc -13
>>   \definecasemaps  97 to 109 lc +13 uc +13
>>   \definecasemaps 110 to 122 lc -13 uc -13
>> \stopmapping
>> 
>> \def\ToRotThirteen  #1{{\enablemapping[rot13]\lowercase{#1}}}
>> \def\FromRotThirteen#1{{\enablemapping[rot13]\uppercase{#1}}}
>> 
>> Ecco una prova di alfabeto carbonaro.
>> 
>> \ToRotThirteen{Ecco una prova di alfabeto carbonaro.}
>> 
>> \FromRotThirteen{\ToRotThirteen{Ecco una prova di alfabeto carbonaro.}}
>> 
>
>I hate you :-) Why must things always be this simple? I lose all the pleasure
>of trying to program it in TeX ... :-)

Well, it *is* tex, lowercase and uppercase are (funny) primitives and the
\definecasemaps only saves you keying some 100 lccodes and uccodes. BTW,
its no problem to formulate a couple of problems that would give you a
headache for years solving them in tex.  

Hans 
-------------------------------------------------------------------------
                                  Hans Hagen | PRAGMA ADE | pragma@wxs.nl
                      Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
 tel: +31 (0)38 477 53 69 | fax: +31 (0)38 477 53 74 | www.pragma-ade.com
-------------------------------------------------------------------------


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: ROT13 and alike
  2001-02-19 10:20 ` Hans Hagen
  2001-02-19 22:45   ` Giuseppe Bilotta
@ 2001-02-20 15:58   ` Giuseppe Bilotta
  2001-03-12 20:37     ` Hans Hagen
  1 sibling, 1 reply; 10+ messages in thread
From: Giuseppe Bilotta @ 2001-02-20 15:58 UTC (permalink / raw)
  Cc: ConTeXt

The scrambling for the society was the following:

\startmapping[carbon]
   \definecasemap  65  79  79  % a -> o
   \definecasemap  66  80  80  % b -> p
   \definecasemap  67  71  71  % c -> g
   \definecasemap  68  84  84  % d -> t
   \definecasemap  69  73  73  % e -> i
   \definecasemap  70  86  86  % f -> v
   \definecasemap  71  67  67  % g -> c
   \definecasemap  72  72  72  % h -> h
   \definecasemap  73  69  69  % i -> e
   \definecasemap  74  74  74  % j -> j
   \definecasemap  75  75  75  % k -> k
   \definecasemap  76  82  82  % l -> r
   \definecasemap  77  78  78  % m -> n
   \definecasemap  78  77  77  % n -> m
   \definecasemap  79  65  65  % o -> a
   \definecasemap  80  66  66  % p -> b
   \definecasemap  81  81  81  % q -> q
   \definecasemap  82  76  76  % r -> l
   \definecasemap  83  90  90  % s -> z
   \definecasemap  84  68  68  % t -> d
   \definecasemap  85  85  85  % u -> u
   \definecasemap  86  70  70  % v -> v
   \definecasemap  87  87  87  % w -> w
   \definecasemap  88  88  88  % x -> x
   \definecasemap  89  89  89  % y -> y
   \definecasemap  90  83  83  % z -> s
   \definecasemap  97 111 111  % A -> O
   \definecasemap  98 112 112  % B -> P
   \definecasemap  99 103 103  % C -> G
   \definecasemap 100 116 116  % D -> T
   \definecasemap 101 105 105  % E -> I
   \definecasemap 102 118 118  % F -> V
   \definecasemap 103  99  99  % G -> C
   \definecasemap 104 104 104  % H -> H
   \definecasemap 105 101 101  % I -> E
   \definecasemap 106 106 106  % J -> J
   \definecasemap 107 107 107  % K -> K
   \definecasemap 108 114 114  % L -> R
   \definecasemap 109 110 110  % M -> N
   \definecasemap 110 109 109  % N -> M
   \definecasemap 111  97  97  % O -> A
   \definecasemap 112  98  98  % P -> B
   \definecasemap 113 113 113  % Q -> Q
   \definecasemap 114 108 108  % R -> L
   \definecasemap 115 122 122  % S -> Z
   \definecasemap 116 100 100  % T -> D
   \definecasemap 117 117 117  % U -> U
   \definecasemap 118 102 102  % V -> V
   \definecasemap 119 119 119  % W -> W
   \definecasemap 120 120 120  % X -> X
   \definecasemap 121 121 121  % Y -> Y
   \definecasemap 122 115 115  % Z -> S
\stopmapping

\def\CRB#1{{\enablemapping[carbon]\lowercase{#1}}}

\useencoding[windows]
\starttext

\def\text{Prova. Ecco dell'altro! Accenti? Sì, grazie! O s\`\i, grazie,
o perché no? E perch\'e no?}
\text\par
\expandafter\CRB\expandafter{\text}\par

\stoptext

But accents in active chars are not dealt with, nor is \i converted to e,
nor is e converted to \i when accented. How can these details be taken
care of?

Second thing: is it possible to ensure that multiple paragraphs
are typeset scrambled? A \startCRB ... \stopCRB pair?

Finally: is it possible to implement scrambling "natively"?

\startscrambling[rot13]
 \swaps a to m  n to z
 \swaps A to M  N to Z
% also \swaps  <num> to <num>  <num> to <num>, checking for same length
\stopscrambling

\startscrambling[carbonar]
 \swap a o
 \swap b p
 ...
\stopscrambling

\usescrambling[name]

allowing \lowercase to behave the right way even when scrambling is active,
and working correctly with accents, both in active form (ì) and normal form (\'e)

Thank you for your attention,

Giuseppe Bilotta


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: ROT13 and alike
  2001-02-20 15:58   ` Giuseppe Bilotta
@ 2001-03-12 20:37     ` Hans Hagen
  2001-03-14  0:26       ` Re[2]: " Giuseppe Bilotta
  0 siblings, 1 reply; 10+ messages in thread
From: Hans Hagen @ 2001-03-12 20:37 UTC (permalink / raw)
  Cc: ConTeXt

At 04:58 PM 2/20/01 +0100, Giuseppe Bilotta wrote:
>The scrambling for the society was the following:

>But accents in active chars are not dealt with, nor is \i converted to e,
>nor is e converted to \i when accented. How can these details be taken
>care of?

this should work with the new encoding macros since there \named glyphs can
be mapped onto \NAMEDGLYPHS

>Second thing: is it possible to ensure that multiple paragraphs
>are typeset scrambled? A \startCRB ... \stopCRB pair?

\long\def\blabla#1{..#1..}

>\startscrambling[rot13]
> \swaps a to m  n to z
> \swaps A to M  N to Z
>% also \swaps  <num> to <num>  <num> to <num>, checking for same length
>\stopscrambling

too tricky probably but `a to `m may work  

Hans
-------------------------------------------------------------------------
                                  Hans Hagen | PRAGMA ADE | pragma@wxs.nl
                      Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
 tel: +31 (0)38 477 53 69 | fax: +31 (0)38 477 53 74 | www.pragma-ade.com
-------------------------------------------------------------------------


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re[2]: ROT13 and alike
  2001-03-12 20:37     ` Hans Hagen
@ 2001-03-14  0:26       ` Giuseppe Bilotta
  0 siblings, 0 replies; 10+ messages in thread
From: Giuseppe Bilotta @ 2001-03-14  0:26 UTC (permalink / raw)
  Cc: ConTeXt

>>\startscrambling[rot13]
>> \swaps a to m  n to z
>> \swaps A to M  N to Z
>>% also \swaps  <num> to <num>  <num> to <num>, checking for same length
>>\stopscrambling

HH> too tricky probably but `a to `m may work  

Nope.  The  transformation  I meant was not a->m, n->z, but "all codes
between  a  and  m included should be sequentially mapped to the codes
between  n  and z, and vice versa. The same for caps". Maybe with more
keywords, like:

\startscrambling[rot3]
  \swaps a to w with d to z
  \swaps x to z with a to c
\stopscrambling

But for simple swappings:

\startscrambling[carbo]
   \swaps a o, e i     % a <-> o, e <-> i
   \swaps b p, c g, d t, f v % etcetera
\stopscrambling


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2001-03-14  0:26 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-02-16 18:15 ROT13 and alike Giuseppe Bilotta
2001-02-17 18:30 ` Taco Hoekwater
2001-02-18 12:50   ` Giuseppe Bilotta
2001-02-19 11:19     ` Hans Hagen
2001-02-19 10:20 ` Hans Hagen
2001-02-19 22:45   ` Giuseppe Bilotta
2001-02-20 11:29     ` Hans Hagen
2001-02-20 15:58   ` Giuseppe Bilotta
2001-03-12 20:37     ` Hans Hagen
2001-03-14  0:26       ` Re[2]: " Giuseppe Bilotta

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).