Welcome to Epo, a human-friendly markup language designed specifically for making and solving cryptography puzzles and ARGs! Supported only within Atom Text Editor (at the moment). Please download at the package's page to use within Atom.
Below is an explanation of each element and how they work.
These can be used anywhere in the document, no holds barred.
Two forward slashes with an optional space, and then either content, or one of the keywords below.
Line comments help you keep track of what has and hasn't completed. Think of them as notes to self, or todo lists. When compiled, line comments will not show up at all. When making puzzles, you can use them to remind you of where you have bugs or hacks that need fixed.
// regular text like this
//TODO
//HACK
//BUG
//DONE
//NOPE
Exclamation mark followed by a space, and then content.
An idea is designed to help you quickly jot down thoughts you may want to flesh out or work on later.
! idea!
At least three dashes, or three equal signs.
For a named divider, drop your name between two lines of dividers.
Dividers are used to separate content visually. Maybe your puzzle came in two parts, and you need to remember which part goes to which section.
They will only work if the first line has no spaces before it. The first character in the middle line can be anything.
---
or
===
====
= this is a named divider
====
A @ followed by the reference anchor name. Spaces in the name do not break it. Wrap it all with parentheses.
You can reference specific anchor tags that exist throughout the document. These references will create a clickable link that will scroll the user to the proper anchor in the compiled document.
(@anchor 3)
Left-pointing caret, followed by a space, and then content.
Notes exist to be left through the document, sort of like helper sticky notes.
> this is a note
right-pointing caret, followed by content and any amount of newlines, closed by a left-pointing caret.
A multi-line note is similar to the regular note, except it can be multiline.
<
this note is multiline.
it will add wordbreak where you add them.
>
Thought wrappers are useful to keep information together in one spot.
Name of snippet, followed by an open parentheses, with an optional number or key for deciphering the clue and comma. Content is placed after that. A closing parentheses, followed by a set of curly brackets with the solved content immediately afer.
Snippets are used for keeping track of what was decoded, how it was decoded, and what the original text was. Name it whatever the main idea was for decoding it (caesar, vigenere, spectrogram), and then drop the original clue in the first section. The second section is for the solved section.
caesar( 3,
SODBHU
){
player
}
Open square bracket, optional space, name or number, space, and then a pipe ( | ). This optional will become an anchor automatically if it exists. Puzzle content follows after that, closed by a square bracket. Open parentheses immediately afterwards start the solution. Solution content goes within, followed by a matching closing parentheses.
Puzzles keep track of all your clues in one spot. You will be using a lot of these. They have an optional name that becomes an anchor tag automatically if present, and a solution that follows.
[ 1 |
this is a puzzle
](
this is a solution
)
content wrapped by three backticks.
Within a puzzle or a solution, you can have text that stands out. This will help you keep track of what was the original clue, and what the entire solution is.
Star followed by a space, followed by content, or a number followed by a period and a space, and then content.
Steps help you keep track of what you have tried. They can be numbered or otherwise, and they can be indented within each other, however when parsed, they will not be indented (for now).
* this is a regular step
1. steps can also use . - * in front of digits to
2- create numbered steps. they do not have to be
3* in any sort of order, and will be placed how they are written.
Caret followed by a space and then content.
When denoting individual sections, you can use a title to visually tell them apart.
^ This is my title
Double carets followed by a space and then content.
Subtitles usually follow titles, as extra information.
^^ Subtitles usually follow titles
order:
period followed by the class, immediately after the element's tag.
You can add one CSS class to a handful of elements. Just add a .classname
after the element tag.
!.danger foo
>.helpful bar
<.blue-3
baz
>
header text wrapped by parentheses, immediately after an element's tag.
Notes and ideas can have headers as well. They are darker, bigger text, smaller than a title, that sit inside the parent element.
>(this is a header) notes can have short header.
!(hey listen:) ideas can have headers too!
Add an asterisk after an element's tag.
Anchors will drop an anchor tag in that specific element, for quickly navigating to it. They can be added to titles notes and ideas.
>#(anchors) notes can be anchor links as well.
<#(anchors 2) and here is the \n multiline version of it >
!#(anchors here) ideas as an anchor tag too
^# Titles can be anchors too, but the title is the main content.
^^ subtitles cannot be anchor tags but they can hold (@anchor) tags
refactor element descriptions with:
Add "failed" and "success" modifiers to steps and numbered steps, to keep track of what worked and what didn't.
Create parser to convert epo files into clean html documents.
Good catch. Let us know what about this package looks wrong to you, and we'll investigate right away.