EML/MD Format

KelpNet uses a modified version of Markdown for formatting comments and posts, as well as its own format. This is a guide of how to format comments.

Markdown (MD)

Markdown Result
Plain text Plain text
**Bold text** Bold text
*Italic text* Italic text
~~Strikethrough text~~ Strikethrough text
`Code` Code text
```Code block (autodetects language if possible)```
Code block (autodetects language if possible)
[Hyperlink](https://example.com) Hyperlink
# Heading 1

Heading 1

## Heading 2

Heading 2

### Heading 3

Heading 3

#### Heading 4

Heading 4

##### Heading 5
Heading 5
###### Heading 6
Heading 6

Custom KelpNet Formatting

Elaruu Markdown Language (EML) is a language that is used to create interactive interfaces within comments and posts.

With EML, you can create forms, petitions, countdowns, and code blocks.

To create a form, use the following syntax:


        @FORM
        Question?
        Option 1
        Option 2
        etc...
        @ENDFORM
        

For example:


        @FORM
        What is your favourite colour?
        Red
        Blue
        Green
        Yellow
        Other
        @ENDFORM
        

You can also adjust the parameters of the form to customise.

To specify parameters in EML, add a set of square brackets after the begining of the tag, which contain a set of key-value pairs, seperated by commas.

Forms have three different parameters:

  • Multiselect (alias: ms): Can be true or false. Specifies whether users can select multiple options or just one.
  • End time (alias: ends): Specifies when the form will stop accepting responses. This is a unix timestamp (without milliseconds).
  • Public (alias: pub): Can be true or false. Specifies whether the users' responses to polls are kept anonymous or not. (True for not anonymous).

To set a parameter, simply type it's alias within the square brackets, followed by an equals sign and the value.

For example:


        @FORM[ms=true,ends=1764460800,pub=false]
        What are your favourite colours?
        Red
        Blue
        Green
        Yellow
        Pink
        Orange
        @ENDFORM
        

This creates a form that will end on the 1st of January 2026, after which it will no longer accept responses. It also allows users to select multiple options, and keeps their responses anonymous, meaning no one can see who answered what.

Tip: Instead of specifying that a parameter is true, you can just leave it out. For example, ms=true can be replaced with just ms. This is the same for all parameters.

Tip: You can also write "infinity" instead of a timestamp, which will make the form never expire.

Note that all parameters are optional, and if you do not specify them, the default values will be used, being false for ms, infinity for ends, and true for pub.



To create a petition, use the following syntax:


        @PETITION
        Petition title
        @ENDPETITION
        

For example:


        @PETITION
        Petition for elaruu from scratch to be brought back!
        @ENDPETITION
        

By default, a petition requires 50 signatures to be accomplished. You can change this by changing the signs parameter.



To create a countdown, use the following syntax:


        @COUNTDOWN[until=unixtimestamp*]
        Countdown title
        @ENDCOUNTDOWN
        

For example:


        @COUNTDOWN[until=1764460800]
        Countdown until 2026!
        @ENDCOUNTDOWN
        

This creates a countdown that will end on the 1st of January 2026.

To specify when the countdown ends, use the until parameter. This is a unix timestamp (without milliseconds). It is required, meaning if it is not specified then the EML will render as plain text.



To create a code block, use the following syntax:


        @CODE
        code goes here
        @ENDCODE
        

For example:


        @CODE
        console.log("Hello world!");
        @ENDCODE
        

This creates a code block that will display the code inside it, however it will not be syntax highlighted unless you specify a language using the lang parameter.

To specify a language you must set the value of the lang parameter to the alias of the language you want to use, e.g. js for JavaScript, py for Python, etc.

A list of supported languages and aliases is below:

Click to expand
LanguageAliases
1C1c
ABAPabap, sap-abap
ABNFabnf
Access Logsaccesslog
Adaada
Arduinoarduino, ino
ARM assemblerarmasm, arm
AVR assembleravrasm
ActionScriptactionscript, as
AngelScriptangelscript, asc
Apacheapache, apacheconf
AppleScriptapplescript, osascript
Arcadearcade
AsciiDocasciidoc, adoc
AspectJaspectj
AutoHotkeyautohotkey
AutoItautoit
Awkawk, mawk, nawk, gawk
Basicbasic
BBCodebbcode
Blade (Laravel)blade
BNFbnf
Brainfuckbrainfuck, bf
C#csharp, cs
Cc, h
C++cpp, hpp, cc, hh, c++, h++, cxx, hxx
C/ALcal
CMakecmake, cmake.in
COBOLcobol, standard-cobol
Coqcoq
CSPcsp
CSScss
Cap'n Protocapnproto, capnp
Clojureclojure, clj
CoffeeScriptcoffeescript, coffee, cson, iced
Crmshcrmsh, crm, pcmk
Crystalcrystal, cr
cURLcurl
Dd
Dartdart
Delphidelphi, dpr, dfm, pas, pascal
Diffdiff, patch
Djangodjango, jinja
DNS Zone filedns, zone, bind
Dockerfiledockerfile, docker
DOSdos, bat, cmd
DTS (Device Tree)dts
Dustdust, dst
EBNFebnf
Elixirelixir
Elmelm
Erlangerlang, erl
Excelexcel, xls, xlsx
F#fsharp, fs, fsx, fsi, fsscript
FIXfix
Fortranfortran, f90, f95
G-Codegcode, nc
Gamsgams, gms
GAUSSgauss, gss
Gherkingherkin
Glimmer and EmberJShbs, glimmer, html.hbs, html.handlebars
GN for Ninjagn, gni
Gogo, golang
Gradlegradle
GraphQLgraphql, gql
Groovygroovy
HTML, XMLxml, html, xhtml, rss, atom, xjb, xsd, xsl, plist, svg
HTTPhttp, https
Hamlhaml
Handlebarshandlebars
Haskellhaskell, hs
Haxehaxe, hx
High-level shader languagehlsl
Hyhy, hylang
Ini, TOMLini, toml
Inform7inform7, i7
IRPF90irpf90
Iptablesiptables
JSONjson, jsonc
JSONatajsonata
Javajava, jsp
JavaScriptjavascript, js, jsx
Juliajulia, jl
Julia REPLjulia-repl
Kotlinkotlin, kt
LaTeXlatex, tex
Lessless
LDIFldif
Lisplisp
LiveCode Serverlivecodeserver
LiveScriptlivescript, ls
Lualua
Makefilemakefile, mk, mak, make
Markdownmarkdown, md, mkdown, mkd
Mathematicamathematica, mma, wl
Matlabmatlab
Maximamaxima
Maya Embedded Languagemel
Mercurymercury
MIPS Assemblermips, mipsasm
mIRC Scripting Languagemirc, mrc
Mizarmizar
Mojoliciousmojolicious
Monkeymonkey
Moonscriptmoonscript, moon
N1QLn1ql
NSISnsis
Nginxnginx, nginxconf
Nimnim, nimrod
Nixnix
Objective Cobjectivec, mm, objc, obj-c, obj-c++, objective-c++
OCamlocaml, ml
OpenSCADopenscad, scad
Oxygeneoxygene
PFpf, pf.conf
PHPphp, php-template
Plaintextplaintext, txt, text
Ponypony
PostgreSQL & PL/pgSQLpgsql, postgres, postgresql
Processingprocessing
Prologprolog
Protocol Buffersprotobuf
Pythonpython, py, gyp, ipython, python-repl
Qq
Rr
ReasonMLreasonml
RenderMan RIBrib
Roboconfroboconf
RouterOSrouteros
RenderMan RSLrsl
Rubyruby, rb, gemspec, podspec, thor, irb
Rustrust, rs
SASsas
Scalascala
Schemescheme
Scilabscilab
SCSSscss
Shell Sessionshell, sh, zsh
Smalismali
Smalltalksmalltalk
SQLsql
Stanstan
Statastata
STEP Part 21step21
Stylusstylus
SubUnitsubunit
Swiftswift
TaggerScripttaggerscript
Test Anything Protocoltap
Tcltcl
Thriftthrift
TPtp
Twigtwig
TypeScripttypescript, ts
Valavala
VB.Netvbnet
VBScriptvbscript
VBScript in HTMLvbscript-html
Verilogverilog
VHDLvhdl
Vim Scriptvim
WebAssemblywasm
Wrenwren
x86 Assemblyx86asm
XLxl
XMLxml, xhtml, rss, atom, xjb, xsd, xsl, plist, svg
YAMLyaml
Zephirzephir

Currently this is all that is supported by EML, however in future there may be more EML tags or a way to customise the style using ESS (Elaruu Style Sheets).