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~~ |
|
`Code` |
Code text |
```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
| Language | Aliases |
|---|---|
| 1C | 1c |
| ABAP | abap, sap-abap |
| ABNF | abnf |
| Access Logs | accesslog |
| Ada | ada |
| Arduino | arduino, ino |
| ARM assembler | armasm, arm |
| AVR assembler | avrasm |
| ActionScript | actionscript, as |
| AngelScript | angelscript, asc |
| Apache | apache, apacheconf |
| AppleScript | applescript, osascript |
| Arcade | arcade |
| AsciiDoc | asciidoc, adoc |
| AspectJ | aspectj |
| AutoHotkey | autohotkey |
| AutoIt | autoit |
| Awk | awk, mawk, nawk, gawk |
| Basic | basic |
| BBCode | bbcode |
| Blade (Laravel) | blade |
| BNF | bnf |
| Brainfuck | brainfuck, bf |
| C# | csharp, cs |
| C | c, h |
| C++ | cpp, hpp, cc, hh, c++, h++, cxx, hxx |
| C/AL | cal |
| CMake | cmake, cmake.in |
| COBOL | cobol, standard-cobol |
| Coq | coq |
| CSP | csp |
| CSS | css |
| Cap'n Proto | capnproto, capnp |
| Clojure | clojure, clj |
| CoffeeScript | coffeescript, coffee, cson, iced |
| Crmsh | crmsh, crm, pcmk |
| Crystal | crystal, cr |
| cURL | curl |
| D | d |
| Dart | dart |
| Delphi | delphi, dpr, dfm, pas, pascal |
| Diff | diff, patch |
| Django | django, jinja |
| DNS Zone file | dns, zone, bind |
| Dockerfile | dockerfile, docker |
| DOS | dos, bat, cmd |
| DTS (Device Tree) | dts |
| Dust | dust, dst |
| EBNF | ebnf |
| Elixir | elixir |
| Elm | elm |
| Erlang | erlang, erl |
| Excel | excel, xls, xlsx |
| F# | fsharp, fs, fsx, fsi, fsscript |
| FIX | fix |
| Fortran | fortran, f90, f95 |
| G-Code | gcode, nc |
| Gams | gams, gms |
| GAUSS | gauss, gss |
| Gherkin | gherkin |
| Glimmer and EmberJS | hbs, glimmer, html.hbs, html.handlebars |
| GN for Ninja | gn, gni |
| Go | go, golang |
| Gradle | gradle |
| GraphQL | graphql, gql |
| Groovy | groovy |
| HTML, XML | xml, html, xhtml, rss, atom, xjb, xsd, xsl, plist, svg |
| HTTP | http, https |
| Haml | haml |
| Handlebars | handlebars |
| Haskell | haskell, hs |
| Haxe | haxe, hx |
| High-level shader language | hlsl |
| Hy | hy, hylang |
| Ini, TOML | ini, toml |
| Inform7 | inform7, i7 |
| IRPF90 | irpf90 |
| Iptables | iptables |
| JSON | json, jsonc |
| JSONata | jsonata |
| Java | java, jsp |
| JavaScript | javascript, js, jsx |
| Julia | julia, jl |
| Julia REPL | julia-repl |
| Kotlin | kotlin, kt |
| LaTeX | latex, tex |
| Less | less |
| LDIF | ldif |
| Lisp | lisp |
| LiveCode Server | livecodeserver |
| LiveScript | livescript, ls |
| Lua | lua |
| Makefile | makefile, mk, mak, make |
| Markdown | markdown, md, mkdown, mkd |
| Mathematica | mathematica, mma, wl |
| Matlab | matlab |
| Maxima | maxima |
| Maya Embedded Language | mel |
| Mercury | mercury |
| MIPS Assembler | mips, mipsasm |
| mIRC Scripting Language | mirc, mrc |
| Mizar | mizar |
| Mojolicious | mojolicious |
| Monkey | monkey |
| Moonscript | moonscript, moon |
| N1QL | n1ql |
| NSIS | nsis |
| Nginx | nginx, nginxconf |
| Nim | nim, nimrod |
| Nix | nix |
| Objective C | objectivec, mm, objc, obj-c, obj-c++, objective-c++ |
| OCaml | ocaml, ml |
| OpenSCAD | openscad, scad |
| Oxygene | oxygene |
| PF | pf, pf.conf |
| PHP | php, php-template |
| Plaintext | plaintext, txt, text |
| Pony | pony |
| PostgreSQL & PL/pgSQL | pgsql, postgres, postgresql |
| Processing | processing |
| Prolog | prolog |
| Protocol Buffers | protobuf |
| Python | python, py, gyp, ipython, python-repl |
| Q | q |
| R | r |
| ReasonML | reasonml |
| RenderMan RIB | rib |
| Roboconf | roboconf |
| RouterOS | routeros |
| RenderMan RSL | rsl |
| Ruby | ruby, rb, gemspec, podspec, thor, irb |
| Rust | rust, rs |
| SAS | sas |
| Scala | scala |
| Scheme | scheme |
| Scilab | scilab |
| SCSS | scss |
| Shell Session | shell, sh, zsh |
| Smali | smali |
| Smalltalk | smalltalk |
| SQL | sql |
| Stan | stan |
| Stata | stata |
| STEP Part 21 | step21 |
| Stylus | stylus |
| SubUnit | subunit |
| Swift | swift |
| TaggerScript | taggerscript |
| Test Anything Protocol | tap |
| Tcl | tcl |
| Thrift | thrift |
| TP | tp |
| Twig | twig |
| TypeScript | typescript, ts |
| Vala | vala |
| VB.Net | vbnet |
| VBScript | vbscript |
| VBScript in HTML | vbscript-html |
| Verilog | verilog |
| VHDL | vhdl |
| Vim Script | vim |
| WebAssembly | wasm |
| Wren | wren |
| x86 Assembly | x86asm |
| XL | xl |
| XML | xml, xhtml, rss, atom, xjb, xsd, xsl, plist, svg |
| YAML | yaml |
| Zephir | zephir |
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).