Time for an alternate to Markdown?

Do you think markdown is a little too limited?

Jinto Lonappan
4 min readJan 20, 2021
Image Credit: https://www.pinclipart.com/

Or you always had to double check if ** is italics or bold?

Or you miss the underline?

Or thought it would be better if we can start a list with specific number or format?

Or you had to refer to a cheatsheet to see the flavor of .md used?

And, wish if there was an auto completion for all commands so that you wont interchange () with [] when using a hyperlink?

In order for us to have a plain text based solution to better author technical and business documents, it may be time to look at an alternate solution than regular Markdown.

While there are several other alternates available (including several flavors of markdown itself), I would like to introduce HyperUp (or hup).

Philosophy

Markdown was created with readability of the plain text document in mind. However, as we almost never use the plain document in a real world setting, hup is designed with easy-to-write in mind. Readability is assumed to naturally follow with editors/ viewers.

Other major considerations are:

  • Intuitive
  • Possible auto-completion support
  • Extensible
  • Minimum characters to escape

Syntax

  • [cmdchar Indicates a keyword
  • For consistency, each keyword can also be used with an open and close — [cmd for open and ]cmd for close in a shell script like syntax.
  • Keywords uses an approach similar to tags — A single character reflects a command
  • + will be used for extending basic capability
  • [, ] and + can be escaped with \

Commands and Usage samples

Formatting

┌────────────┬─────┬─────────────────────┐
│ Type │ hup │ markdown │
├────────────┼─────┼─────────────────────┤
│ Bold │ [b │ __ or ** │
│ Italics │ [i │ _ or * │
│ Underline │ [u │ not available │
│ Color │ [c │ not available │
│ Emoji │ [j │ Specific to flavors │
└────────────┴─────┴─────────────────────┘
  • This is a [b bold ]b text
  • This is [i italics ]i
  • This is [u important, so underlined ]u
  • Everything after this [c+red will be in red ]c
  • [j+1F602 will get rendered to Face with Tears of Joy emoji
  • [j+eggplant will get rendered to eggplant emoji

Headers

┌──────────┬────────────┬──────────┐
│ Type │ hup │ markdown │
├──────────┼────────────┼──────────┤
│ Header-1 │ [h+1 │ # │
│ Header-2 │ [h+2 or [h │ ## │
│ Header-3 │ [h+3 │ ### │
│ Header-4 │ [h+4 │ #### │
│ Header-5 │ [h+5 │ ##### │
│ Header-6 │ [h+6 │ ####### │
└──────────┴────────────┴──────────┘
  • [h+1 This will be an H1 header
  • [h This is H2.
  • [h+2 This too is an H2 header

Links and Embeds

┌─────────────┬─────┬──────────┐
│ Type │ hup │ markdown │
├─────────────┼─────┼──────────┤
│ Hyperlink │ [k │ []() │
│ Embed/Image │ [e │ ![]() │
└─────────────┴─────┴──────────┘
  • [k+url Lorem ]k: This will add a hyperlink with ‘Lorem’ as the display text.
  • [k+imgurl Look at this picture! ]k will add a hyperlink to the image with a text ‘Look at this picture’
  • Whereas: [e+imgurl Look at this picture! ]e will show the picture at the url with an alternate text as ‘Look at this picture’
  • We could also embed other elements like a YouTube video with [e+yturl Watch this video ]e.

Lists

┌────────────┬─────┬───────────────┐
│ Type │ hup │ markdown │
├────────────┼─────┼───────────────┤
│ Ordered │ [1 │ 1 - │
│ Un-ordered │ [l │ * (typically) │
└────────────┴─────┴───────────────┘
  • [1 This will be item 1 in the list
    [2 This is item 2 in the list
  • [2021 This list starts from 2021
    [3000 And, ends with 3000
  • [l This list uses the default bullet
  • [l+# This one uses # as the bullet character
    [l+~ This uses ~ as the bullet character

Newline

This may be the most frustrating item that I encountered with Markdown as different flavors had its own implementations.

In hup, we are looking to have a specific command to avoid confusions.

┌──────────┬──────────────┬──────────────────────────┐
│ Type │ hup │ markdown │
├──────────┼──────────────┼──────────────────────────┤
│ New Line │ [r or Return │ double spaces, \, Return │
└──────────┴──────────────┴──────────────────────────┘
  • This is first line [r and this is second line
  • This is line 3
    And this is line 4

Syntax Highlight and Monospaced Text

┌───────────────────────┬─────┬──────────┐
│ Type │ hup │ markdown │
├───────────────────────┼─────┼──────────┤
│ Code/ Monospaced Text │ [m │ ` │
│ Syntax Highlight │ [s │ ``` │
└───────────────────────┴─────┴──────────┘
  • In the following text, [m this will be in monospaced font ]m
  • Everything between [s+py and ]s will be highlighted as Python code.

Tables

In hup, tables will use a CSV like format.

  • Each column will be separated with comma by default.
  • First line will be the header
  • Each line separated by a return or [r will be a row
┌───────┬─────┬─────────────────────────────┐
│ Type │ hup │ markdown │
├───────┼─────┼─────────────────────────────┤
│ Table │ [t │ Multiple - based on flavors │
└───────┴─────┴─────────────────────────────┘
  • Below will create a table with 3 columns and 2 rows:
    [t Head1, Head2, Head3
    Row1–1, Row1–2, Row1–3
    Row2–1, Row2–2, Row2–3 ]t
  • Below table uses ^ as delimiter
    [t+^ Head1^ Head2^ Head3
    Row1,1^ Row1,2^ Row1,3
    Row2,1^ Row2,2^ Row2,3 ]t

Other

┌─────────────────┬─────┬──────────┐
│ Type │ hup │ markdown │
├─────────────────┼─────┼──────────┤
│ Horizontal Line │ [n │ --- │
└─────────────────┴─────┴──────────┘
  • [n will add one horizontal rule
  • [n+2 will add two lines

Thanks for reading.

Please comment below with your comments and suggestions..

credit: All the tables were generated using https://ozh.github.io/ascii-tables/

--

--

Jinto Lonappan

Engineer. Healthcare/ Machine Learning/ Robotics. Amazed by all the things that fly!