The convert menu may be confusing and dangerous without first becoming familiar with its purposes, and how each item works. Therefore, I’m writing up this help file to help you understand, but if you can read Python, I strongly recommend just looking at what the source code does, for the present. If you don’t know Python, or if you don’t want to interpret the source code, contact the developer for an explanation of the functionality. The item that begs explanation most is probably ‘Numbers to password text’. This allows you to select numbers written out in your text editor and enter a password. The password text is used to create a new counting system, and the numbers are converted to this new system.

The first set of menu items pertains to counting systems, such as Roman numerals, and the system used to count columns in most spreadsheet software. Some of these items also pertain to creating your own counting systems and to using custom counting systems to encode or decode text.

Although you may have other purposes for some of them, the second and third sets of menu items are used for formatting plaintext e-books (such as the .txt files you might find at Project Gutenberg) in certain ways, including as HTML.

^
Convert to/from column letters:

This treats ASCII alphabet letters (in a case-insensitive fashion) as if they are numbers in a special counting system, and it converts them into decimal. Furthermore, it will treat numbers as decimal numbers to be converted into this counting system. There is no zero in this system. A is 1, B is 2, C is 3, and so on to Z being 26. However, because there is no zero, it wraps around to A instead of 0. So, after Z (26), we get AA (27).

This system is nice because it can turn basically any English word into a unique number. The system may have originated with the concept of spreadsheets.
$

^
Convert to/from Roman numberals:

This converts decimal numbers and Roman numerals to and from each other. Be warned that Roman numerals do have some limitations that decimal lacks.
$

^
Set counting system:

This allows you to determine how your custom counting system is represented. The first character entered corresponds with 0 (or 1 as with the column letters, if you want that). The second character is the next number, and so on until the last. Do not enter the same character multiple times.
$

^
To decimal from counting system:

This takes the custom counting sytem you created (or the default, if you didn't create one), and converts it to decimal.
$

^
To counting system from decimal:

This takes something in decimal and converts it to the custom counting system you created (or the default, if you didn't create one).
$

^
Counting system encrypt:

This is encrypts a document with an encryption algorithm that I invented (without trying to emulate, or even know much about, any existing encryption methods).

You should use at least two iterations.

The way it works is it does this:
• Gets a set of all the unique characters used in the document, and randomizes their order (this randomization matters). This is used as the decryption key (how it is used is explained later).
• It divides your text into chunks of a random size.
• It uses the decryption key as a counting system to convert each chunk of text into a decimal number.
• It puts each number on its own line.
• It includes the hash of the encrypted content and the key after all the numbers.
• The next iteration does use the hash characters as part of the next key (which is why it's important to do at least two iterations).

If you do very many iterations, the result will be huge, just so you're warned. A few iterations should be plenty. After you've encrypted it, remove the key and probably the hash, and save them where you want, and then use the numbers as the encrypted text. The document has to exactly as generated to convert back within Shule, though. So you if you add an extra line or space, it won't work. Keys normally do have spaces in them (so if there is a space at the beginning or ending of a key, it actually matters).

Here's an example, with one iteration to demonstrate:

The original document just says:
this is a test

The encrypted document says this (for me):

469551516074
**Key**
 esthia
**Hash**
a68bf14c14f2f81a3ed31a849cc104555834af7dd7cc586829debd330641d9f799d5f261201a54802157f40aa3435b495f2f060831c28edd79cf0bf43938a3ac

So, ' esthia' is a base seven counting system. Spaces represent 1 (not 0; we're using the column letters style here), e represents 2, s represents 3, t represents 4, h represents 5, i represents 6 and a represents 7. Two spaces in a row represents eight. A space followed by e represents nine. And so on and so forth.

The document was pretty short, so it looks like we randomly only got one chunk (469551516074). So, `469551516074` is decimal for `this is a test` (and `this is a test` is a single number in a base seven counting system represented by the digits ` esthia` (nevermind that `this is a test` looks like words and spaces; it is actually comprised of digits belonging to a single number); we could have used 1234567 instead (with 11 being 8, 12 being 9, and so on), but then it wouldn't be encryption).

Anyway, I'd love to hear about it if you think you have an algorithm to crack this without knowing the key beforehand, without a brute force algorithm. :) Of course, it's a lot more complex with more iterations, thanks to the hash (or you could just armor the text before encryption and do one iteration), but I'd love to know if you could even do it with one iteration. Keep in mind, all you have is the number. You don't know the base for the counting system. You don't know what characters (and what order of them) are used in the counting system.

The hash is used to verify that decryption of each iteration was successful, and to make the key more complex.

Anyway, I just thought I'd share this with the world. It could stand to be spruced up and modified to be more serious, though.
$

^
Counting system decrypt:

This is used to decrypt what `Counting system encrypt` produces (exactly as it produced it).
$

^
Convert all, HTML:

This converts a plaintext book or some such into HTML with formatted characters and stuff.

None that if the document contains some ambiguous hyphens, apostrophes, single quote characters, this will ask you about their context (like if it belongs to a zipcode or a telephone number, or not, so it can know whether to use a figure dash, an en dash, or whatever).
$

^
Convert all, TXT:

This removes hard returns and replaces ASCII text with formatted non-ASCII text.

None that if the document contains some ambiguous hyphens, apostrophes, single quote characters, this will ask you about their context (like if it belongs to a zipcode or a telephone number, or not, so it can know whether to use a figure dash, an en dash, or whatever).
$

^
Format special:

This formats dashes, ellipses, and section markers and removes repeated punctuation that isn't proper English!!! It also remove unnecessary punctuation before em dashes and spaced en dashes. (Keeping question marks and exclamation marks.)
$

