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

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