ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: "Giuseppe Bilotta" <oblomov@freemail.it>
Subject: ROT13 and alike
Date: Fri, 16 Feb 2001 19:15:44 +0100	[thread overview]
Message-ID: <001101c09844$ebd9ee20$a3ccfea9@nuovo> (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

             reply	other threads:[~2001-02-16 18:15 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-02-16 18:15 Giuseppe Bilotta [this message]
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

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='001101c09844$ebd9ee20$a3ccfea9@nuovo' \
    --to=oblomov@freemail.it \
    /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.
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).